2.0 · Explore evidence

An AI security engine is a model inside a harness.

Deterministic SAST and AI review covered different ground; what an AI engine reported depended on its harness as much as on its model; and coverage and cost were only loosely related.

Headline evidence · Attacker-Reachable Vulnerability Recall

Close at the top. Different ground covered.

  • Snyk Code 82.4% (89 of 108) and Claude Code /security-review with Opus 5 xhigh 79.3% (85 of 108): they disagree on 28 vulnerabilities, 16 to 12, too few to tell them apart.
  • Together they match 101 of 108, the same as all seven endpoint-aware configurations combined: a ceiling across configurations, not one tool's result.
  • DeepSec is scored with localized recall, a different evidence requirement, and is shown separately.

In this study neither engine was sufficient alone. A vulnerability class an engine does not report is a real miss here, because every reference vulnerability is attacker-reachable.

Dataset 2.0.0 · Snyk VulnBench 2.0 · 108 reference vulnerabilities · one run per configuration and application · Source: published 2.0 paper

Endpoint-aware configurations · Attacker-Reachable Vulnerability Recall
ConfigurationAttacker-Reachable Vulnerability Recall (macro, matched)95% intervalPrecision against the reference set (lower bound)Matched at the exact line
Snyk Code82.4% (89 of 108)74.0–90.5%20.9%85
Claude Code /security-review · Opus 5 xhigh79.3% (85 of 108)71.6–86.7%74.6%79
Claude Code /security-review · Opus 5 medium + Snyk MCP75.2% (80 of 108)68.2–82.3%82.5%74
Claude Code /security-review · Sonnet 5 xhigh67.0% (73 of 108)57.7–76.2%74.5%55
Codex Security · GPT-5.6 Luna41.2% (45 of 108)26.6–56.5%20.8%15
Codex Security · GPT-5.6 Terra30.1% (35 of 108)19.1–41.9%15.8%6
Codex Security · GPT-5.6 Sol29.2% (34 of 108)18.1–41.1%12.7%2

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

headline.csvheadline.meta.json

DeepSec · localized recall, a different evidence requirement
ConfigurationLocalized recall (macro, matched)95% intervalPrecision against the reference set (lower bound)
DeepSec · Opus 5 xhigh37.5% (37 of 108)22.6–53.2%7.1%
DeepSec · GPT-5.6 Sol xhigh2.5% (1 of 108)0.0–7.5%10.0%
View exact values
Matched vulnerabilities per application · main runs
ApplicationEndpoint-aware configurations: matchedDeepSec: localized matches
ApplicationLanguage familyFrameworksReference vulnerabilitiesCross-fileSnyk CodeClaude Code /security-review · Opus 5 xhighClaude Code /security-review · Opus 5 medium + Snyk MCPClaude Code /security-review · Sonnet 5 xhighCodex Security · GPT-5.6 LunaCodex Security · GPT-5.6 TerraCodex Security · GPT-5.6 SolDeepSec · Opus 5 xhighDeepSec · GPT-5.6 Sol xhigh
ardanserviceGochi, sqlx, goth55544252130
blanqJS/TSnuxt, vue, drizzle70555422330
boilwaterJS/TSexpress43433311240
coffeeshopJavaspring-boot, thymeleaf, spring-security52433311130
conduitPythonflask64466522200
flask-bonesPythonflask104876613100
go-sampleGohttprouter53555500000
gobaseGogin55554533440
goxygenGovue64655555500
halloweenJS/TSexpress31222111000
iguanaPythondjango64433221100
keystonebankJS/TSexpress, vue41422310020
lastsaasGogorilla-mux, react54343203110
pygmyPythonflask, django54555451120
robs-awesomePythonfastapi75776665450
saas-starter-kitGo—64665600300
saas-starter-liteJS/TSnestjs, angular63344454450
sassyregJS/TSreact20122100021
slingshotJS/TSreact, redux, webpack42433330000
vinyl-marketplaceJavaspring-boot74444321130

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

per_app.csvper_app.meta.json

View exact values
Matched vulnerabilities by class · endpoint-aware configurations
ClassReference vulnerabilitiesSnyk CodeClaude Code /security-review · Opus 5 xhighClaude Code /security-review · Opus 5 medium + Snyk MCPClaude Code /security-review · Sonnet 5 xhighCodex Security · GPT-5.6 LunaCodex Security · GPT-5.6 TerraCodex Security · GPT-5.6 Sol
code injection43444422
command injection1310121210666
IDOR10101000
improper type validation22110000
insecure deserialization55555343
mass assignment20222110
open redirect1111514554
path traversal1616141413734
prototype pollution66442100
ReDoS31000000
SQL injection1311121211522
SSRF98996666
template injection43333111
cross-site scripting1913131312656

Main runs; endpoint-aware configurations; most classes are small.

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

class_recall.csvclass_recall.meta.json

01 · Complementarity

SAST and AI review cover different ground

Snyk Code matched 82.4% (89 of 108) and Claude Code /security-review with Opus 5 xhigh 79.3% (85 of 108). They disagree on 28 vulnerabilities, 16 matched only by Snyk Code and 12 only by Opus 5 xhigh; a corpus of this size cannot separate them.

Together they match 101 of 108, as many as all seven endpoint-aware configurations combined. The best pair without SAST, Opus 5 xhigh with Codex Security GPT-5.6 Terra, reaches 89 (93 under many-to-one credit).

Snyk Code adds 16 vulnerabilities to Opus 5 xhigh, only 3 of them cross-file, led by open redirect (6). Opus 5 xhigh adds 12 to Snyk Code, 7 of them cross-file, including the authorization classes.

Snyk Code is the only one of the seven endpoint-aware configurations with unique coverage: 10 vulnerabilities in six classes (5 under many-to-one credit).

Outside the reference set, in this run, AI configurations found at least seven real vulnerabilities in scored classes that the reference set did not contain and Snyk Code did not report.

Interpret with care: A union across configurations is a ceiling, not one tool's result. Combining the two also combines their queues: 539 findings for 101 matches.

