How it works
The explanation, with examples you can run.
The 2025 list
- A01 Broken Access Control. Users acting outside their permissions: reading other users' records by changing an ID, calling admin APIs, missing checks on some HTTP methods. Server-side request forgery and CSRF now map here too.
- A02 Security Misconfiguration. Default accounts, verbose errors, open cloud storage, unnecessary features switched on, missing security headers. Up from fifth in 2021.
- A03 Software Supply Chain Failures. Vulnerable or malicious dependencies, compromised build systems and distribution channels. It broadens 2021's "vulnerable and outdated components".
- A04 Cryptographic Failures. Sensitive data sent or stored without proper protection, weak or home-made crypto, poor key management, predictable randomness.
- A05 Injection. Untrusted input interpreted as code or commands: SQL, OS commands, LDAP, template engines, and cross-site scripting.
- A06 Insecure Design. Flaws that no amount of correct code fixes: missing rate limits on a password-reset flow, business logic that can be abused, no threat model.
- A07 Authentication Failures. Credential stuffing, weak password rules, missing MFA, session IDs that don't rotate or expire.
- A08 Software or Data Integrity Failures. Trusting code, updates or serialized data without checking integrity: unsigned updates, insecure deserialisation, CI pipelines that run unverified code.
- A09 Security Logging and Alerting Failures. Attacks that aren't logged, logs nobody watches, alerts that never fire. The name now stresses alerting, not just monitoring.
- A10 Mishandling of Exceptional Conditions. New in 2025. Errors and edge cases handled unsafely: failing open, leaking stack traces, leaving state half-changed after an exception.
How to use it
- In design reviews: walk the categories as prompts alongside STRIDE. A06 is a reminder that some problems need design changes, not patches.
- In code review: most teams can catch A01, A05 and A10 patterns in a pull request if reviewers look for them: an object fetched by ID without an ownership check, string-built queries, a
catchthat swallows errors around a security decision. - In the pipeline: dependency scanning and SBOMs for A03, configuration scanning for A02, secret scanning for A04.
- In training: the Top 10 is a sensible curriculum, which is why the next topics take its two most common categories, injection and access control, in more detail.
What it is not: a compliance standard, a complete list, or a ranking of every bug your app might have. A clean scan against "the Top 10" says little about A06 or A01, which need people who understand the application.
Check yourself
3 questions. Get them all right to finish this topic.
0 of 3 right so far. Get all three to finish this topic.