fold/bench/literature_baselines.json
2026-07-27 23:18:03 -04:00

477 lines
21 KiB
JSON

{
"schema_version": 1,
"source_note": "Paperbridge- and primary-source-grounded references for interpreting Fold benchmark results. Numeric entries are only included when they were available from abstracts or report metadata; exact per-tool Juliet tables should be transcribed separately before making direct head-to-head claims.",
"references": [
{
"id": "wagner-2014-juliet-scanners",
"title": "Using the Juliet Test Suite to Compare Static Security Scanners",
"authors": ["Andreas Wagner", "Johannes Sametinger"],
"year": 2014,
"doi": "10.5220/0005032902440252",
"venue": "Proceedings of the 11th International Conference on Security and Cryptography",
"url": "https://doi.org/10.5220/0005032902440252"
},
{
"id": "nist-sate-v-2018",
"title": "SATE V report: ten years of static analysis tool expositions",
"authors": ["Aurelien Delaitre", "Bertrand Stivalet", "Paul E. Black", "Vadim Okun", "Athos Ribeiro", "Terry S. Cohen"],
"year": 2018,
"doi": "10.6028/nist.sp.500-326",
"venue": "NIST Special Publication 500-326",
"url": "https://doi.org/10.6028/nist.sp.500-326"
},
{
"id": "lipp-2022-realworld-c",
"title": "An empirical study on the effectiveness of static C code analyzers for vulnerability detection",
"authors": ["Stephan Lipp", "Sebastian Banescu", "Alexander Pretschner"],
"year": 2022,
"doi": "10.1145/3533767.3534380",
"venue": "ISSTA 2022",
"url": "https://doi.org/10.1145/3533767.3534380"
},
{
"id": "bennett-2024-semgrep-star",
"title": "Semgrep*: Improving the Limited Performance of Static Application Security Testing (SAST) Tools",
"authors": ["Gareth Bennett", "Tracy Hall", "Emily Winter", "Steve Counsell"],
"year": 2024,
"doi": "10.1145/3661167.3661262",
"venue": "EASE 2024",
"url": "https://doi.org/10.1145/3661167.3661262"
},
{
"id": "beyer-2023-svcomp",
"title": "Competition on Software Verification and Witness Validation: SV-COMP 2023",
"authors": ["Dirk Beyer"],
"year": 2023,
"doi": "10.1007/978-3-031-30820-8_29",
"venue": "Lecture Notes in Computer Science",
"url": "https://doi.org/10.1007/978-3-031-30820-8_29"
},
{
"id": "beyer-2022-svcomp",
"title": "Progress on Software Verification: SV-COMP 2022",
"authors": ["Dirk Beyer"],
"year": 2022,
"doi": "10.1007/978-3-030-99527-0_20",
"venue": "Lecture Notes in Computer Science",
"url": "https://doi.org/10.1007/978-3-030-99527-0_20"
},
{
"id": "bhandari-2021-cvefixes",
"title": "CVEfixes: automated collection of vulnerabilities and their fixes from open-source software",
"authors": ["Guru Bhandari", "Amara Naseer", "Leon Moonen"],
"year": 2021,
"doi": "10.1145/3475960.3475985",
"venue": "PROMISE 2021",
"url": "https://doi.org/10.1145/3475960.3475985"
},
{
"id": "chen-2023-diversevul",
"title": "DiverseVul: A New Vulnerable Source Code Dataset for Deep Learning Based Vulnerability Detection",
"authors": ["Yizheng Chen", "Zhoujie Ding", "Lamya Alowain", "Xinyun Chen", "David Wagner"],
"year": 2023,
"doi": "10.1145/3607199.3607242",
"venue": "RAID 2023",
"url": "https://doi.org/10.1145/3607199.3607242"
},
{
"id": "black-2025-sard",
"title": "The Software Assurance Reference Dataset (SARD)",
"authors": ["Paul E. Black"],
"year": 2025,
"doi": "10.6028/nist.ir.8561",
"venue": "NIST IR 8561",
"url": "https://doi.org/10.6028/nist.ir.8561"
},
{
"id": "godefroid-2005-dart",
"title": "DART: Directed Automated Random Testing",
"authors": ["Patrice Godefroid", "Nils Klarlund", "Koushik Sen"],
"year": 2005,
"doi": "10.1145/1065010.1065036",
"venue": "PLDI 2005",
"url": "https://doi.org/10.1145/1065010.1065036"
},
{
"id": "klinger-2019-differential-analyzers",
"title": "Differential Testing of Soundness and Precision of Static Analyzers",
"authors": ["Christian Klinger", "Maria Christakis", "Valentin Wüstholz"],
"year": 2019,
"doi": "10.1145/3293882.3330553",
"venue": "ISSTA 2019",
"url": "https://doi.org/10.1145/3293882.3330553"
},
{
"id": "ferreiro-2025-checkification",
"title": "Checkification: A Practical Approach for Testing Static Analysis Truths",
"authors": ["Daniela Ferreiro", "Ignacio Casso", "Jose F. Morales", "Pedro López-García", "Manuel V. Hermenegildo"],
"year": 2025,
"doi": "10.1017/S1471068425100069",
"venue": "Theory and Practice of Logic Programming",
"url": "https://doi.org/10.1017/S1471068425100069"
},
{
"id": "mansur-2021-metamorphic-datalog",
"title": "Metamorphic Testing of Datalog Engines",
"authors": ["Numair Mansur", "Maria Christakis", "Valentin Wüstholz"],
"year": 2021,
"doi": "10.1145/3468264.3468573",
"venue": "ESEC/FSE 2021",
"url": "https://doi.org/10.1145/3468264.3468573"
},
{
"id": "klees-2018-evaluating-fuzzing",
"title": "Evaluating Fuzz Testing",
"authors": ["George Klees", "Andrew Ruef", "Benji Cooper", "Shiyi Wei", "Michael Hicks"],
"year": 2018,
"doi": "10.1145/3243734.3243804",
"venue": "CCS 2018",
"url": "https://doi.org/10.1145/3243734.3243804"
},
{
"id": "sok-2024-prudent-fuzzing-evaluation",
"title": "SoK: Prudent Evaluation Practices for Fuzzing",
"authors": ["Moritz Schloegel", "Nils Bars", "Nico Schiller", "Lukas Bernhard", "Tobias Scharnowski", "Addison Crump", "Arash Ale Ebrahim", "Nicolai Bissantz", "Marius Muench", "Thorsten Holz"],
"year": 2024,
"doi": "10.1109/SP54263.2024.00137",
"venue": "IEEE Symposium on Security and Privacy 2024",
"url": "https://doi.org/10.1109/SP54263.2024.00137"
},
{
"id": "metzman-2021-fuzzbench",
"title": "FuzzBench: An Open Fuzzer Benchmarking Platform and Service",
"authors": ["Jonathan Metzman", "László Szekeres", "Laurent Simon", "Read Sprabery", "Abhishek Arya"],
"year": 2021,
"doi": "10.1145/3468264.3473932",
"venue": "ESEC/FSE 2021",
"url": "https://doi.org/10.1145/3468264.3473932"
},
{
"id": "hazimeh-2020-magma",
"title": "Magma: A Ground-Truth Fuzzing Benchmark",
"authors": ["Ahmad Hazimeh", "Adrian Herrera", "Mathias Payer"],
"year": 2020,
"doi": "10.1145/3428334",
"venue": "Proceedings of the ACM on Measurement and Analysis of Computing Systems",
"url": "https://doi.org/10.1145/3428334"
},
{
"id": "bundt-2022-synthetic-bugs",
"title": "Evaluating Synthetic Bugs",
"authors": ["Joshua Bundt", "Andrew Fasano", "Brendan Dolan-Gavitt", "William Robertson", "Tim Leek"],
"year": 2021,
"doi": "10.1145/3433210.3453096",
"venue": "ESEC/FSE 2021",
"url": "https://doi.org/10.1145/3433210.3453096"
},
{
"id": "sadowski-2015-tricorder",
"title": "Tricorder: Building a Program Analysis Ecosystem",
"authors": ["Caitlin Sadowski", "Jeffrey van Gogh", "Ciera Jaspan", "Emma Söderberg", "Collin Winter"],
"year": 2015,
"doi": "10.1109/ICSE.2015.76",
"venue": "ICSE 2015",
"url": "https://doi.org/10.1109/ICSE.2015.76"
},
{
"id": "distefano-2019-scaling-static-analysis",
"title": "Scaling Static Analyses at Facebook",
"authors": ["Dino Distefano", "Manuel Fähndrich", "Francesco Logozzo", "Peter W. O'Hearn"],
"year": 2019,
"doi": "10.1145/3338112",
"venue": "Communications of the ACM",
"url": "https://doi.org/10.1145/3338112"
},
{
"id": "ernst-2015-soundiness",
"title": "In Defense of Soundiness: A Manifesto",
"authors": ["Michael D. Ernst", "Anders Møller"],
"year": 2015,
"doi": "10.1145/2644805",
"venue": "Communications of the ACM",
"url": "https://doi.org/10.1145/2644805"
},
{
"id": "li-2024-primevul",
"title": "Vulnerability Detection with Code Language Models: How Far Are We?",
"authors": ["Yangruibo Ding", "Yanjun Fu", "Omniyyah Ibrahim", "Chawin Sitawarin", "Xinyun Chen", "Basel Alomair", "David Wagner", "Baishakhi Ray", "Yizheng Chen"],
"year": 2024,
"venue": "arXiv",
"url": "https://arxiv.org/abs/2403.18624"
},
{
"id": "bae-2021-rudra",
"title": "Rudra: Finding Memory Safety Bugs in Rust at the Ecosystem Scale",
"authors": ["Yechan Bae", "Youngsuk Kim", "Ammar Askar", "Jungwon Lim", "Taesoo Kim"],
"year": 2021,
"doi": "10.1145/3477132.3483570",
"venue": "SOSP 2021",
"url": "https://doi.org/10.1145/3477132.3483570"
},
{
"id": "li-2021-mirchecker",
"title": "MirChecker: Detecting Bugs in Rust Programs via Static Analysis",
"authors": ["Zhuohua Li", "Jincheng Wang", "Mingshen Sun", "John C. S. Lui"],
"year": 2021,
"doi": "10.1145/3460120.3484541",
"venue": "CCS 2021",
"url": "https://doi.org/10.1145/3460120.3484541"
},
{
"id": "cui-2023-safedrop",
"title": "SafeDrop: Detecting Memory Deallocation Bugs of Rust Programs via Static Data-flow Analysis",
"authors": ["Mohan Cui", "Chengjun Chen", "Hui Xu", "Yangfan Zhou"],
"year": 2023,
"doi": "10.1145/3542948",
"venue": "ACM Transactions on Software Engineering and Methodology",
"url": "https://doi.org/10.1145/3542948"
},
{
"id": "zhuang-2025-dont-panic",
"title": "Don't Panic! Finding Bugs Hidden Behind Rust Runtime Safety Checks",
"authors": ["Zeyang Zhuang", "Zilun Wang", "Wei Meng"],
"year": 2025,
"doi": "10.1145/3719027.3765142",
"venue": "Proceedings of the ACM on Software Engineering",
"url": "https://doi.org/10.1145/3719027.3765142"
},
{
"id": "johns-2011-scanstud",
"title": "Scanstud: A Methodology for Systematic, Fine-Grained Evaluation of Static Analysis Tools",
"authors": ["Martin Johns", "Moritz Jodeit"],
"year": 2011,
"doi": "10.1109/icstw.2011.32",
"venue": "IEEE ICST Workshops 2011",
"url": "https://doi.org/10.1109/icstw.2011.32"
},
{
"id": "braga-2017-crypto-sast-benchmark",
"title": "Practical Evaluation of Static Analysis Tools for Cryptography: Benchmarking Method and Case Study",
"authors": ["Alexandre Braga", "Ricardo Dahab", "Nuno Antunes"],
"year": 2017,
"doi": "10.1109/issre.2017.27",
"venue": "IEEE ISSRE 2017",
"url": "https://doi.org/10.1109/issre.2017.27"
},
{
"id": "lenarduzzi-2021-six-sast",
"title": "A Critical Comparison on Six Static Analysis Tools: Detection, Agreement, and Precision",
"authors": ["Valentina Lenarduzzi", "Savanna Lujan", "Nyyti Saarimäki", "Fabio Palomba"],
"year": 2021,
"venue": "arXiv",
"url": "https://arxiv.org/abs/2101.08832"
},
{
"id": "hewson-2015-perf-regression-oracles",
"title": "Performance Regression Testing on the Java Virtual Machine Using Statistical Test Oracles",
"authors": ["Fergus Hewson", "Jens Dietrich", "Stephen Marsland"],
"year": 2015,
"doi": "10.1109/aswec.2015.14",
"venue": "ASWEC 2015",
"url": "https://doi.org/10.1109/aswec.2015.14"
},
{
"id": "mordahl-2023-configurable-sast-benchmarking",
"title": "Automatic Testing and Benchmarking for Configurable Static Analysis Tools",
"authors": ["Austin Mordahl", "Dakota Soles", "Miao Liu", "Zenong Zhang", "Shiyi Wei"],
"year": 2023,
"doi": "10.1145/3597926.3605232",
"venue": "ISSTA 2023",
"url": "https://doi.org/10.1145/3597926.3605232"
}
],
"baselines": [
{
"id": "juliet-scanner-comparison",
"reference_id": "wagner-2014-juliet-scanners",
"benchmark": "Juliet Test Suite",
"tool_scope": "static security scanners",
"comparability": "same synthetic benchmark family as Fold's Juliet slices; exact per-tool result tables still need manual transcription",
"metrics": []
},
{
"id": "sate-v-methodology",
"reference_id": "nist-sate-v-2018",
"benchmark": "NIST SATE / SAMATE exposition corpus",
"tool_scope": "multi-year static analyzer exposition",
"comparability": "methodology and cautionary baseline, not a direct precision-recall target for the current Fold Juliet slices",
"metrics": []
},
{
"id": "realworld-c-static-analyzers",
"reference_id": "lipp-2022-realworld-c",
"benchmark": "27 C projects, 1.15 MLOC, 192 CVE-ground-truth vulnerabilities",
"tool_scope": "five free/open-source analyzers plus one commercial analyzer",
"comparability": "real-world CVE benchmark; use as an external recall sanity band rather than direct Juliet equivalence",
"metrics": [
{"name": "single_tool_false_negative_rate", "value_min": 0.47, "value_max": 0.80, "unit": "ratio"},
{"name": "combined_tool_false_negative_rate", "value_min": 0.30, "value_max": 0.69, "unit": "ratio"},
{"name": "projects", "value": 27, "unit": "count"},
{"name": "vulnerabilities", "value": 192, "unit": "count"},
{"name": "source_lines", "value": 1150000, "unit": "count"}
]
},
{
"id": "production-sast-detection",
"reference_id": "bennett-2024-semgrep-star",
"benchmark": "manually curated production-code vulnerabilities",
"tool_scope": "four SAST tools plus Semgrep* rule augmentation",
"comparability": "production-code detection-rate band; useful for positioning real-world expectations",
"metrics": [
{"name": "single_tool_detection_rate", "value_min": 0.112, "value_max": 0.265, "unit": "ratio"},
{"name": "four_tool_combined_detection_rate", "value": 0.388, "unit": "ratio"},
{"name": "semgrep_star_detection_rate", "value": 0.447, "unit": "ratio"},
{"name": "semgrep_star_relative_improvement", "value": 1.81, "unit": "ratio"}
]
},
{
"id": "svcomp-2023-scale",
"reference_id": "beyer-2023-svcomp",
"benchmark": "SV-COMP 2023",
"tool_scope": "automatic software verifiers",
"comparability": "task-level verification benchmark; Fold maps only selected properties today",
"metrics": [
{"name": "verification_systems", "value": 52, "unit": "count"},
{"name": "c_tasks", "value": 23805, "unit": "count"},
{"name": "java_tasks", "value": 586, "unit": "count"}
]
},
{
"id": "svcomp-2022-scale",
"reference_id": "beyer-2022-svcomp",
"benchmark": "SV-COMP 2022",
"tool_scope": "automatic software verifiers",
"comparability": "task-level verification benchmark; use for expansion after BV-width stability is fixed",
"metrics": [
{"name": "verification_systems", "value": 47, "unit": "count"},
{"name": "c_tasks", "value": 15648, "unit": "count"},
{"name": "java_tasks", "value": 586, "unit": "count"}
]
},
{
"id": "cvefixes-dataset-scale",
"reference_id": "bhandari-2021-cvefixes",
"benchmark": "CVEfixes vulnerability-fix corpus",
"tool_scope": "real-world vulnerability/fix dataset",
"comparability": "candidate real-world Fold benchmark after repository checkout and compile database synthesis",
"metrics": [
{"name": "cve_records", "value": 5365, "unit": "count"},
{"name": "projects", "value": 1754, "unit": "count"},
{"name": "fixing_commits", "value": 5495, "unit": "count"}
]
},
{
"id": "diversevul-dataset-scale",
"reference_id": "chen-2023-diversevul",
"benchmark": "DiverseVul",
"tool_scope": "C/C++ vulnerable and non-vulnerable functions",
"comparability": "candidate triage corpus for detector coverage, but function labels are weaker than path-specific SAST ground truth",
"metrics": [
{"name": "vulnerable_functions", "value": 18945, "unit": "count"},
{"name": "non_vulnerable_functions", "value": 330492, "unit": "count"},
{"name": "cwes", "value": 150, "unit": "count"},
{"name": "commits", "value": 7514, "unit": "count"}
]
},
{
"id": "sard-scale",
"reference_id": "black-2025-sard",
"benchmark": "NIST SARD",
"tool_scope": "buggy reference programs across multiple languages and weakness classes",
"comparability": "natural expansion target beyond the current Juliet filters",
"metrics": [
{"name": "buggy_programs", "value": 450000, "unit": "count", "qualifier": "over"},
{"name": "languages", "value": 5, "unit": "count"},
{"name": "weakness_classes", "value": 150, "unit": "count", "qualifier": "over"}
]
}
],
"benchmark_targets": [
{
"id": "juliet-expanded-fold",
"status": "ready",
"runner": "bench/run_summary_ab.py or bench/run_fold_on_juliet.py",
"scope": "Juliet CWEs with checked-in gold files: 121, 122, 124, 126, 127, 190, 191, 194, 195, 196, 197, 369, 476, 561",
"next_action": "Run per-CWE summary A/B with file-level scoring and compare ceiling gaps."
},
{
"id": "clang-sa-juliet",
"status": "ready-if-scan-build-installed",
"runner": "bench/run_csa_on_juliet.py",
"scope": "local Clang Static Analyzer head-to-head for null deref, divide-by-zero, integer overflow availability, and array bounds",
"next_action": "Run after confirming LLVM scan-build path."
},
{
"id": "esbmc-juliet",
"status": "blocked",
"runner": "bench/run_esbmc_on_juliet.py",
"scope": "bounded-model-checking head-to-head, currently wired for CWE-476 null dereference",
"next_action": "Install ESBMC or set ESBMC_BIN."
},
{
"id": "svcomp-fold",
"status": "blocked",
"runner": "bench/run_svcomp.py",
"scope": "SV-COMP MemSafety valid-deref, NoOverflows, and reachability proxy categories",
"next_action": "Fix Fold BV-width sort mismatches before trusting broad SV-COMP runs."
},
{
"id": "sard-samate",
"status": "candidate",
"runner": "new fetcher under bench/corpora/sard-*",
"scope": "NIST SARD/SAMATE CWE slices, starting with C dead-code and memory-safety subsets",
"next_action": "Add fetchers that preserve SARD metadata IDs as gold labels."
},
{
"id": "realworld-cve-corpus",
"status": "candidate",
"runner": "new CVEfixes or curated-CVE harness",
"scope": "repository-level C/C++ CVE fixes with generated compile databases",
"next_action": "Select a small reproducible project subset before scaling."
}
],
"scaffolding_implications": [
{
"group": "profiling-eval-2026-07",
"note": "Paperbridge pass of 2026-07-27 grounding the manifest-driven project evaluation scaffolding (scripts/benchmarks/run_project_eval.py + fold_eval.project). Implications are one-line engineering decisions, not head-to-head metrics.",
"entries": [
{
"reference_id": "bae-2021-rudra",
"implication": "Rust analyzer credibility requires ecosystem-scale corpora plus manual per-finding FP review; the Rust lane needs disposition baselines, not a single OSS smoke run."
},
{
"reference_id": "li-2021-mirchecker",
"implication": "MIR-level property detection is evaluated per bug class with crate provenance; Rust gold expectations should be keyed per detector family with crate/version pins."
},
{
"reference_id": "cui-2023-safedrop",
"implication": "Rust data-flow tools report TP/FP counts from manual inspection on real crates; our Rust manifests must support reviewed dispositions identical to the source lane."
},
{
"reference_id": "zhuang-2025-dont-panic",
"implication": "Rust bug classes differ from C++; gold expectations for Rust should use Rust-native oracles (panic/index/unwrap surfaces) rather than transplanted CWE slices."
},
{
"reference_id": "johns-2011-scanstud",
"implication": "Fine-grained methodology-first evaluation: versioned per-project manifests with per-case metadata instead of ad-hoc script flags."
},
{
"reference_id": "braga-2017-crypto-sast-benchmark",
"implication": "Repeatable benchmarking method beats tool count: manifests pin tool revision, configuration fingerprint, corpus hash, and budgets per run."
},
{
"reference_id": "lenarduzzi-2021-six-sast",
"implication": "Inter-tool agreement is low; comparator lanes stay differential evidence and never become ground truth for project evaluation."
},
{
"reference_id": "hewson-2015-perf-regression-oracles",
"implication": "Performance gates need statistical oracles over repeated samples, not single medians; project runs reuse fold_eval paired_comparison/bootstrap intervals."
},
{
"reference_id": "mordahl-2023-configurable-sast-benchmarking",
"implication": "Configuration materially changes analyzer results; every project run records the configuration fingerprint alongside findings and profile."
}
]
}
]
}