Horizontal bar chart of macro recall. Snyk Code 82.4% (89 of 108); Claude Code Opus 5 xhigh 79.3% (85 of 108); Opus 5 medium + Snyk MCP 75.2% (80 of 108); Sonnet 5 xhigh 67.0% (73 of 108); Codex Security GPT-5.6 Luna 41.2% (45 of 108), GPT-5.6 Terra 30.1% (35 of 108), GPT-5.6 Sol 29.2% (34 of 108). The top two cannot be separated. A separate panel shows DeepSec localized recall, a different evidence requirement: Opus 5 xhigh 37.5% (37 of 108), GPT-5.6 Sol xhigh 2.5% (1 of 108), a configuration that exported no findings in 16 of its 20 runs.Horizontal bar chart of macro recall. Snyk Code 82.4% (89 of 108); Claude Code Opus 5 xhigh 79.3% (85 of 108); Opus 5 medium + Snyk MCP 75.2% (80 of 108); Sonnet 5 xhigh 67.0% (73 of 108); Codex Security GPT-5.6 Luna 41.2% (45 of 108), GPT-5.6 Terra 30.1% (35 of 108), GPT-5.6 Sol 29.2% (34 of 108). The top two cannot be separated. A separate panel shows DeepSec localized recall, a different evidence requirement: Opus 5 xhigh 37.5% (37 of 108), GPT-5.6 Sol xhigh 2.5% (1 of 108), a configuration that exported no findings in 16 of its 20 runs.
Figure 1.Main recall results. (A) The seven endpoint-aware configurations: macro Attacker-Reachable Vulnerability Recall with the matched count; the bar is a 95% interval from resampling the 20 applications, which shows how much a score depends on which applications are in the corpus, not run-to-run variation. (B) DeepSec, scored with localized recall, on its own axis. The tick on the Claude Code rows marks the score under many-to-one credit, a sensitivity check. The top two cannot be separated: they disagree on 28 vulnerabilities, 16 vs 12 (McNemar p = 0.57, descriptive).PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Endpoint-aware configurations · Attacker-Reachable Vulnerability Recall
ConfigurationAttacker-Reachable Vulnerability Recall (macro, matched)95% intervalPrecision against the reference set (lower bound)Matched at the exact line
Snyk Code82.4% (89 of 108)74.0–90.5%20.9%85
Claude Code /security-review · Opus 5 xhigh79.3% (85 of 108)71.6–86.7%74.6%79
Claude Code /security-review · Opus 5 medium + Snyk MCP75.2% (80 of 108)68.2–82.3%82.5%74
Claude Code /security-review · Sonnet 5 xhigh67.0% (73 of 108)57.7–76.2%74.5%55
Codex Security · GPT-5.6 Luna41.2% (45 of 108)26.6–56.5%20.8%15
Codex Security · GPT-5.6 Terra30.1% (35 of 108)19.1–41.9%15.8%6
Codex Security · GPT-5.6 Sol29.2% (34 of 108)18.1–41.1%12.7%2

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

headline.csvheadline.meta.json

View exact values
DeepSec · localized recall, a different evidence requirement
ConfigurationLocalized recall (macro, matched)95% intervalPrecision against the reference set (lower bound)
DeepSec · Opus 5 xhigh37.5% (37 of 108)22.6–53.2%7.1%
DeepSec · GPT-5.6 Sol xhigh2.5% (1 of 108)0.0–7.5%10.0%
Two panels. A staircase rises from 89 for Snyk Code to 101 after adding Claude Code Opus 5 xhigh, with no further gains from the other configurations. A diverging bar chart shows by class the 16 vulnerabilities matched only by Snyk Code and the 12 matched only by Opus 5 xhigh.Two panels. A staircase rises from 89 for Snyk Code to 101 after adding Claude Code Opus 5 xhigh, with no further gains from the other configurations. A diverging bar chart shows by class the 16 vulnerabilities matched only by Snyk Code and the 12 matched only by Opus 5 xhigh.
Figure 2.The ceiling (endpoint-aware configurations only; DeepSec excluded). (A) Greedy cover: Snyk Code matches 89; Opus 5 xhigh adds the 12 it matched and Snyk Code did not, reaching 101, the union of all seven (102 after the reference-set correction); Opus 5 xhigh also misses 16 vulnerabilities that Snyk Code matched, which the cumulative count does not show. (B) The two sets of disagreements by class; hatching marks cross-file flows.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Greedy cover · endpoint-aware configurations only; DeepSec excluded
StepConfigurationVulnerabilities added at this stepCumulative matched
1Snyk Code8989
2Claude Code /security-review · Opus 5 xhigh12101
3Claude Code /security-review · Opus 5 medium + Snyk MCP0101
4Claude Code /security-review · Sonnet 5 xhigh0101
5Codex Security · GPT-5.6 Luna0101
6Codex Security · GPT-5.6 Terra0101
7Codex Security · GPT-5.6 Sol0101

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

greedy_cover.csvgreedy_cover.meta.json

View exact values
Pairs of endpoint-aware configurations · DeepSec excluded
Configuration AConfiguration BMatched by eitherB adds to AA adds to BCombined findings to triage
Snyk CodeClaude Code /security-review · Opus 5 xhigh1011216539
Snyk CodeClaude Code /security-review · Opus 5 medium + Snyk MCP1001120522
Snyk CodeClaude Code /security-review · Sonnet 5 xhigh991026523
Snyk CodeCodex Security · GPT-5.6 Luna95650641
Snyk CodeCodex Security · GPT-5.6 Terra94559646
Snyk CodeCodex Security · GPT-5.6 Sol93459692
Claude Code /security-review · Opus 5 xhighCodex Security · GPT-5.6 Terra89454335
Claude Code /security-review · Opus 5 xhighCodex Security · GPT-5.6 Luna88343330
Claude Code /security-review · Opus 5 xhighCodex Security · GPT-5.6 Sol88354381
Claude Code /security-review · Opus 5 xhighClaude Code /security-review · Sonnet 5 xhigh87214212
Claude Code /security-review · Opus 5 medium + Snyk MCPClaude Code /security-review · Opus 5 xhigh8550211
Claude Code /security-review · Opus 5 medium + Snyk MCPClaude Code /security-review · Sonnet 5 xhigh85512195
Claude Code /security-review · Opus 5 medium + Snyk MCPCodex Security · GPT-5.6 Terra85550318
Claude Code /security-review · Opus 5 medium + Snyk MCPCodex Security · GPT-5.6 Luna84439313
Claude Code /security-review · Opus 5 medium + Snyk MCPCodex Security · GPT-5.6 Sol84450364
Claude Code /security-review · Sonnet 5 xhighCodex Security · GPT-5.6 Luna78533314
Claude Code /security-review · Sonnet 5 xhighCodex Security · GPT-5.6 Terra78543319
Claude Code /security-review · Sonnet 5 xhighCodex Security · GPT-5.6 Sol77443365
Codex Security · GPT-5.6 LunaCodex Security · GPT-5.6 Sol551021483
Codex Security · GPT-5.6 LunaCodex Security · GPT-5.6 Terra54919437
Codex Security · GPT-5.6 TerraCodex Security · GPT-5.6 Sol4167488

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

