fold/tests/benchmarks/organic/cve_pairs.json
trvon 14aedf7417
fix(detect): suppress security-detector false positives
- int-overflow: unsigned wrap is defined, not UB — split to
  fold.unsigned-wrap so signed-UB findings aren't drowned; on by
  default (--report-unsigned-wrap=false opts out)
- use-after-free: model return/throw as path-terminating so
  `delete p; return;` in an error branch can't poison the fall-through
- oob-access: real sizeof for complete structs (was 1); recognize
  std::min/clamp/modulo index bounds
- memory-leak: static-storage singletons + return-to-caller are
  caller-owned, not leaks

YAMS scan: UAF 4→0, struct-OOB ~10→0, singleton-leak ~15→0,
min/modulo-bound OOB →0. 137/137 tests pass.
2026-08-16 14:29:35 -06:00

94 lines
4.8 KiB
JSON

{
"schema_version": 1,
"case_id": "organic-cve-vulnerable-fixed-pairs",
"case_type": "vulnerable-fixed",
"origin": "organic",
"backend": "source",
"name": "organic_cve_vulnerable_fixed_pairs",
"description": "Pinned, dependency-minimized semantic slices of upstream vulnerable/fixed C and C++ security patches.",
"expect": {
"vulnerable_detected": 1,
"fixed_reported": 0
},
"lineage": {
"vulnerable_revision": "per-pair:corpus.entries",
"fixed_revision": "per-pair:corpus.entries"
},
"corpus": {
"kind": "adapted-upstream-vulnerable-fixed",
"integrity": "The local sources are compileable semantic slices, not pristine upstream files; hashes pin the exact evaluated adaptations.",
"entries": [
{
"name": "gstreamer-cve-2024-47835",
"cve": "CVE-2024-47835",
"project": "GStreamer",
"repository": "https://gitlab.freedesktop.org/gstreamer/gstreamer",
"reference": "https://gitlab.freedesktop.org/gstreamer/gstreamer/-/commit/1a5fdba14a1ccfe473bc4429f22ee5bbaee034eb",
"vulnerable_revision": "a8f8bbef99e28bbf62aeaa774814b5c3a665e9d6",
"fixed_revision": "1a5fdba14a1ccfe473bc4429f22ee5bbaee034eb",
"upstream_path": "subprojects/gst-plugins-base/gst/subparse/samiparse.c",
"license": "LGPL-2.1-or-later",
"adaptation": "Preserves strchr(line, ']') followed by use of start + 1; removes GStreamer types and allocation machinery. The fixed slice adds the upstream null guard.",
"known_gap": "Fold does not yet model a nullable return contract for strchr across this dereference.",
"expected": {
"vulnerable_detected": false,
"fixed_reported": false
},
"hazard": "null-deref",
"detector": "null-deref",
"rule_id": "fold.null-deref",
"vulnerable_source": "../../fixtures/organic/gstreamer_cve_2024_47835_vulnerable.cpp",
"vulnerable_sha256": "fb2c64622a7fa605cee031d8193b36b5312142517faa3aa8733ba410ce48c72b",
"fixed_source": "../../fixtures/organic/gstreamer_cve_2024_47835_fixed.cpp",
"fixed_sha256": "9e18a60ee692978a3578ede6e0e789b7d0b1ba5f26ee21148dfe6d4f0f01c461"
},
{
"name": "libssh2-cve-2019-17498",
"cve": "CVE-2019-17498",
"project": "libssh2",
"repository": "https://github.com/libssh2/libssh2",
"reference": "https://github.com/libssh2/libssh2/commit/1c6fa92b77e34d089493fe6d3e2c6c8775858b94",
"vulnerable_revision": "8b3cf0b17c1b84a138bed9423a9e0743452b4de9",
"fixed_revision": "1c6fa92b77e34d089493fe6d3e2c6c8775858b94",
"upstream_path": "src/packet.c",
"license": "BSD-3-Clause",
"adaptation": "Preserves the unsigned datalen - 13 predicate. The fixed slice expresses the length precondition enforced by the checked parsing helpers introduced upstream.",
"expected": {
"vulnerable_detected": true,
"fixed_reported": false
},
"hazard": "integer-overflow",
"detector": "int-overflow",
"rule_id": "fold.unsigned-wrap",
"vulnerable_source": "../../fixtures/organic/libssh2_cve_2019_17498_vulnerable.cpp",
"vulnerable_sha256": "c209347ad7bbfb26916bb734011e0ff535c6e16a29485d2e4b10e82a5ce0fa22",
"fixed_source": "../../fixtures/organic/libssh2_cve_2019_17498_fixed.cpp",
"fixed_sha256": "f81594c4ec33bfbfd0bac31cc417a4d049450b40a2c0d7302ab0f58d9b90cefa"
},
{
"name": "openssl-cve-2015-0288",
"cve": "CVE-2015-0288",
"project": "OpenSSL",
"repository": "https://github.com/openssl/openssl",
"reference": "https://github.com/openssl/openssl/commit/28a00bcd8e318da18031b2ac8778c64147cd54f9",
"vulnerable_revision": "437b14b533fe7f7408e3ebca6d5569f1d3347b1a",
"fixed_revision": "28a00bcd8e318da18031b2ac8778c64147cd54f9",
"upstream_path": "apps/req.c",
"license": "OpenSSL",
"adaptation": "Preserves a nullable X509_get_pubkey result reaching a dereference-equivalent downstream use; removes OpenSSL object dependencies. The fixed slice adds the upstream null guard.",
"known_gap": "Fold does not yet propagate this nullable struct-field value into the downstream member dereference.",
"expected": {
"vulnerable_detected": false,
"fixed_reported": false
},
"hazard": "null-deref",
"detector": "null-deref",
"rule_id": "fold.null-deref",
"vulnerable_source": "../../fixtures/organic/openssl_cve_2015_0288_vulnerable.cpp",
"vulnerable_sha256": "392a5d560467f921c29df40729a47a89923d62e4cf176d15cd8434018e7d7afd",
"fixed_source": "../../fixtures/organic/openssl_cve_2015_0288_fixed.cpp",
"fixed_sha256": "97070682628ff474777016776280521583d51d5657fa65d03627d847d84c61e0"
}
]
}
}