Abstract
The OWASP Top 10:2025 (released November 2025) was distilled from more than 175,000 CVE records and 589 CWEs. This paper does three things a plain summary does not: (1) it publishes a reproducible, machine-readable crosswalk tying every category to CWE, NVD CVSS, MITRE ATT&CK, NIST, ISO/IEC 27001, PCI DSS, and GDPR; (2) it advances a falsifiable thesis — that among these top risks, CVSS base score does not discriminate real-world impact, and supply-chain incidence explains blast radius better than severity; and (3) it ships detection rules and datasets you can run and verify.
Provenance note (read first)
Every CVSS figure below is the NVD primary score from the NVD REST API v2.0, with the full vector string shown. Retrieval dates by artifact: the five marquee vectors were pulled 2026-07-08; the population study, KEV join, and EPSS pull (§3) were run 2026-07-09. Where a vendor/CNA score differs (e.g. CVE-2023-22515: NVD 9.8 vs Atlassian 10.0), both are stated and the difference explained. Incidents that are not CVEs carry no CVSS score.
Table of Contents
- 1. The vocabulary of a vulnerability
- 2. Methodology & data provenance
- 3. Original analysis — does CVSS predict impact?
- 4.1 — A01 Broken Access Control
- 4.2 — A02 Security Misconfiguration
- 4.3 — A03 Software Supply Chain Failures (new)
- 4.4 — A04 Cryptographic Failures
- 4.5 — A05 Injection
- 5. Completing the picture — A06–A10
- 6. The AI / LLM dimension
- 7. Detection & prevention you can run
- 8. A note on CVSS v3.1 → v4.0
- 9. Reproducibility & downloads
- 10. Appendix — verified score provenance
- References
1. The Vocabulary of a Vulnerability
One security weakness is named by several overlapping systems; reading any advisory means knowing which is which. Each term below links to its authoritative source:
- OWASP Top 10 — an awareness ranking of the most impactful web-application risk categories.
- CWE — MITRE's dictionary of weakness types (e.g. CWE-89 = SQL Injection).
- CVE — a unique ID for one specific flaw in one specific product, run by the CVE Program.
- NVD — NIST's database that enriches and scores every CVE.
- CVSS — a 0–10 severity score governed by FIRST. 9.0–10.0 = Critical.
- MITRE ATT&CK — a knowledge base of adversary techniques (e.g. T1190).
- GRC frameworks — NIST SP 800-53, ISO/IEC 27001, PCI DSS, and GDPR define the controls and legal obligations that require you to prevent these weaknesses.
2. Methodology & Data Provenance
Category rankings are taken verbatim from the official OWASP Top 10:2025. For each category the crosswalk records the primary CWEs, a representative real-world example, the relevant ATT&CK techniques, and the most directly applicable control from each framework. Every CVSS base score and vector was pulled programmatically from the NVD REST API v2.0 on 2026-07-08 and reflects the NVD primary analysis; vendor/CNA scores are labelled as such. The complete mapping is published as JSON and CSV under CC BY 4.0 (see §9), and the tables on this page are rendered from that same file — so what you read and what you download cannot diverge.
Limitations. The example set is illustrative (n = 5 marquee CVEs), not a statistically powered sample; control mappings cite the most representative clause rather than an exhaustive list; and category-to-technique mappings are interpretive. The dataset ships so others can extend the sample and test the thesis below at scale.
3. Original Analysis — Does CVSS Predict Real-World Impact?
A recurring assumption in vulnerability management is "patch by CVSS, highest first." We test it in two steps: first a motivating illustration (the five marquee CVEs), then an empirical test over the entire population so the conclusion does not rest on a hand-picked sample. Here are the five NVD-verified scores:
| CVE | NVD 3.1 | Scope | Approx. real-world blast radius |
|---|---|---|---|
| CVE-2021-44228 | 10.0 | Changed | Millions of Java apps worldwide (Log4Shell) |
| CVE-2024-3094 | 10.0 | Changed | Near-miss; caught before stable-distro spread (XZ) |
| CVE-2023-34362 | 9.8 | Unchanged | Thousands of orgs, tens of millions of people (MOVEit / Cl0p) |
| CVE-2023-22515 | 9.8 | Unchanged* | Widespread Confluence takeover |
| CVE-2014-0160 | 7.5 | Unchanged | ~500k trusted web servers (Heartbleed) |
*NVD scores 9.8 (Scope Unchanged); Atlassian's CNA scores 10.0 (Scope Changed).
The five sit within a 0.2-point band (9.8–10.0, plus Heartbleed at 7.5), yet their blast radii differ by orders of magnitude — MOVEit (9.8) drove one of the largest data-theft campaigns on record while XZ (10.0) caused almost none because it was caught in time. But five famous CVEs prove nothing on their own: they were selected because they are high-impact, which is precisely the outcome under test. So we run the real experiment.
3.1 — Experiment: does CVSS severity predict realised exploitation?
Design. Population = every CVE carrying a CVSS v3 base severity in the NVD (n = 191,079). Ground-truth exploitation label = membership in the CISA KEV catalog (NVD hasKev). Counts were pulled from the NVD REST API v2.0 per (severity × KEV) cell on 2026-07-09 — the whole population by band, no sampling on outcome.
| CVSS band | Population | KEV (exploited) | P(exploited | band) | Share of all exploited | Lift |
|---|---|---|---|---|---|
| Critical | 30,301 | 475 | 1.57% | 37.5% | 2.37× |
| High | 75,456 | 654 | 0.87% | 51.7% | 1.31× |
| Medium | 82,119 | 134 | 0.16% | 10.6% | 0.25× |
| Low | 3,203 | 3 | 0.09% | 0.2% | 0.14× |
Overall KEV rate = 0.663% (1,266 / 191,079). Lift = P(exploited | band) ÷ overall rate. χ²(3) = 751.8, p ≪ 0.001.
Result. Severity carries directional signal — Critical CVEs are exploited at 2.37× the base rate, the gradient is monotonic (1.57% → 0.87% → 0.16% → 0.09%), and the association is highly significant (χ²(3) = 751.8, p ≪ 0.001). But as an operational prioritisation filter it is weak on both axes:
- 98.4% of Critical CVEs were never known-exploited — low precision: "Critical" is a poor signal for where to act.
- Patching only Critical misses 62.5% of exploited CVEs — low recall: the plurality of exploited CVEs (51.7%) are rated High, not Critical.
How much signal is that, exactly? We quantify it two ways in §3.3.
3.2 — The exploitation signal already exists: EPSS
The natural objection — "then use an exploitation signal, not severity" — is exactly the founding motivation of FIRST's Exploit Prediction Scoring System (EPSS), which ships a daily per-CVE probability of exploitation. As an illustration, EPSS places all five marquee CVEs at or above the 99.7th percentile despite their CVSS spanning 7.5–10.0:
| CVE | NVD CVSS 3.1 | EPSS prob. | EPSS percentile |
|---|---|---|---|
| CVE-2021-44228 · Log4Shell | 10.0 | 0.99999 | 100.00% |
| CVE-2024-3094 · XZ | 10.0 | 0.85974 | 99.70% |
| CVE-2023-34362 · MOVEit | 9.8 | 0.99934 | 99.97% |
| CVE-2023-22515 · Confluence | 9.8 | 0.99156 | 99.93% |
| CVE-2014-0160 · Heartbleed | 7.5 | 0.99999 | 100.00% |
Caveat — this table is illustration, not proof
These are today's EPSS values for CVEs that were mass-exploited years ago. EPSS is updated with observed exploitation, so a high score here shows EPSS encodes known exploitation — it is not a clean time-of-disclosure forecast, and the five were selected on impact. The population-scale, imbalance-aware test is next.
3.3 — How much signal, exactly? CVSS-AUC vs EPSS-AUC
Two summary statistics, both computed over the full KEV-labelled population, tell a deliberately two-sided story:
- Cramér's V = 0.063 (4×2 severity × exploited) — a near-zero association. Under a 0.66% base rate, association measures are dominated by class imbalance.
- ROC-AUC sidesteps imbalance by measuring rank-discrimination (the probability an exploited CVE outranks a random non-exploited one). CVSS severity-banded AUC = 0.70; EPSS probability AUC = 0.947 over 346,176 CVEs (all 1,635 KEV entries covered).
Rank-discrimination of realised exploitation (KEV) — ROC-AUC
Reading them together resolves the apparent tension: CVSS severity does rank an exploited CVE above a non-exploited one about 70% of the time — more than the near-zero Cramér's V alone implies, the two diverging precisely because of the imbalance — yet the exploitation-derived EPSS signal is dramatically better (0.95). Censoring recent CVEs (dropping 2025–26 IDs that have not had time to be exploited-and-listed) leaves EPSS-AUC essentially unchanged at 0.948, so it is not a recent-CVE artifact.
Thesis (tested)
Across the full NVD population, CVSS base severity is a weak operational predictor of realised exploitation: banded AUC 0.70, Cramér's V 0.063, 98.4% of Criticals never exploited, and a Critical-only strategy misses 62.5% of exploited CVEs. Prioritisation should therefore be driven by an exploitation-likelihood signal (EPSS AUC 0.95; KEV membership; or a decision model such as SSVC), with CVSS as necessary severity context, not the ranking key — consistent with NVD's own guidance that base scores are severity, not risk.
Stated but not tested (future work): that supply-chain incidence (downstream dependents, internet exposure) explains blast radius better than severity. That is a separate, measurable hypothesis — dependents from deps.dev/npm, exposure from Shodan/Censys, regressed on breach scale for a KEV subsample — which this study does not attempt. We flag it explicitly rather than claim it.
Related work. This reproduces, on a fresh 2026 snapshot, a well-established finding: FIRST's EPSS and CISA/CMU's SSVC both exist precisely because base-score severity is a poor proxy for actionable risk. Limitations. (1) KEV is a lower bound on exploitation (curated, US-centric, lags disclosure), so precision is conservative. (2) Right-censoring: recent CVEs have not had time to be exploited-and-listed — addressed by the ≤2024 sensitivity check above. (3) The CVSS-v3 filter structurally excludes pre-2016 CVEs, and CVSS-AUC is banded (four ordinal levels), not continuous. (4) EPSS-AUC reflects encoded, not forecast, exploitation (see §3.2 caveat). Full figures, the χ² and AUC computations, and both data pulls are in the downloadable kev-cvss-analysis.json, auc_results.json, and scripts kev_experiment.py / auc_experiment.py (see §9).
4. The Five Highest-Ranked Risks
4.1 — A01:2025 Broken Access Control
Ranked #1 for the second edition running, A01:2025 means the application fails to enforce what an authenticated user is allowed to do. In 2025 it also absorbed Server-Side Request Forgery (CWE-918). Typical failures: reading another user's record by changing an ID in the URL (IDOR, CWE-639), reaching admin functions without admin rights (CWE-862), or forcing the server to make requests on the attacker's behalf. Attackers operationalise this via ATT&CK T1548 and T1068. It is governed by NIST 800-53 AC-3/AC-6, ISO 27001 A.5.15, PCI DSS Req. 7, and GDPR Art. 25.
CWE-284CWE-862CWE-863CWE-639CWE-918
Atlassian Confluence Data Center & Server
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Score provenance: Atlassian (CNA) scored this 10.0 using CVSS v3.0 with vector CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H (scope Changed). The 0.2-point difference is entirely the Scope metric.
| Framework / Standard | Mapping & control reference |
|---|---|
| OWASP | A01:2025 — Broken Access Control (unchanged (#1); absorbed SSRF from the 2021 list) |
| CWE | CWE-284 · CWE-862 · CWE-863 · CWE-639 · CWE-918 |
| MITRE ATT&CK | T1548 · T1068 · T1190 |
| NIST SP 800-53 | AC-3 Access Enforcement · AC-6 Least Privilege · AC-4 Information Flow Enforcement |
| NIST CSF 2.0 | PR.AA Identity Management, Authentication & Access Control |
| ISO/IEC 27001:2022 | A.5.15 Access control · A.8.3 Information access restriction |
| PCI DSS v4.0 | Req. 7 — Restrict access to system components and cardholder data by business need-to-know |
| GDPR | Art. 25 Data protection by design and by default · Art. 32 Security of processing |
4.2 — A02:2025 Security Misconfiguration
Climbing to #2, A02:2025 covers systems insecure not because of a coding bug but because of how they are set up — default credentials, verbose errors, permissive cloud storage, over-broad IAM. The canonical case is the 2019 Capital One breach: a misconfigured web application firewall was abused via SSRF to reach the cloud instance metadata service (ATT&CK T1552.005), steal credentials, and exfiltrate ~106 million records. Because it is an incident and not a catalogued CVE, it has no CVSS score — a distinction worth keeping precise. Controls: NIST 800-53 CM-6/CM-7, ISO 27001 A.8.9, PCI DSS Req. 2, and hardening baselines from the CIS Benchmarks.
Misconfigured WAF -> SSRF -> AWS instance metadata
An incident, not a catalogued CVE; CVSS is not defined for incidents. Root cause was a misconfigured web application firewall abused via SSRF to reach the cloud metadata service and steal credentials.
| Framework / Standard | Mapping & control reference |
|---|---|
| OWASP | A02:2025 — Security Misconfiguration (up from #5 (2021)) |
| CWE | CWE-16 · CWE-1188 · CWE-732 |
| MITRE ATT&CK | T1190 · T1078 · T1552.005 |
| NIST SP 800-53 | CM-6 Configuration Settings · CM-7 Least Functionality · SC-7 Boundary Protection |
| NIST CSF 2.0 | PR.PS Platform Security; ID.AM Asset Management |
| ISO/IEC 27001:2022 | A.8.9 Configuration management · A.8.20 Networks security |
| PCI DSS v4.0 | Req. 2 — Apply secure configurations to all system components |
| GDPR | Art. 32 Security of processing |
4.3 — A03:2025 Software Supply Chain Failures (NEW)
A brand-new, expanded category for 2025 (evolving from "Vulnerable and Outdated Components"), A03:2025 covers risk you inherit from everything you did not write: open-source libraries, transitive dependencies, build tooling, and CI/CD. It maps to ATT&CK T1195 (Supply Chain Compromise) and to NIST CSF 2.0 GV.SC, NIST SSDF (SP 800-218), ISO 27001 A.5.19–A.5.22, PCI DSS Req. 6.3.2, and GDPR Art. 28. Assurance frameworks that directly address it include SLSA and machine-readable SBOMs (SPDX / CycloneDX). Two exhibits — a known-vulnerable dependency and a maliciously planted backdoor:
Apache Log4j 2 (Log4Shell)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
XZ Utils / liblzma backdoor
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
| Framework / Standard | Mapping & control reference |
|---|---|
| OWASP | A03:2025 — Software Supply Chain Failures (NEW / expanded from 'Vulnerable and Outdated Components' (2021)) |
| CWE | CWE-1104 · CWE-506 · CWE-1357 |
| MITRE ATT&CK | T1195 · T1195.001 · T1195.002 · T1199 |
| NIST SP 800-53 | SR-3 Supply Chain Controls and Processes · SR-4 Provenance · SA-12 (legacy) Supply Chain Protection |
| NIST CSF 2.0 | GV.SC Cybersecurity Supply Chain Risk Management |
| ISO/IEC 27001:2022 | A.5.19 Information security in supplier relationships · A.5.21 Managing information security in the ICT supply chain · A.8.30 Outsourced development |
| PCI DSS v4.0 | Req. 6.3.2 — Maintain an inventory of bespoke and third-party software components |
| GDPR | Art. 28 Processor and sub-processor obligations |
4.4 — A04:2025 Cryptographic Failures
A04:2025 (formerly "Sensitive Data Exposure") is about protecting data in transit and at rest. The failure is usually not broken math but broken usage — no encryption, outdated algorithms (CWE-327), cleartext transmission (CWE-319), or hard-coded secrets (CWE-259). Attackers harvest via ATT&CK T1040 (Network Sniffing) and T1557 (Adversary-in-the-Middle). Controls: NIST 800-53 SC-8/SC-13/SC-28, ISO 27001 A.8.24, PCI DSS Req. 3 & 4, and GDPR Art. 32(1)(a) (encryption & pseudonymisation). Heartbleed is the archetype — and a useful reminder that a data-exposure flaw can be "only" 7.5 yet catastrophic:
OpenSSL 'Heartbleed'
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
| Framework / Standard | Mapping & control reference |
|---|---|
| OWASP | A04:2025 — Cryptographic Failures (down from #2 (2021); formerly 'Sensitive Data Exposure') |
| CWE | CWE-327 · CWE-319 · CWE-259 · CWE-331 |
| MITRE ATT&CK | T1040 · T1552 · T1557 |
| NIST SP 800-53 | SC-8 Transmission Confidentiality and Integrity · SC-13 Cryptographic Protection · SC-28 Protection of Information at Rest |
| NIST CSF 2.0 | PR.DS Data Security |
| ISO/IEC 27001:2022 | A.8.24 Use of cryptography · A.5.33 Protection of records |
| PCI DSS v4.0 | Req. 3 — Protect stored account data; Req. 4 — Strong cryptography during transmission |
| GDPR | Art. 32(1)(a) Encryption and pseudonymisation of personal data |
4.5 — A05:2025 Injection
Once the reigning #1, A05:2025 now sits at #5 — not because it disappeared, but because parameterised queries and frameworks made it easier to prevent. It still occurs whenever untrusted input is interpreted as a command: SQL (CWE-89), OS commands (CWE-78), and cross-site scripting (CWE-79). Exploited via T1190 and T1059, sometimes dropping a web shell (T1505.003). Governed by NIST 800-53 SI-10, ISO 27001 A.8.28, and PCI DSS Req. 6.2.4. The MOVEit campaign shows why a 9.8 in ubiquitous software beats a 10.0 in something rare:
Progress MOVEit Transfer (SQL injection)
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
Weaponised at scale by the Cl0p ransomware group; impact driven by ubiquity and threat-actor operationalisation, not by an exceptionally high base score.
| Framework / Standard | Mapping & control reference |
|---|---|
| OWASP | A05:2025 — Injection (down from #1 (2017) / #3 (2021)) |
| CWE | CWE-89 · CWE-79 · CWE-78 · CWE-94 |
| MITRE ATT&CK | T1190 · T1059 · T1505.003 |
| NIST SP 800-53 | SI-10 Information Input Validation · SI-15 Information Output Filtering |
| NIST CSF 2.0 | PR.PS Platform Security (secure development) |
| ISO/IEC 27001:2022 | A.8.28 Secure coding · A.8.26 Application security requirements |
| PCI DSS v4.0 | Req. 6.2.4 — Protect against injection and related software attacks |
| GDPR | Art. 32 Security of processing |
5. Completing the Picture — A06 through A10
Honest scope matters: the five above are the highest-ranked, but the list has ten. Below is the rest of the 2025 list, rendered from the same dataset. Note the second brand-new 2025 entry — A10 Mishandling of Exceptional Conditions — and the renamed A07 and A09.
| Rank | Category | Status | Core CWEs | Key controls |
|---|---|---|---|---|
| A06 | Insecure Design | down from #4 (2021) | CWE-657 · CWE-501 · CWE-602 | PL-8 Security and Privacy Architectures · A.8.25 Secure development life cycle · Req. 6.2 |
| A07 | Authentication Failures | renamed from 'Identification and Authentication Failures' (2021) | CWE-287 · CWE-306 · CWE-798 · CWE-384 | IA-2 Identification and Authentication (organizational users) · A.5.17 Authentication information · Req. 8 |
| A08 | Software or Data Integrity Failures | unchanged (#8, 2021) | CWE-502 · CWE-829 · CWE-494 · CWE-345 | SI-7 Software, Firmware, and Information Integrity · A.8.32 Change management · Req. 6.3 and Req. 11.5 |
| A09 | Security Logging and Alerting Failures | renamed from 'Security Logging and Monitoring Failures' (2021) | CWE-778 · CWE-223 · CWE-532 · CWE-117 | AU-2 Event Logging · A.8.15 Logging · Req. 10 |
| A10 | Mishandling of Exceptional ConditionsNEW | NEW in 2025 | CWE-755 · CWE-248 · CWE-390 · CWE-209 | SI-11 Error Handling · A.8.28 Secure coding · Req. 6.2.4 |
Spotlight: A10 Mishandling of Exceptional Conditions (NEW)
The genuinely novel 2025 addition. It covers uncaught exceptions that crash or fail-open, error messages that leak internals (CWE-209), and error conditions that are detected but not acted on (CWE-390). Its inclusion signals a shift toward resilience and fail-safe design, mapping to NIST 800-53 SI-11 and, for impact, ATT&CK T1499 (Endpoint DoS). Direct CVE mapping for this class is still maturing — which is exactly why it is worth watching.
6. The AI / LLM Dimension
Any 2026-relevant reading of these risks has to account for AI. Two forces are reshaping the list. First, AI-generated code re-introduces classic weaknesses at scale: assistants readily emit string-concatenated SQL (CWE-89), missing authorization (CWE-862), and weak crypto defaults, so A01, A04, and A05 re-surface in freshly-written code. Second, the model supply chain — pulled weights, unvetted model packages, and poisoned datasets — extends A03 Software Supply Chain Failures into the ML pipeline.
These are catalogued in their own right by the OWASP Top 10 for LLM Applications (e.g. prompt injection, insecure output handling, supply-chain and data poisoning for models) and by NIST's AI Risk Management Framework (AI RMF). For agentic systems that write and execute code, A05 Injection and A08 Integrity Failures converge: untrusted model output becomes an execution path. The practical takeaway — treat model output as untrusted input, and treat model artifacts as supply-chain dependencies.
7. Detection & Prevention You Can Run
Research should be reproducible at the defensive layer too. Each rule below ships as a runnable file, and the Semgrep rule ships with a semgrep --test fixture (true- and true-negative lines) so the "you can verify this" claim is literally checkable. Downloads: sqli.yaml · log4shell.yml · imds_ssrf.yml. Sigma ids are valid UUIDs (v4), so they pass sigma check / pySigma validation.
7.1 — Semgrep: SQL injection sink (A05, CWE-89)
rules:
- id: python-sqli-string-concat
languages: [python]
severity: ERROR
message: >
Possible SQL injection (OWASP A05:2025 / CWE-89): SQL built by string
formatting or concatenation. Use parameterised queries instead.
metadata:
owasp: A05:2025-Injection
cwe: CWE-89
references:
- https://cwe.mitre.org/data/definitions/89.html
patterns:
- pattern-either:
- pattern: $CUR.execute("..." % ...)
- pattern: $CUR.execute("..." + $X)
- pattern: $CUR.execute(f"...{$X}...")7.2 — Sigma: Log4Shell JNDI exploitation (A03, CVE-2021-44228)
title: Possible Log4Shell JNDI Exploitation Attempt (obfuscation-tolerant)
id: 99cf5ad3-8cea-4c54-9ac3-30bc81d5b93b # valid UUIDv4
status: experimental
description: Detects JNDI lookups incl. common Lookup-based obfuscations.
references:
- https://nvd.nist.gov/vuln/detail/CVE-2021-44228
- https://attack.mitre.org/techniques/T1190/
tags: [attack.initial_access, attack.t1190]
logsource:
category: webserver
detection:
jndi_plain:
c-uri|re: '(?i)\$\{jndi:(ldap|ldaps|rmi|dns|nis|iiop|corba|nds|http)s?:'
jndi_obfuscation_tokens: # ${${lower:j}ndi...}, ${::-j}, ${env:...}
c-uri|contains:
- '${${'
- '${lower:j'
- '${upper:j'
- '${::-j}'
- '${env:'
- '${sys:'
condition: jndi_plain or jndi_obfuscation_tokens
level: highFull coverage of arbitrarily-nested ${...} Lookups requires normalising the string before matching; this rule flags the tell-tale indicators, which is the pragmatic approach real Log4Shell rules took.
7.3 — Sigma: cloud metadata SSRF (A02 — the Capital One pattern, T1552.005)
title: Access to Cloud Instance Metadata Service via SSRF
id: 029b4967-bbf0-4716-8d75-b7e3ea8b4020 # valid UUIDv4
status: experimental
description: Flags application-originated requests to the IMDS endpoint.
references:
- https://attack.mitre.org/techniques/T1552/005/
tags: [attack.credential_access, attack.t1552.005]
logsource:
category: proxy
detection:
selection:
c-uri|contains:
- '169.254.169.254' # AWS/Azure/GCP IMDS (IPv4)
- '[fd00:ec2::254]' # AWS IMDS (IPv6)
- 'metadata.google.internal'
condition: selection
level: high8. A Note on CVSS v3.1 → v4.0
Every score in this paper is CVSS v3.1, because that is what the NVD primary analysis records for these CVEs. CVSS v4.0 (released by FIRST in late 2023) is now being adopted: it refines the base metrics, replaces the single Scope flag with explicit Vulnerable-system and Subsequent-system impact metrics, and adds Supplemental and Threat groups. That change is directly relevant to §3: v4.0's split impact metrics partially address the "one Boolean decides 9.8 vs 10.0" problem — but it still scores severity, not incidence, so the thesis stands. Mixing v3.1 and v4.0 numbers without labelling them is a common and misleading error; this paper avoids it by quoting v3.1 throughout.
9. Reproducibility & Downloads
The artifacts below are the original contribution of this page. All are released under CC BY 4.0 and are the same source of truth that renders the tables above — so the paper and its data cannot diverge. Everything in §3 is re-runnable from the two scripts.
Detection rules ship separately as runnable files: sqli.yaml (+ test fixture), log4shell.yml, imds_ssrf.yml. Load the ATT&CK layer at MITRE ATT&CK Navigator → "Open Existing Layer" → "Upload from local".
10. Appendix — Verified Score Provenance
Source: NVD REST API v2.0, retrieved 2026-07-08. Scores are the NVD primary (nvd@nist.gov) analysis unless noted.
| CVE | NVD v3.1 | Vector string | Note |
|---|---|---|---|
| CVE-2023-22515 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | CNA (Atlassian) = 10.0, v3.0, S:C |
| CVE-2021-44228 | 10.0 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H | Log4Shell |
| CVE-2024-3094 | 10.0 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H | XZ Utils backdoor |
| CVE-2014-0160 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N | Heartbleed; v2 = 5.0 |
| CVE-2023-34362 | 9.8 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H | MOVEit / Cl0p |
References
- OWASP Top 10:2025 — Open Worldwide Application Security Project (built from 175,000+ CVEs & 589 CWEs).
- NIST National Vulnerability Database and NVD REST API v2.0.
- MITRE CWE and MITRE ATT&CK.
- FIRST CVSS — v3.1 and v4.0 specifications.
- NIST SP 800-53 Rev.5, SSDF (SP 800-218), CSF 2.0.
- ISO/IEC 27001:2022; PCI DSS v4.0; GDPR.
- OWASP Top 10 for LLM Applications; NIST AI RMF.
- CISA Known Exploited Vulnerabilities Catalog; SLSA.
- FIRST EPSS (Exploit Prediction Scoring System) and CISA/CMU SSVC — prior art establishing that base-score severity is a weak proxy for actionable risk. Reproduction script: kev_experiment.py.