pairwise_union.csvpairwise_union.meta.json

UpSet plot of the 108 reference vulnerabilities across Snyk Code, three Claude Code configurations and Codex Security pooled. One bar marks the 10 matched only by Snyk Code; another the 7 matched by none.UpSet plot of the 108 reference vulnerabilities across Snyk Code, three Claude Code configurations and Codex Security pooled. One bar marks the 10 matched only by Snyk Code; another the 7 matched by none.
Figure 3.Exact overlap of the matched sets. Each bar counts the reference vulnerabilities matched by exactly the marked combination of configurations; the three Codex Security configurations are pooled. The light bar counts the 7 matched by no endpoint-aware configuration; the dark bar the 10 only Snyk Code matched (5 under many-to-one credit). DeepSec is excluded.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Vulnerabilities matched by exactly each combination · endpoint-aware configurations; DeepSec excluded
CombinationVulnerabilities
Snyk Code; Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP; Claude Code /security-review · Sonnet 5 xhigh; Codex Security (three configurations pooled)42
Snyk Code; Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP; Claude Code /security-review · Sonnet 5 xhigh17
Snyk Code10
No endpoint-aware configuration7
Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP; Claude Code /security-review · Sonnet 5 xhigh; Codex Security (three configurations pooled)7
Snyk Code; Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP7
Snyk Code; Codex Security (three configurations pooled)4
Snyk Code; Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP; Codex Security (three configurations pooled)3
Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP; Claude Code /security-review · Sonnet 5 xhigh2
Snyk Code; Claude Code /security-review · Opus 5 xhigh2
Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Sonnet 5 xhigh1
Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP1
Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Opus 5 medium + Snyk MCP; Codex Security (three configurations pooled)1
Snyk Code; Claude Code /security-review · Sonnet 5 xhigh1
Snyk Code; Claude Code /security-review · Sonnet 5 xhigh; Codex Security (three configurations pooled)1
Snyk Code; Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Sonnet 5 xhigh1
Snyk Code; Claude Code /security-review · Opus 5 xhigh; Claude Code /security-review · Sonnet 5 xhigh; Codex Security (three configurations pooled)1

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

overlap_intersections.csvoverlap_intersections.meta.json

Three panels with one row per endpoint-aware configuration. Same-file and cross-file recall: Snyk Code 40/46 and 49/62; Opus 5 xhigh 32/46 and 53/62; Opus 5 med + MCP 30/46 and 50/62; Sonnet 5 xhigh 27/46 and 46/62; Codex Security GPT-5.6 Luna 14/46 and 31/62, Terra 14/46 and 21/62, Sol 12/46 and 22/62.Three panels with one row per endpoint-aware configuration. Same-file and cross-file recall: Snyk Code 40/46 and 49/62; Opus 5 xhigh 32/46 and 53/62; Opus 5 med + MCP 30/46 and 50/62; Sonnet 5 xhigh 27/46 and 46/62; Codex Security GPT-5.6 Luna 14/46 and 31/62, Terra 14/46 and 21/62, Sol 12/46 and 22/62.
Figure 4.Where each engine wins, by flow shape. (A) Recall on the 46 same-file and 62 cross-file vulnerabilities. (B) What each configuration's same-file misses are. (C) Cross-file cross-site scripting, the one cell where every configuration matched at most 4 of 7. Rows are the same configuration in every panel.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Same-file and cross-file vulnerabilities · endpoint-aware configurations
ConfigurationSame-file matchedCross-file matchedSame-file missesMisses in classes the built-in review policy excludes or restrictsMisses in cross-site scripting
Snyk Code40 of 4649 of 62611
Claude Code /security-review · Opus 5 xhigh32 of 4653 of 621483
Claude Code /security-review · Opus 5 medium + Snyk MCP30 of 4650 of 621693
Claude Code /security-review · Sonnet 5 xhigh27 of 4646 of 6219114
Codex Security · GPT-5.6 Luna14 of 4631 of 6232119
Codex Security · GPT-5.6 Terra14 of 4621 of 6232118
Codex Security · GPT-5.6 Sol12 of 4622 of 6234127

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

flow_shape.csvflow_shape.meta.json

Stacked bars of findings outside the reference set per endpoint-aware configuration, led by Snyk Code's 336, most in classes outside the 14 scored classes; a second panel compares precision against the reference set with precision over in-taxonomy reports.Stacked bars of findings outside the reference set per endpoint-aware configuration, led by Snyk Code's 336, most in classes outside the 14 scored classes; a second panel compares precision against the reference set with precision over in-taxonomy reports.
Figure 5.The triage cost. (A) Findings that matched no reference vulnerability, by category; they are outside the reference set and not proven false. (B) Precision against the reference set and over reports in the 14 scored classes only; both are lower bounds. DeepSec is omitted.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Findings and precision against the reference set · endpoint-aware configurations; DeepSec omitted
ConfigurationFindingsMatchedPrecision against the reference set (lower bound)
Snyk Code4258920.9%
Claude Code /security-review · Opus 5 xhigh1148574.6%
Claude Code /security-review · Opus 5 medium + Snyk MCP978082.5%
Claude Code /security-review · Sonnet 5 xhigh987374.5%
Codex Security · GPT-5.6 Luna2164520.8%
Codex Security · GPT-5.6 Terra2213515.8%
Codex Security · GPT-5.6 Sol2673412.7%

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

