SIX TOOLS / THE FULL RECORD
Round 1: smoke or toast
Round 1: smoke or toast
| Tool | Target | Run | Real caught | Safe flagged | Other findings | Minutes | List-price US$ | Youden |
|---|---|---|---|---|---|---|---|---|
| Claude Code's security plugin | benchmark40 | run1 | 16 of 20 | 0 of 20 | 3 | 40.4 | 45.64 | 0.80 |
| /security-review | benchmark40 | run1 | 10 of 20 | 0 of 20 | 0 | 9.2 | 5.03 | 0.50 |
| Codex Security | benchmark40 | run1 | 11 of 20 | 0 of 20 | 2 | 67.6 | 50.86 | 0.55 |
| Codex Security | benchmark40 | run2 | 12 of 20 | 1 of 20 | 2 | 69.9 | 65.15 | 0.55 |
| Plain Claude Code | benchmark40 | run1 | 20 of 20 | 1 of 20 | 3 | 1.4 | 0.66 | 0.95 |
| Plain Codex | benchmark40 | run1 | 20 of 20 | 2 of 20 | 4 | 4.0 | 0.42 | 0.90 |
| Plain Codex | benchmark40 | run2 | 19 of 20 | 1 of 20 | 5 | 3.4 | 0.37 | 0.90 |
| Plain Codex | benchmark40 | run3 | 19 of 20 | 1 of 20 | 6 | 3.3 | 0.35 | 0.90 |
| Semgrep | benchmark40 | run1 | 19 of 20 | 8 of 20 | 12 | 0.1 | not measured | 0.55 |
| Semgrep | benchmark40 | run2 | 19 of 20 | 8 of 20 | 12 | 0.1 | not measured | 0.55 |
| Semgrep | benchmark40 | run3 | 19 of 20 | 8 of 20 | 12 | 0.1 | not measured | 0.55 |
| Endpoint | Category / CWE | Truth | Claude Code's security plugin | /security-review | Codex Security | Plain Claude Code | Plain Codex | Semgrep |
|---|---|---|---|---|---|---|---|---|
| Endpoint01 | sqli / CWE-89 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint02 | xpathi / CWE-643 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint03 | hash / CWE-328 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint04 | crypto / CWE-327 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint05 | pathtraver / CWE-22 | real | missed | missed | missed | run1 | run1 | run1, run2, run3 |
| Endpoint06 | trustbound / CWE-501 | real | run1 | missed | missed | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint07 | xpathi / CWE-643 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint08 | trustbound / CWE-501 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint09 | hash / CWE-328 | real | run1 | missed | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint10 | crypto / CWE-327 | real | run1 | missed | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint11 | cmdi / CWE-78 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint12 | xpathi / CWE-643 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint13 | crypto / CWE-327 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint14 | pathtraver / CWE-22 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint15 | securecookie / CWE-614 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint16 | xss / CWE-79 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint17 | sqli / CWE-89 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint18 | ldapi / CWE-90 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint19 | weakrand / CWE-330 | safe | clear | clear | clear | run1 | run1, run2, run3 | clear |
| Endpoint20 | securecookie / CWE-614 | real | run1 | missed | missed | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint21 | sqli / CWE-89 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint22 | pathtraver / CWE-22 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint23 | xss / CWE-79 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint24 | ldapi / CWE-90 | real | run1 | run1 | missed | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint25 | hash / CWE-328 | safe | clear | clear | run2 | clear | run1 | clear |
| Endpoint26 | ldapi / CWE-90 | real | run1 | run1 | missed | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint27 | cmdi / CWE-78 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint28 | cmdi / CWE-78 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint29 | sqli / CWE-89 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint30 | trustbound / CWE-501 | real | run1 | missed | missed | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint31 | xss / CWE-79 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint32 | xpathi / CWE-643 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint33 | hash / CWE-328 | real | run1 | missed | run1, run2 | run1 | run1, run2, run3 | missed |
| Endpoint34 | weakrand / CWE-330 | real | missed | missed | missed | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint35 | securecookie / CWE-614 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint36 | cmdi / CWE-78 | real | run1 | run1 | run1, run2 | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint37 | weakrand / CWE-330 | safe | clear | clear | clear | clear | clear | clear |
| Endpoint38 | pathtraver / CWE-22 | safe | clear | clear | clear | clear | clear | run1, run2, run3 |
| Endpoint39 | weakrand / CWE-330 | real | missed | missed | missed | run1 | run1, run2, run3 | run1, run2, run3 |
| Endpoint40 | crypto / CWE-327 | real | missed | missed | run2 | run1 | run1, run2, run3 | run1, run2, run3 |
Claude Code's security plugin
/security-review
Codex Security
Plain Claude Code
Plain Codex
Semgrep
What the tools dropped
| Real cases | What /security-review held back |
|---|---|
| Endpoint09, Endpoint33 | MD5 hashing |
| Endpoint10, Endpoint40 | DES encryption |
| Endpoint34, Endpoint39 | Predictable random numbers |
| Endpoint06, Endpoint30 | Untrusted values stored in the session |
| Endpoint20 | Cookie missing its Secure flag |
/security-review reported 10 real cases and held back 9 more. Endpoint05 was not mentioned.
The Claude plugin dropped the real path traversal on Endpoint05 because it judged that an HTTP header name could not carry a path separator under the HTTP rules and Tomcat. It does not count as caught.
On fast-jwt, /security-review rated the CVE finding 6/10 and filtered it out. It does not count as caught.