Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 26 additions & 6 deletions docs/VULNERABILITY_CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,12 @@ from each file's header comment, so this page cannot drift from the source.

## Totals

- **Test cases:** 127
- **Expected detections:** 127
- **`VULNERABLE:` markers:** 236 (individual lines a scanner should flag)
- **`SAFE:` markers:** 144 (lines a scanner must not flag — the false-positive control group)
- **Languages:** 8 — dotenv, go, java, javascript, json, python, ruby, text
- **CWE categories:** 89 — CWE-20, CWE-22, CWE-78, CWE-79, CWE-89, CWE-90, CWE-94, CWE-95, CWE-113, CWE-117, CWE-129, CWE-190, CWE-201, CWE-203, CWE-208, CWE-209, CWE-256, CWE-285, CWE-287, CWE-288, CWE-291, CWE-295, CWE-306, CWE-307, CWE-311, CWE-312, CWE-319, CWE-321, CWE-326, CWE-327, CWE-329, CWE-330, CWE-338, CWE-345, CWE-346, CWE-347, CWE-352, CWE-362, CWE-377, CWE-384, CWE-400, CWE-409, CWE-434, CWE-441, CWE-460, CWE-472, CWE-475, CWE-480, CWE-488, CWE-489, CWE-502, CWE-506, CWE-509, CWE-512, CWE-521, CWE-522, CWE-525, CWE-532, CWE-598, CWE-601, CWE-602, CWE-611, CWE-613, CWE-614, CWE-620, CWE-639, CWE-640, CWE-643, CWE-681, CWE-693, CWE-732, CWE-759, CWE-776, CWE-798, CWE-835, CWE-862, CWE-863, CWE-915, CWE-916, CWE-918, CWE-922, CWE-942, CWE-943, CWE-1021, CWE-1236, CWE-1321, CWE-1333, CWE-1336, CWE-1357
- **Test cases:** 142
- **Expected detections:** 142
- **`VULNERABLE:` markers:** 251 (individual lines a scanner should flag)
- **`SAFE:` markers:** 159 (lines a scanner must not flag — the false-positive control group)
- **Languages:** 9 — dotenv, go, java, javascript, json, python, ruby, shell, text
- **CWE categories:** 91 — CWE-20, CWE-22, CWE-78, CWE-79, CWE-88, CWE-89, CWE-90, CWE-94, CWE-95, CWE-113, CWE-117, CWE-129, CWE-187, CWE-190, CWE-201, CWE-203, CWE-208, CWE-209, CWE-256, CWE-285, CWE-287, CWE-288, CWE-291, CWE-295, CWE-306, CWE-307, CWE-311, CWE-312, CWE-319, CWE-321, CWE-326, CWE-327, CWE-329, CWE-330, CWE-338, CWE-345, CWE-346, CWE-347, CWE-352, CWE-362, CWE-377, CWE-384, CWE-400, CWE-409, CWE-434, CWE-441, CWE-460, CWE-472, CWE-475, CWE-480, CWE-488, CWE-489, CWE-502, CWE-506, CWE-509, CWE-512, CWE-521, CWE-522, CWE-525, CWE-532, CWE-598, CWE-601, CWE-602, CWE-611, CWE-613, CWE-614, CWE-620, CWE-639, CWE-640, CWE-643, CWE-681, CWE-693, CWE-732, CWE-759, CWE-776, CWE-798, CWE-835, CWE-862, CWE-863, CWE-915, CWE-916, CWE-918, CWE-922, CWE-942, CWE-943, CWE-1021, CWE-1236, CWE-1321, CWE-1333, CWE-1336, CWE-1357

## How coverage is scored

Expand Down Expand Up @@ -175,6 +175,26 @@ counts as a detection. See `docs/SCANNER_INTEGRATION.md`.
| Private key material committed to the repository | [`private-key-pem.txt`](../vulns/secrets/private-key-pem.txt) | CWE-798 | critical | yes | 1 vuln / 0 safe |
| Hardcoded Slack webhook URL and bot token | [`slack-webhook-url.py`](../vulns/secrets/slack-webhook-url.py) | CWE-798 | critical | yes | 3 vuln / 1 safe |

## Shell

| Test case | File | CWE | Severity | Expected | Markers |
|---|---|---|---|---|---|
| Archive extraction without entry-path validation | [`archive-path-traversal.sh`](../vulns/shell/archive-path-traversal.sh) | CWE-22 | high | yes | 1 vuln / 1 safe |
| Command injection through eval | [`eval-command-injection.sh`](../vulns/shell/eval-command-injection.sh) | CWE-78 | critical | yes | 1 vuln / 1 safe |
| Hard-coded administrative password | [`hardcoded-password.sh`](../vulns/shell/hardcoded-password.sh) | CWE-798 | critical | yes | 1 vuln / 1 safe |
| Log injection through unsanitized request text | [`log-injection.sh`](../vulns/shell/log-injection.sh) | CWE-117 | medium | yes | 1 vuln / 1 safe |
| Authentication bypass through prefix comparison | [`partial-api-key-comparison.sh`](../vulns/shell/partial-api-key-comparison.sh) | CWE-187 | critical | yes | 1 vuln / 1 safe |
| Path traversal through a request-controlled filename | [`path-traversal-cat.sh`](../vulns/shell/path-traversal-cat.sh) | CWE-22 | high | yes | 1 vuln / 1 safe |
| Predictable temporary file path | [`predictable-temp-path.sh`](../vulns/shell/predictable-temp-path.sh) | CWE-377 | medium | yes | 1 vuln / 1 safe |
| SQL injection through a psql command string | [`sql-injection-psql.sh`](../vulns/shell/sql-injection-psql.sh) | CWE-89 | critical | yes | 1 vuln / 1 safe |
| SSRF through curl with a user-supplied URL | [`ssrf-curl-user-url.sh`](../vulns/shell/ssrf-curl-user-url.sh) | CWE-918 | high | yes | 1 vuln / 1 safe |
| TLS certificate verification disabled in curl | [`tls-verification-disabled.sh`](../vulns/shell/tls-verification-disabled.sh) | CWE-295 | critical | yes | 1 vuln / 1 safe |
| Argument injection through unquoted variable expansion | [`unquoted-word-splitting.sh`](../vulns/shell/unquoted-word-splitting.sh) | CWE-88 | high | yes | 1 vuln / 1 safe |
| Arbitrary code execution by sourcing an untrusted file | [`unsafe-source-config.sh`](../vulns/shell/unsafe-source-config.sh) | CWE-94 | critical | yes | 1 vuln / 1 safe |
| Predictable recovery token generated with RANDOM | [`weak-random-token.sh`](../vulns/shell/weak-random-token.sh) | CWE-330 | high | yes | 1 vuln / 1 safe |
| Option injection through an unguarded wildcard | [`wildcard-option-injection.sh`](../vulns/shell/wildcard-option-injection.sh) | CWE-88 | high | yes | 1 vuln / 1 safe |
| Sensitive output made world-writable | [`world-writable-permissions.sh`](../vulns/shell/world-writable-permissions.sh) | CWE-732 | high | yes | 1 vuln / 1 safe |

## Supply Chain

| Test case | File | CWE | Severity | Expected | Markers |
Expand Down
Loading