headline.csvheadline.meta.json

02 · Harness policy

The harness decides what gets reported

Claude Code's /security-review excludes ReDoS and reports prototype pollution and open redirect only at extremely high confidence. On the 20 reference vulnerabilities in those classes, Snyk Code matched 18 and Opus 5 xhigh 9; on the 81 others (excluding 7 cross-site scripting vulnerabilities in React and Angular applications), Opus 5 xhigh matched 71 and Snyk Code 67.

In a supplementary run on 19 of the 20 applications, the same model at the same effort, without that policy, matched 16 of the 20.

Codex Security with GPT-5.6 Sol located 80 vulnerabilities at file level but 34 under the two-line rule, typically pointing above the dangerous call.

DeepSec's model-free scan stage queued a file from only 56 of the 108 flows before any model ran.

The model still matters inside a harness: under the same harness, effort and prompt, Opus 5 matched 14 vulnerabilities that Sonnet 5 missed, against 2 the other way.

Interpret with care: The policy reading rests on the policy text and one supplementary control run; harness and model cannot be fully separated by this design.

Grouped bars of credited recall for the seven endpoint-aware configurations. In the 20 policy-class vulnerabilities Snyk Code matched 18 and Opus 5 xhigh 9; the supplementary prompt-swap control (single run, 19 of the 20 applications), outlined, reached 16 of the 20. A second panel shows, per class, credited and reported counts.Grouped bars of credited recall for the seven endpoint-aware configurations. In the 20 policy-class vulnerabilities Snyk Code matched 18 and Opus 5 xhigh 9; the supplementary prompt-swap control (single run, 19 of the 20 applications), outlined, reached 16 of the 20. A second panel shows, per class, credited and reported counts.
Figure 6.Classes the built-in review policy excludes or restricts. The Claude Code /security-review prompt (version 2.1.251) excludes ReDoS and asks that prototype pollution and open redirect be reported only at extremely high confidence; these classes were chosen from the prompt text, not from the data. (A) Credited recall on the 20 vulnerabilities in those classes, the 7 cross-site scripting vulnerabilities in React and Angular applications, and the 81 others. (B) Per class, credited against reported anywhere in the application. The dashed outline is the supplementary prompt-swap control (19 applications, single run), shown beside the main results and not merged into them.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Credited recall by subset · endpoint-aware configurations, main runs
ConfigurationClasses the built-in review policy excludes or restrictsXSS in React/Angular applicationsAll other vulns
Snyk Code18 of 204 of 767 of 81
Claude Code /security-review · Opus 5 xhigh9 of 205 of 771 of 81
Claude Code /security-review · Opus 5 medium + Snyk MCP5 of 205 of 770 of 81
Claude Code /security-review · Sonnet 5 xhigh6 of 204 of 763 of 81
Codex Security · GPT-5.6 Luna6 of 203 of 736 of 81
Codex Security · GPT-5.6 Terra5 of 201 of 729 of 81
Codex Security · GPT-5.6 Sol4 of 201 of 729 of 81

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

policy_class_recall.csvpolicy_class_recall.meta.json

View exact values
Per class, credited against reported anywhere in the application · main runs
ConfigurationClassCreditedReported anywhere in the application
Snyk Codeopen redirect11 of 1111 of 11
Snyk Codeprototype pollution6 of 66 of 6
Snyk CodeReDoS1 of 32 of 3
Claude Code /security-review · Opus 5 xhighopen redirect5 of 116 of 11
Claude Code /security-review · Opus 5 xhighprototype pollution4 of 66 of 6
Claude Code /security-review · Opus 5 xhighReDoS0 of 30 of 3
Claude Code /security-review · Opus 5 medium + Snyk MCPopen redirect1 of 112 of 11
Claude Code /security-review · Opus 5 medium + Snyk MCPprototype pollution4 of 66 of 6
Claude Code /security-review · Opus 5 medium + Snyk MCPReDoS0 of 30 of 3
Claude Code /security-review · Sonnet 5 xhighopen redirect4 of 115 of 11
Claude Code /security-review · Sonnet 5 xhighprototype pollution2 of 63 of 6
Claude Code /security-review · Sonnet 5 xhighReDoS0 of 30 of 3
Codex Security · GPT-5.6 Lunaopen redirect5 of 1110 of 11
Codex Security · GPT-5.6 Lunaprototype pollution1 of 63 of 6
Codex Security · GPT-5.6 LunaReDoS0 of 30 of 3
Codex Security · GPT-5.6 Terraopen redirect5 of 1110 of 11
Codex Security · GPT-5.6 Terraprototype pollution0 of 61 of 6
Codex Security · GPT-5.6 TerraReDoS0 of 33 of 3
Codex Security · GPT-5.6 Solopen redirect4 of 1110 of 11
Codex Security · GPT-5.6 Solprototype pollution0 of 66 of 6
Codex Security · GPT-5.6 SolReDoS0 of 31 of 3

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

policy_class_detail.csvpolicy_class_detail.meta.json

View exact values
Supplementary prompt-swap control · single run · never merged into the main results
SubsetSupplementary prompt-swap control (Opus 5 xhigh, default audit prompt)Main run: Claude Code /security-review · Opus 5 xhigh, same applications
Classes the built-in review policy excludes or restricts16 of 209 of 20
All other non-React/Angular71 of 7869 of 78
Open redirect9 of 115 of 11
Prototype pollution5 of 64 of 6
ReDoS2 of 30 of 3

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

policy_control_supplementary.csvpolicy_control_supplementary.meta.json

