fold/bench/gold/security-bugs.json
trvon e30764fb19
bench: extend fold_eval scoring with labeled negative cases
Add negative_cases_from_universe to expand an explicit file-by-rule universe
into labeled negatives (enabling TP/FP/TN/FN, not just TP/FP), plus project-eval
harness updates in run_project_eval and the score/score_fp/quality-gate helpers.
2026-08-16 16:43:51 -06:00

29 lines
2.3 KiB
JSON

{
"name": "security-bugs",
"description": "CWE-grounded security benchmark for fold detectors. Grounded in: Das & Lal 2017 (null pointer), Patil 2025 (dead code/integrated analysis), Naug 2020 (useless code), Bailey & Nicholas 2025 (symbolic execution survey). Each bug file contains one confirmed vulnerability of the named kind. Clean files should produce zero findings.",
"negative": [
{"kind": "div-by-zero", "files": ["div_by_zero/clean_literal.cpp"], "id": "div-clean-literal"},
{"kind": "div-by-zero", "files": ["div_by_zero/clean_guarded.cpp"], "id": "div-clean-guarded"},
{"kind": "div-by-zero", "files": ["complex/clean_nested_guards.cpp"], "id": "div-clean-nested"},
{"kind": "div-by-zero", "files": ["complex/clean_ternary_div.cpp"], "id": "div-clean-ternary"},
{"kind": "int-overflow", "files": ["int_overflow/clean_unsigned.cpp"], "id": "oflow-clean-unsigned"},
{"kind": "oob-access", "files": ["oob/clean_in_bounds.cpp"], "id": "oob-clean-in-bounds"},
{"kind": "null-deref", "files": ["null_deref/clean_guarded.cpp"], "id": "null-clean-guarded"},
{"kind": "null-deref", "files": ["null_deref/clean_reassigned.cpp"], "id": "null-clean-reassigned"},
{"kind": "null-deref", "files": ["complex/clean_ternary.cpp"], "id": "null-clean-ternary"},
{"kind": "dead-branch", "files": ["clean/clean_reachable.cpp"], "id": "dead-clean-reachable"}
],
"expected": [
{"kind": "null-deref", "files": ["null_deref/bug_direct.cpp"], "id": "null-direct"},
{"kind": "null-deref", "files": ["null_deref/bug_callee.cpp"], "id": "null-callee"},
{"kind": "div-by-zero", "files": ["div_by_zero/bug_literal.cpp"], "id": "div-literal"},
{"kind": "div-by-zero", "files": ["div_by_zero/bug_variable.cpp"],"id": "div-variable"},
{"kind": "int-overflow","files": ["int_overflow/bug_add.cpp"], "id": "oflow-add"},
{"kind": "int-overflow","files": ["int_overflow/bug_mul.cpp"], "id": "oflow-mul"},
{"kind": "oob-access", "files": ["oob/bug_constant.cpp"],"id": "oob-constant"},
{"kind": "oob-access", "files": ["oob/bug_symbolic.cpp"],"id": "oob-symbolic"},
{"kind": "dead-branch", "files": ["dead/bug_if_false.cpp"],"id": "dead-if-false"},
{"kind": "int-overflow","files": ["template/bug_tpl_add.cpp"], "id": "oflow-tpl"},
{"kind": "int-overflow","files": ["loop/bug_for_overflow.cpp"],"id":"oflow-loop"}
]
}