You are viewing an archived release — RealVuln v3.0.0. View the latest benchmark →
realvuln v3.0
Dashboard Methodology Dataset Findings Roadmap Journal Paper GitHub ↗
Paper · arXiv:2604.13764

An open benchmark for evaluating security scanners on real-world code

Do LLM-based scanners actually find more real vulnerabilities than traditional SAST tools? We built the benchmark to answer it, and the answer is yes — by roughly 3× on recall-weighted F2. Every label, scanner output and scoring script is public so the result can be checked rather than taken on trust.

§

What the benchmark measures today

The paper describes v1.0 (26 repositories, 796 findings). The benchmark has since grown; the figures below are the current release and are generated from the same ground truth the scoring uses.

140
Repositories, pinned by SHA
4,138
Hand-labeled vulnerabilities
280
False-positive traps
32
Scanners compared
§

Abstract

Static application security testing (SAST) tools remain essential for detecting vulnerabilities early in the development lifecycle, yet traditional analyzers suffer from high false-positive rates and shallow semantic understanding. A new wave of LLM-based security scanners promises deeper reasoning, but no open, reproducible benchmark exists to measure their real-world effectiveness.

We introduce RealVuln, the first fully open-source vulnerability-detection benchmark built from 26 real-world Python repositories containing 796 hand-labeled findings and 120 false-positive traps. We evaluate 15 scanners — 3 traditional SAST tools, 11 LLM-based scanners, and 1 hybrid — using the recall-weighted F2 score as the primary metric.

Our results show that the best LLM scanner (Claude Sonnet 4.6, F2 = 53.8) outperforms the best traditional SAST tool (Snyk, F2 = 18.2) by nearly 3×, with LLM-based tools achieving 2–4× higher F2 overall. Agentic multi-turn scanning adds approximately 46% F2 over single-turn inference for only ~6% additional cost.

All code, ground-truth data, scanner outputs, and scoring scripts are released under an open-source license. RealVuln is designed as a living benchmark — versioned, community-driven, and with a roadmap toward multi-language coverage.

§

Common questions

Are LLM scanners better than traditional SAST at finding vulnerabilities?

On this benchmark, substantially — the best general-purpose LLM scanner scored roughly 3× the best rule-based tool on recall-weighted F2. The gap is largest on weaknesses that require following data flow, such as insecure deserialization and code injection, and narrowest on syntactic patterns. Current per-class figures are on the findings page.

Why F2 and F3 rather than F1?

A missed vulnerability is more costly than a false positive a reviewer discards, so the metric weights recall above precision. F2 weights recall four times precision; F3 nine times. Both are reported, alongside precision and raw counts. The definitions are on the methodology page.

How is a scanner finding matched to ground truth?

On three fields: file path, CWE (matched against a list of acceptable CWEs, not just one), and line number within a ±10-line tolerance. Entries marked is_vulnerable: false are false-positive traps — flagging one is penalised, not rewarded.

Can the results be reproduced independently?

That is the point of the design. Every repository is pinned by commit SHA, every scanner's raw output is committed, and the scoring scripts are public. Frozen snapshots of each release stay online, so a figure cited from an earlier version keeps resolving to the numbers that produced it.

§

How to cite

The paper describes v1.0. Cite the frozen dataset revision alongside it so the corpus is unambiguous.

@misc{realvuln2026,
  title        = {RealVuln: An Open Benchmark for Evaluating Security
                  Scanners on Real-World Code},
  author       = {Raza, Faizan and Pellew, John},
  year         = {2026},
  eprint       = {2604.13764},
  archivePrefix= {arXiv},
  url          = {https://realvuln.com/v/1.0.0/}
}

Dataset: load_dataset("Kolega-Dev/RealVuln", revision="v1.0.0") for the corpus in the paper, or Kolega-Dev/RealVuln-v2 for the current one. Source and ground truth: github.com/kolega-ai/Real-Vuln-Benchmark.