Histogram of line offsets for 57 missed sinks; most bars sit left of zero, meaning the reported line is above the dangerous call; 39 of 41 non-source locations are above it.Histogram of line offsets for 57 missed sinks; most bars sit left of zero, meaning the reported line is above the dangerous call; 39 of 41 non-source locations are above it.
Figure 7.Codex Security with GPT-5.6 Sol: for each of the 57 missed curated sinks with a reported location in the same file, the offset of the nearest reported location from the sink line (negative means above). Among the 41 locations that are not themselves a curated source, 39 lie above the sink, median six lines. The shaded band is the two-line tolerance.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Codex Security · GPT-5.6 Sol · missed curated sinks with a reported location in the same file
OffsetMissed curated sinks
Offset in linesReported location is a curated sourceReported location is not a curated source
≤−2101
−20…−1118
−10…−6915
−5…−3615
≥+302

Offset: Reported line minus curated sink line; negative = above the sink.

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

sol_sink_offsets.csvsol_sink_offsets.meta.json

Line chart of vulnerabilities matched against line tolerance. Snyk Code and the Claude Code configurations stay nearly flat; the Codex Security configurations rise steeply, GPT-5.6 Sol from 34 at two lines to 80 at file level. DeepSec is on a separate axis.Line chart of vulnerabilities matched against line tolerance. Snyk Code and the Claude Code configurations stay nearly flat; the Codex Security configurations rise steeply, GPT-5.6 Sol from 34 at two lines to 80 at file level. DeepSec is on a separate axis.
Figure 8.Matches against line tolerance. (A) The seven endpoint-aware configurations under the endpoint rule, from exact line to file level; only the two-line setting is used for results, the others are counterfactual rescorings of the same findings. (B) DeepSec under its own localized rule, on a separate axis.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Vulnerabilities matched against line tolerance · endpoint rule; DeepSec excluded
ConfigurationLine tolerance
ConfigurationExact line±1 lines±2 lines (used for results)±3 lines±5 lines±10 lines±20 linesAny line in the right file
Snyk Code8588898989898989
Claude Code /security-review · Opus 5 xhigh7984858686868689
Claude Code /security-review · Opus 5 medium + Snyk MCP7479808181818184
Claude Code /security-review · Sonnet 5 xhigh5571737575767776
Codex Security · GPT-5.6 Luna1532455055616466
Codex Security · GPT-5.6 Terra620353947636669
Codex Security · GPT-5.6 Sol218344354717780

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

tolerance_sweep.csvtolerance_sweep.meta.json

Funnel from 108 reference vulnerabilities to 56 with a flow file selected, then to 37 localized matches for the Opus 5 backend and 1 for the GPT-5.6 Sol backend, which exported no findings in 16 of its 20 runs; a second panel shows candidate coverage by language.Funnel from 108 reference vulnerabilities to 56 with a flow file selected, then to 37 localized matches for the Opus 5 backend and 1 for the GPT-5.6 Sol backend, which exported no findings in 16 of its 20 runs; a second panel shows candidate coverage by language.
Figure 9.Where DeepSec 2.3.7 loses the reference set. (A) Of 108 reference vulnerabilities, 56 had a flow file among the scan stage's candidates (model-free, identical for both backends) and 44 had their sink file there; localized matches follow for each backend. (B) Candidate coverage by language family. Localized recall is not comparable with Attacker-Reachable Vulnerability Recall.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
DeepSec · from the reference set through the scan stage to localized matches
StageVulnerabilities
Reference vulnerabilities108
A flow file among the scan stage's candidates56 of 108
The sink file among the candidates (vulnerabilities with a labeled sink)44 of 107
Localized match, Opus 5 xhigh backend37 of 56
Localized match, GPT-5.6 Sol backend1 of 56

Localized recall is DeepSec's primary metric and is not comparable with Attacker-Reachable Vulnerability Recall.

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

deepsec_funnel.csvdeepsec_funnel.meta.json

View exact values
DeepSec · a flow file among the scan stage's candidates, by language family
Language familyVulnerabilities
Go11 of 32
JavaScript / TypeScript23 of 30
Python10 of 34
Java12 of 12

03 · Efficiency

Coverage and cost were only loosely related

Snyk Code scanned all 20 applications in 8 minutes; the comparable AI configurations took between 2.4 hours and 8.9 hours.

Within Codex Security, all at xhigh effort, GPT-5.6 Sol cost 35.0 times as much as GPT-5.6 Luna and matched 11 fewer vulnerabilities: a comparison of model tiers, not of reasoning effort. Within Claude Code /security-review, at the same xhigh effort and with the same prompt, Opus 5 cost 4.2 times as much as Sonnet 5 and matched 12 more.

Known cost per matched vulnerability ranged from $0.47 to $21.92.

Interpret with care: One run per configuration and application: every ratio is a single observation. Snyk Code has no per-scan model cost; its license cost is outside this study.

Two scatter plots of macro recall. Against cost, Snyk Code sits in a separate no-per-scan-model-cost column; arrows mark two same-harness contrasts: Codex Security GPT-5.6 Sol cost 35.0 times GPT-5.6 Luna for 11 fewer matches, and Claude Code Opus 5 cost 4.2 times Sonnet 5 for 12 more. Against wall time, Snyk Code took 8 minutes in total against at least 2.4 hours for the AI configurations.Two scatter plots of macro recall. Against cost, Snyk Code sits in a separate no-per-scan-model-cost column; arrows mark two same-harness contrasts: Codex Security GPT-5.6 Sol cost 35.0 times GPT-5.6 Luna for 11 fewer matches, and Claude Code Opus 5 cost 4.2 times Sonnet 5 for 12 more. Against wall time, Snyk Code took 8 minutes in total against at least 2.4 hours for the AI configurations.
Figure 10.Coverage against cost and time (endpoint-aware configurations; DeepSec excluded). (A) Macro recall against mean known cost per application, log scale; Snyk Code has no per-scan model cost and is shown in a separate column, not on the dollar axis. Ringed points form the recall-versus-cost frontier. (B) Macro recall against mean wall time per application, log scale. One run per configuration and application; every ratio is a single observation.PNG, lightPNG, darkSVG, lightSVG, dark
View exact values
Resources per matched vulnerability · endpoint-aware configurations
ConfigurationWall time, totalWall time per matched vulnerability (s)Cost statusKnown cost, total (USD)Known cost per matched vulnerability (USD)Tokens per matched vulnerability (millions)Findings per matched vulnerability
Snyk Code8 min5no per-scan model cost———4.78
Claude Code /security-review · Opus 5 xhigh5.6 h236known164.531.941.031.34
Claude Code /security-review · Opus 5 medium + Snyk MCP2.4 h107known57.440.720.351.21
Claude Code /security-review · Sonnet 5 xhigh3.1 h153known39.560.540.721.34
Codex Security · GPT-5.6 Luna5.4 h433known21.320.4724.084.8
Codex Security · GPT-5.6 Terra4.9 h508known207.995.9424.426.31
Codex Security · GPT-5.6 Sol8.9 h942known745.1721.9242.117.85

