A01 — Broken Access Control (OWASP Top 10:2025)
Introduction
Access control enforces who can do what. When access controls are incomplete, inconsistent, or enforced only on the client side, attackers can escalate privileges, view other users’ data, or perform admin actions. OWASP’s 2025 edition keeps Broken Access Control at the top — it’s the most common category in their dataset and includes many mapped CWEs (40 CWEs for this category). OWASP Foundation
Why it matters (impact)
- Data breach: exposure of user or system data.
- Privilege escalation: attackers act as admins or other users.
- Business logic abuse: unauthorized actions that break pricing, refunds, or order flows.
- High CVE linkage: the category has the highest occurrence count and many CVEs linked. OWASP Foundation
Common attack patterns (real examples)
- Insecure direct object references (IDOR): changing an
idparameter to access another user’s record (e.g.,?acct=12345→?acct=12346). - Force browsing: guessing admin URLs that are not access-controlled.
- Client-side-only enforcement: JS hides admin UI but API endpoints don’t check server-side roles.
- JWT/Cookie tampering: replaying or modifying tokens to escalate privileges. OWASP Foundation
How to test / detect (practical steps)
- Inventory endpoints: list all endpoints (web + API) and required roles.
- Automated scans: run authenticated scans with tools (Burp Suite, ZAP) configured with multiple user roles.
- Manual IDOR checks: fuzz object identifiers, try force-browsing common admin paths.
- Authorization unit tests: add test cases that attempt actions under different roles.
- CI checks: include tests that exercise role-based flows in pipelines.
Commands / snippets
Example curl to test endpoint as unauthenticated user:
Burp Intruder or Repeater: fuzz
idfields and observe status codes/response differences.
Developer-first remediation checklist
- Deny by default — only allow explicit permissions; no “allow all” fallbacks.
- Enforce server-side checks — never rely on client-side enforcement.
- Centralize authorization logic — single library/middleware so checks aren’t duplicated and missed.
- Use least privilege — role-minimization and resource ownership checks (record-level).
- Protect sensitive endpoints — rate limits, MFA for admin operations, log anomalies.
- Short-lived tokens & revocation — JWTs should have short lifetimes; implement revocation where possible.
- Add automated tests — unit & integration tests covering negative authorization cases.
- Audit & alert — log authorization failures and alert on repeated attempts. OWASP Foundation
Example: Node/Express middleware for record-level check

on routes that return user-owned resources so checks happen on server-side always.
Detection & monitoring (ops)
- Log any 403/401 spikes and map them to IPs and accounts.
- Alert on successful access to admin endpoints from non-admin IPs or outside normal business hours.
- Use WAF rules to block obvious force-browsing patterns while fixing root causes.
Final notes & resources
Broken Access Control is still the top-ranked risk in OWASP Top 10:2025 — it’s widely tested and widespread, so it’s worth prioritizing in your backlog. For the canonical description, CWEs, and deep mitigation guidance, see the OWASP A01:2025 page. OWASP Foundation
Further reading / links: OWASP Proactive Controls → Implement Access Control; OWASP Authorization Cheat Sheet. OWASP Foundation