One run per configuration and application: every ratio is a single observation. Snyk Code has no per-scan model cost; its license cost is outside this study.

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

efficiency.csvefficiency.meta.json

View exact values
DeepSec · per localized-recall match; never compared with the endpoint-aware configurations
ConfigurationWall time, totalWall time per matched vulnerability (s)Cost statusKnown cost, total (USD)Known cost per matched vulnerability (USD)Tokens per matched vulnerability (millions)
DeepSec · Opus 5 xhigh17.8 h1733known355.179.603.69
DeepSec · GPT-5.6 Sol xhigh3.3 h11752unavailable——12.99
Four bar panels per endpoint-aware configuration. Wall time per match: Snyk Code 5 s, AI configurations 107 to 942 s. Known cost per match: $0.47 to $21.92; Snyk Code has no per-scan model cost. Tokens per match: Claude Code 0.35 to 1.03 million, Codex Security 24 to 42 million. Findings per match: Claude Code 1.21 to 1.34, Snyk Code 4.78, Codex Security 4.80 to 7.85.Four bar panels per endpoint-aware configuration. Wall time per match: Snyk Code 5 s, AI configurations 107 to 942 s. Known cost per match: $0.47 to $21.92; Snyk Code has no per-scan model cost. Tokens per match: Claude Code 0.35 to 1.03 million, Codex Security 24 to 42 million. Findings per match: Claude Code 1.21 to 1.34, Snyk Code 4.78, Codex Security 4.80 to 7.85.
Figure 11.Resources per matched reference vulnerability: totals over the 20 applications divided by the number matched. (A) Wall time, log scale. (B) Known dollar cost, log scale; Snyk Code has no per-scan model cost. (C) Tokens, log scale; provider accounting differs, so compare within a family. (D) Reported findings per matched vulnerability, a measure of review volume.PNG, lightPNG, darkSVG, lightSVG, dark

Findings

Matches per reference vulnerability

One row per reference vulnerability · main runs; frozen reference set
Reference vulnerabilityEndpoint-aware configurations: matchedDeepSec: localized match
VulnerabilityApplicationClassLanguage familyCross-fileSnyk CodeClaude Code /security-review · Opus 5 xhighClaude Code /security-review · Opus 5 medium + Snyk MCPClaude Code /security-review · Sonnet 5 xhighCodex Security · GPT-5.6 LunaCodex Security · GPT-5.6 TerraCodex Security · GPT-5.6 SolEndpoint-aware configurations that matched itDeepSec · Opus 5 xhighDeepSec · GPT-5.6 Sol xhigh
app-project-ardanservice-command-injection-dnscheck-1ardanservicecommand injectionGoYesYesYesYesYesYesYesNo6YesNo
app-project-ardanservice-open-redirect-preferences-return-1ardanserviceopen redirectGoYesYesNoNoNoYesNoNo2YesNo
app-project-ardanservice-path-traversal-audit-report-1ardanservicepath traversalGoYesYesYesYesYesYesNoNo5NoNo
app-project-ardanservice-sql-injection-department-search-1ardanserviceSQL injectionGoYesYesYesYesNoYesNoNo4YesNo
app-project-ardanservice-ssrf-webhooktest-1ardanserviceSSRFGoYesYesYesYesNoYesYesYes6NoNo
app-project-blanq-prototype-pollution-displayblanqprototype pollutionJS/TSNoYesNoNoNoNoNoNo1NoNo
app-project-blanq-prototype-pollution-preferencesblanqprototype pollutionJS/TSNoYesYesYesNoNoNoNo3NoNo
app-project-blanq-redos-email-policyblanqReDoSJS/TSNoNoNoNoNoNoNoNo0NoNo
app-project-blanq-ssrf-logo-previewblanqSSRFJS/TSNoNoYesYesYesYesYesYes6YesNo
app-project-blanq-xss-campaignblanqcross-site scriptingJS/TSNoYesYesYesYesNoNoNo4YesNo
app-project-blanq-xss-referralblanqcross-site scriptingJS/TSNoYesYesYesYesYesNoYes6YesNo
app-project-blanq-xss-tooltipblanqcross-site scriptingJS/TSNoYesYesYesYesNoYesYes6NoNo
app-project-boilwater-command-injection-diagnosticsboilwatercommand injectionJS/TSYesYesYesYesYesNoNoYes5YesNo
app-project-boilwater-open-redirect-queryboilwateropen redirectJS/TSYesYesYesYesYesYesYesYes7YesNo
app-project-boilwater-open-redirect-referrerboilwateropen redirectJS/TSNoYesNoNoNoNoNoNo1YesNo
app-project-boilwater-path-traversal-downloadboilwaterpath traversalJS/TSYesYesYesYesYesNoNoNo4YesNo
app-project-flask-bones-command-injection-diagnostics-1flask-bonescommand injectionPythonYesYesYesYesYesNoNoNo4NoNo
app-project-flask-bones-command-injection-investigate-1flask-bonescommand injectionPythonYesYesYesYesNoNoNoNo3NoNo
app-project-flask-bones-idor-user-delete-1flask-bonesIDORPythonNoNoYesNoYesNoNoNo2NoNo
app-project-flask-bones-insecure-deserialization-list-prefs-1flask-bonesinsecure deserializationPythonNoYesYesYesYesNoYesNo5NoNo
app-project-flask-bones-insecure-deserialization-register-draft-1flask-bonesinsecure deserializationPythonNoYesYesYesYesYesYesYes7NoNo
app-project-flask-bones-mass-assignment-user-edit-1flask-bonesmass assignmentPythonNoNoYesYesYesNoNoNo3NoNo
app-project-flask-bones-open-redirect-login-1flask-bonesopen redirectPythonNoYesNoNoNoNoYesNo2NoNo
app-project-flask-bones-open-redirect-verify-1flask-bonesopen redirectPythonNoYesNoNoNoNoNoNo1NoNo
app-project-flask-bones-path-traversal-export-1flask-bonespath traversalPythonYesYesYesYesYesNoNoNo4NoNo
app-project-flask-bones-path-traversal-export-admin-1flask-bonespath traversalPythonYesYesNoNoNoNoNoNo1NoNo
app-project-go-sample-sql-injection-attribute-search-1go-sampleSQL injectionGoYesYesYesYesYesNoNoNo4NoNo
app-project-go-sample-sql-injection-jobs-list-orderby-1go-sampleSQL injectionGoYesYesYesYesYesNoNoNo4NoNo
app-project-go-sample-sql-injection-product-search-1go-sampleSQL injectionGoYesYesYesYesYesNoNoNo4NoNo
app-project-go-sample-xss-product-report-1go-samplecross-site scriptingGoNoYesYesYesYesNoNoNo4NoNo
app-project-go-sample-xss-search-preview-1go-samplecross-site scriptingGoNoYesYesYesYesNoNoNo4NoNo
app-project-gobase-command-injection-diagnostics-1gobasecommand injectionGoYesYesYesYesYesYesYesYes7YesNo
app-project-gobase-open-redirect-continue-1gobaseopen redirectGoYesYesYesNoYesYesYesYes6YesNo
app-project-gobase-path-traversal-reports-1gobasepath traversalGoYesYesYesYesYesNoNoYes5YesNo
app-project-gobase-ssrf-branding-preview-1gobaseSSRFGoYesYesYesYesYesYesYesYes7YesNo
app-project-gobase-template-injection-preview-1gobasetemplate injectionGoYesYesYesYesYesNoNoNo4NoNo
app-project-goxygen-command-injection-diagnostics-1goxygencommand injectionGoYesYesYesYesYesYesYesYes7NoNo
app-project-goxygen-open-redirect-continue-1goxygenopen redirectGoYesYesNoNoYesYesYesYes5NoNo
app-project-goxygen-path-traversal-reports-1goxygenpath traversalGoYesYesYesYesYesYesYesYes7NoNo
app-project-goxygen-prototype-pollution-preferences-1goxygenprototype pollutionGoNoYesYesYesNoNoNoNo3NoNo
app-project-goxygen-ssrf-branding-preview-1goxygenSSRFGoYesYesYesYesYesYesYesYes7NoNo
app-project-goxygen-xss-referral-banner-1goxygencross-site scriptingGoNoYesYesYesYesYesYesYes7NoNo
app-project-iguana-code-injection-issue-filteriguanacode injectionPythonNoYesYesYesYesYesYesYes7NoNo
app-project-iguana-command-injection-test-connectioniguanacommand injectionPythonYesNoNoNoNoNoNoNo0NoNo
app-project-iguana-path-traversal-timelog-exportiguanapath traversalPythonYesYesYesYesYesYesNoNo5NoNo
app-project-iguana-redos-search-operatoriguanaReDoSPythonYesNoNoNoNoNoNoNo0NoNo
app-project-iguana-redos-testpatterniguanaReDoSPythonNoYesNoNoNoNoNoNo1NoNo
app-project-iguana-sql-injection-issue-searchiguanaSQL injectionPythonYesYesYesYesNoNoNoNo3NoNo
app-project-lastsaas-command-injection-dns-1lastsaascommand injectionGoYesNoYesYesNoNoYesYes4NoNo
app-project-lastsaas-open-redirect-login-1lastsaasopen redirectGoNoYesYesNoNoNoNoNo2YesNo
app-project-lastsaas-path-traversal-media-1lastsaaspath traversalGoYesYesYesYesYesNoYesNo5NoNo
app-project-lastsaas-ssrf-remote-logo-1lastsaasSSRFGoYesYesYesYesYesNoYesNo5NoNo
app-project-lastsaas-xss-custom-page-1lastsaascross-site scriptingGoYesNoNoNoNoNoNoNo0NoNo
app-project-pygmy-code-injection-filterpygmycode injectionPythonNoYesYesYesYesYesNoNo5NoNo
app-project-pygmy-command-injection-click-lookuppygmycommand injectionPythonYesYesYesYesYesYesYesYes7NoNo
app-project-pygmy-path-traversal-exportpygmypath traversalPythonYesYesYesYesYesYesNoNo5YesNo
app-project-pygmy-sql-injection-searchpygmySQL injectionPythonYesYesYesYesYesYesNoNo5YesNo
app-project-pygmy-ssrf-reachability-checkpygmySSRFPythonYesYesYesYesNoYesNoNo4NoNo
app-project-robs-awesome-code-injection-reports-evaluaterobs-awesomecode injectionPythonNoYesYesYesYesYesYesYes7NoNo
app-project-robs-awesome-command-injection-dns-checkrobs-awesomecommand injectionPythonNoYesYesYesYesYesYesNo6YesNo
app-project-robs-awesome-insecure-deserialization-report-draftrobs-awesomeinsecure deserializationPythonYesYesYesYesYesYesYesYes7NoNo
app-project-robs-awesome-open-redirect-report-openrobs-awesomeopen redirectPythonYesYesYesNoNoNoNoNo2YesNo
app-project-robs-awesome-path-traversal-documentsrobs-awesomepath traversalPythonYesYesYesYesYesYesNoNo5YesNo
app-project-robs-awesome-sql-injection-reportsrobs-awesomeSQL injectionPythonYesYesYesYesYesYesYesYes7YesNo
app-project-robs-awesome-ssrf-integrations-previewrobs-awesomeSSRFPythonYesYesYesYesYesYesYesYes7YesNo
app-project-saas-starter-kit-command-injection-dns-checksaas-starter-kitcommand injectionGoYesYesYesYesYesNoNoYes5NoNo
app-project-saas-starter-kit-open-redirect-login-return-tosaas-starter-kitopen redirectGoYesYesYesNoYesNoNoNo3NoNo
app-project-saas-starter-kit-path-traversal-account-report-downloadsaas-starter-kitpath traversalGoYesYesYesYesYesNoNoYes5NoNo
app-project-saas-starter-kit-sqli-checklist-searchsaas-starter-kitSQL injectionGoNoYesYesYesYesNoNoNo4NoNo
app-project-saas-starter-kit-ssrf-account-logo-previewsaas-starter-kitSSRFGoYesYesYesYesYesNoNoYes5NoNo
app-project-saas-starter-kit-ssti-notification-previewsaas-starter-kittemplate injectionGoNoYesYesYesYesNoNoNo4NoNo
app-project-saas-starter-lite-command-injection-exportsaas-starter-litecommand injectionJS/TSYesNoYesYesYesYesNoNo4YesNo
app-project-saas-starter-lite-open-redirect-continuesaas-starter-liteopen redirectJS/TSNoYesNoNoNoYesYesYes4YesNo
app-project-saas-starter-lite-sql-injection-export-searchsaas-starter-liteSQL injectionJS/TSYesNoYesYesYesYesYesYes6YesNo
app-project-saas-starter-lite-ssti-invite-previewsaas-starter-litetemplate injectionJS/TSNoYesYesYesYesYesYesYes7NoNo
app-project-saas-starter-lite-xss-angular-rendersaas-starter-litecross-site scriptingJS/TSYesNoYesYesYesYesNoNo4YesNo
app-project-saas-starter-lite-xss-invite-responsesaas-starter-litecross-site scriptingJS/TSNoYesNoNoNoNoYesYes3YesNo
app-project-slingshot-prototype-pollution-displayslingshotprototype pollutionJS/TSNoYesNoNoNoNoNoNo1NoNo
app-project-slingshot-prototype-pollution-sharedslingshotprototype pollutionJS/TSNoYesYesYesYesYesNoNo5NoNo
app-project-slingshot-xss-campaignslingshotcross-site scriptingJS/TSYesYesYesYesYesYesNoNo5NoNo
app-project-slingshot-xss-referralslingshotcross-site scriptingJS/TSYesYesYesYesYesYesNoNo5NoNo
app1-path-traversal-statements-1keystonebankpath traversalJS/TSYesYesYesYesYesYesNoNo5NoNo
app1-prototype-pollution-memos-1keystonebankprototype pollutionJS/TSNoYesYesYesYesNoNoNo4NoNo
app1-sql-injection-finchat-1keystonebankSQL injectionJS/TSNoYesNoNoYesNoNoNo2YesNo
app1-xss-bank-profile-template-1keystonebankcross-site scriptingJS/TSNoYesNoNoNoNoNoNo1YesNo
coffeeshop-path-traversal-1coffeeshoppath traversalJavaNoYesYesYesYesNoNoNo4YesNo
coffeeshop-sql-injection-1coffeeshopSQL injectionJavaYesYesYesYesYesNoNoNo4YesNo
coffeeshop-template-injection-1coffeeshoptemplate injectionJavaYesNoNoNoNoNoNoNo0NoNo
coffeeshop-xss-1coffeeshopcross-site scriptingJavaNoYesYesYesYesYesYesYes7YesNo
coffeeshop-xss-2coffeeshopcross-site scriptingJavaNoYesNoNoNoNoNoNo1NoNo
conduit-v2-code-injection-filterconduitcode injectionPythonNoNoYesYesYesYesNoNo4NoNo
conduit-v2-command-injection-pdf-exportconduitcommand injectionPythonYesYesYesYesYesNoNoNo4NoNo
conduit-v2-insecure-deserialization-draft-resumeconduitinsecure deserializationPythonNoYesYesYesYesNoYesYes6NoNo
conduit-v2-path-traversal-downloadconduitpath traversalPythonYesYesYesYesYesYesYesYes7NoNo
conduit-v2-sql-injection-searchconduitSQL injectionPythonYesNoYesYesYesNoNoNo3NoNo
conduit-v2-ssrf-avatar-urlconduitSSRFPythonYesYesYesYesNoNoNoNo3NoNo
halloween-improper-type-validation-filter-1halloweenimproper type validationJS/TSNoYesNoNoNoNoNoNo1NoNo
halloween-improper-type-validation-includes-1halloweenimproper type validationJS/TSNoYesYesYesNoNoNoNo3NoNo
halloween-mass-assignment-1halloweenmass assignmentJS/TSYesNoYesYesYesYesYesNo5NoNo
sassyapp-cross-site-scripting-1sassyregcross-site scriptingJS/TSNoYesYesYesYesNoNoNo4YesNo
sassyapp-cross-site-scripting-2sassyregcross-site scriptingJS/TSNoNoYesYesNoNoNoNo2YesYes
vinyl-marketplace-path-traversal-1vinyl-marketplacepath traversalJavaNoYesYesYesNoNoNoNo3YesNo
vinyl-marketplace-path-traversal-2vinyl-marketplacepath traversalJavaNoYesNoNoNoNoNoNo1NoNo
vinyl-marketplace-sql-injection-1vinyl-marketplaceSQL injectionJavaYesYesYesYesYesYesNoNo5YesNo
vinyl-marketplace-unsafe-deserialization-1vinyl-marketplaceinsecure deserializationJavaNoYesYesYesYesYesNoNo5NoNo
vinyl-marketplace-xss-1vinyl-marketplacecross-site scriptingJavaYesNoNoNoNoNoNoNo0NoNo
vinyl-marketplace-xss-2vinyl-marketplacecross-site scriptingJavaYesNoNoNoNoNoNoNo0NoNo
vinyl-marketplace-xss-3vinyl-marketplacecross-site scriptingJavaYesNoYesYesYesNoYesYes5YesNo

An empty cell means not applicable or unavailable as stated in `columns`; it never means zero.

match_matrix.csvmatch_matrix.meta.json