OWASP API Security Top 10 in 2026: Every Risk Explained With Testing Strategies
Key Takeaways
- The OWASP API Security Top 10 targets risks specific to API architectures — authorization flaws, data exposure, and resource abuse that traditional web scanners miss.
- BOLA (Broken Object Level Authorization) remains the #1 API risk and is notoriously hard to detect with automated tools — manual testing with business logic context is essential.
- API3 (Broken Object Property Level Authorization) and API5 (Broken Function Level Authorization) are authorization variants that require different testing approaches.
- Rate limiting (API4) and unrestricted resource consumption are operational risks that need load testing, not just security scanning.
- Server-Side Request Forgery (API7) moved into the API Top 10 reflecting the rise of microservice architectures where APIs call other APIs.
- Most teams need a combination of automated scanning (ZAP, Burp), manual authorization testing (Autorize), and API-specific tools (Akto, Postman security tests).
The OWASP Top 10 for web applications gets all the attention. But if your architecture is API-first — and in 2026, most are — the OWASP API Security Top 10 is the list that actually maps to your attack surface.
APIs have different failure modes than traditional web apps. Authorization bugs that would never exist in a server-rendered application are endemic in REST and GraphQL APIs. Data exposure happens not through XSS but through overly verbose response payloads. Rate limiting failures that a web app handles with CAPTCHA become critical when bots can hit your endpoints at thousands of requests per second.
This guide walks through every risk in the OWASP API Security Top 10 (2023 edition, still current in 2026), explains what it looks like in real code, and gives you concrete testing strategies for each one.
API1:2023 — Broken Object Level Authorization (BOLA)
BOLA is the single most common API vulnerability. It happens when an API endpoint accepts an object identifier from the client and doesn't verify that the authenticated user has permission to access that specific object.
What it looks like
GET /api/v1/orders/12345
Authorization: Bearer <user-A-token>
If user A can retrieve user B's order by changing 12345 to 12346, that's BOLA. The API authenticates the user (they have a valid token) but doesn't authorize the specific object access.
Why it's #1
Every API that uses object IDs in URLs or request bodies is potentially vulnerable. Developers often implement authentication middleware but forget per-object authorization checks. The attack requires zero sophistication — just increment an ID.
Testing strategy
- Manual testing: Create two test accounts. Authenticate as user A, capture requests, replace object IDs with objects belonging to user B. The Burp Suite Autorize extension automates this pattern.
- Automated: Tools like Akto can detect BOLA patterns if you provide OpenAPI specs with authentication context. OWASP ZAP's API scan can catch obvious cases but struggles with business logic authorization.
- Code review: Search for database queries that use user-supplied IDs without a WHERE clause filtering by the authenticated user's ID or role.
API2:2023 — Broken Authentication
API authentication mechanisms are often implemented incorrectly, allowing attackers to compromise tokens, exploit implementation flaws, or bypass authentication entirely.
Common patterns
- Weak JWT signing (using
HS256with a guessable secret, or acceptingnonealgorithm) - No token expiration or excessively long-lived tokens
- API keys transmitted in URLs (logged in server access logs, browser history, proxy logs)
- Password reset endpoints that don't rate-limit or use predictable tokens
- Missing authentication on internal-facing endpoints that become externally accessible
Testing strategy
- JWT testing: Use our JWT security testing guide — test for algorithm confusion, weak secrets (hashcat against HS256 tokens), missing expiration, and signature stripping.
- Credential stuffing: Test rate limiting on login endpoints. Can you make 1000 login attempts in a minute?
- Token lifecycle: Verify tokens expire, refresh tokens rotate, and revoked tokens are actually rejected.
API3:2023 — Broken Object Property Level Authorization
This risk covers two related problems: excessive data exposure (the API returns more properties than the client needs) and mass assignment (the API accepts more properties than it should).
Excessive data exposure example
GET /api/v1/users/me
Response: {
"id": 123,
"name": "Alice",
"email": "alice@example.com",
"role": "user",
"ssn": "XXX-XX-XXXX", // shouldn't be here
"internal_notes": "VIP", // shouldn't be here
"password_hash": "bcrypt..." // definitely shouldn't be here
}
Mass assignment example
PUT /api/v1/users/me
Body: { "name": "Alice", "role": "admin" } // role shouldn't be writable
Testing strategy
- Data exposure: Inspect every API response for fields that shouldn't be visible to the requesting user. Compare responses between admin and regular user roles.
- Mass assignment: Add unexpected fields to PUT/PATCH/POST requests —
role,is_admin,balance,verified. Check if the API silently accepts and persists them. - Automated: Burp Suite's content discovery and parameter mining can identify hidden fields. Postman collection tests can validate response schemas against expected field lists.
API4:2023 — Unrestricted Resource Consumption
APIs that don't limit resource consumption are vulnerable to denial of service, brute force attacks, and cost-based attacks (running up cloud bills by triggering expensive operations).
What to test
- Rate limiting: Does the API enforce request limits per user/IP? Test with a simple loop — if you can make 10,000 requests without being throttled, there's no rate limiting.
- Payload size: Send a 100MB JSON body. Does the API reject it or try to parse it?
- Query complexity: For GraphQL APIs, send deeply nested queries. For REST APIs with filtering, send queries that would trigger full table scans.
- Pagination: Request
?limit=1000000. Does the API cap it or return a million records? - File uploads: Upload a 10GB file. Is there a size limit enforced server-side?
Testing strategy
- Load testing: Tools like k6, Artillery, or Locust can simulate high request volumes. This is operational testing, not traditional security scanning.
- GraphQL: Use graphql-cop or InQL (Burp extension) to test for query depth and complexity limits.
- Cost analysis: Identify endpoints that trigger expensive operations (email sending, PDF generation, external API calls) and test if they're rate-limited independently.
API5:2023 — Broken Function Level Authorization
BFLA is the function-level cousin of BOLA. Instead of accessing another user's objects, the attacker accesses administrative functions they shouldn't have access to.
What it looks like
# Regular user discovers admin endpoint
DELETE /api/v1/admin/users/456
Authorization: Bearer <regular-user-token>
# Or HTTP method tampering
GET /api/v1/users/456 → 200 OK (allowed)
DELETE /api/v1/users/456 → 200 OK (shouldn't be allowed)
Testing strategy
- Endpoint discovery: Use the OpenAPI/Swagger spec (if available) to identify all endpoints, then test each one with tokens from different privilege levels.
- Method tampering: For every GET endpoint, try PUT, POST, DELETE, PATCH. Many frameworks route these to different handlers with different (or missing) authorization checks.
- Path manipulation: Try
/api/v1/admin/users,/api/internal/users,/api/v2/users— hidden or versioned endpoints often lack authorization.
API6:2023 — Unrestricted Access to Sensitive Business Flows
Some API endpoints implement business flows that can cause harm when used excessively — even if each individual request is legitimate. Ticket scalping, automated account creation, and coupon abuse are examples.
Testing strategy
- Business logic review: Identify flows that have real-world value (purchasing, referral bonuses, free tier abuse) and test if they can be automated at scale.
- Bot detection: Test if the API distinguishes between human and automated access. CAPTCHA on web forms doesn't help if the API endpoint is directly accessible.
- Rate limiting per flow: Even if global rate limiting exists, test if business-critical flows have their own stricter limits.
API7:2023 — Server Side Request Forgery (SSRF)
SSRF in APIs is increasingly common because microservice architectures have APIs calling other APIs. Any endpoint that accepts a URL or hostname as input is a potential SSRF vector.
Common API SSRF patterns
- Webhook registration endpoints that fetch a user-supplied URL
- File import from URL (PDF generation, image processing)
- API gateway configurations that proxy requests based on user input
Testing strategy
- Internal network probing: Supply URLs pointing to
http://169.254.169.254(cloud metadata),http://localhost:PORT, and internal hostnames. - Protocol smuggling: Try
file:///etc/passwd,gopher://,dict://protocols. - DNS rebinding: Use a DNS rebinding service to bypass allowlist checks that only validate at DNS resolution time.
- See our SSRF deep dive for comprehensive testing techniques.
API8:2023 — Security Misconfiguration
API-specific misconfigurations that don't appear in traditional web app testing:
- CORS: Overly permissive
Access-Control-Allow-Originheaders (wildcards with credentials). See our CORS misconfiguration guide. - HTTP methods: Unnecessary methods enabled (TRACE, OPTIONS returning too much info).
- Error messages: Stack traces, database errors, or internal paths leaked in API error responses.
- Default credentials: API management platforms (Kong, Tyk, API Gateway) with default admin credentials.
- Missing security headers: API responses missing
X-Content-Type-Options,Cache-Controlfor sensitive data. See our security headers guide.
Testing strategy
- Automated scanning: OWASP ZAP and Nuclei both have templates for common API misconfigurations.
- Header analysis: Check every API response for missing security headers and information leakage.
- Error triggering: Send malformed requests, invalid content types, and oversized payloads to trigger error handling paths.
API9:2023 — Improper Inventory Management
Organizations lose track of which API versions and endpoints are deployed. Old API versions with known vulnerabilities remain accessible. Internal APIs get exposed externally. Documentation falls out of sync with reality.
Testing strategy
- Version enumeration: If the current API is
/api/v3/, test/api/v1/and/api/v2/. Older versions often lack security fixes applied to the current version. - Subdomain enumeration: Use subdomain enumeration tools to discover API hosts —
api-staging.example.com,api-internal.example.com,api-dev.example.com. - Documentation diff: Compare the published API documentation against actual endpoint behavior. Undocumented endpoints are often unprotected.
API10:2023 — Unsafe Consumption of Third-Party APIs
Your API trusts data from third-party APIs without validation. If a third-party API is compromised or returns unexpected data, your API becomes vulnerable.
Common patterns
- Trusting third-party webhook payloads without signature verification
- Using third-party API responses in database queries without sanitization
- Following redirects from third-party APIs without URL validation
- Deserializing third-party responses without schema validation
Testing strategy
- Input validation: If you can control or intercept third-party API responses (via proxy), inject SQL, XSS, and command injection payloads in the response data.
- Webhook spoofing: Send fake webhook payloads to your API's webhook endpoints. Are they accepted without signature verification?
- Dependency mapping: Document all third-party API dependencies and assess what happens if each one returns malicious data.
Putting It All Together: An API Security Testing Workflow
Testing for the full API Security Top 10 requires a layered approach:
- Reconnaissance: Gather OpenAPI specs, enumerate endpoints, identify API versions. Use your recon workflow.
- Automated scanning: Run OWASP ZAP or Burp Suite against the API with authentication configured. This catches API8 (misconfiguration), parts of API2 (authentication), and some API7 (SSRF) issues.
- Authorization testing: Manually test BOLA (API1), BFLA (API5), and property-level authorization (API3) using multi-account testing. Autorize (Burp extension) helps scale this.
- Business logic testing: Review API6 (sensitive business flows) and API10 (unsafe consumption) through threat modeling and manual testing.
- Operational testing: Test API4 (resource consumption) with load testing tools. This is often skipped but critical for APIs exposed to the internet.
- Inventory audit: Check API9 by enumerating old versions, staging environments, and undocumented endpoints.
Tools for API Security Testing in 2026
| Tool | Best For | API Top 10 Coverage | Cost |
|---|---|---|---|
| Burp Suite Pro + Autorize | BOLA/BFLA testing | API1, API2, API3, API5, API7, API8 | $449/yr per user |
| OWASP ZAP | Automated API scanning | API2, API7, API8 | Free |
| Akto | API-specific security testing | API1, API2, API3, API5, API9 | Free tier available |
| Postman | API functional + security tests | API2, API3, API4 | Free tier available |
| Nuclei | Template-based API scanning | API2, API7, API8 | Free |
| k6 / Artillery | Rate limiting and resource testing | API4, API6 | Free / Freemium |
| SecurityClaw | Automated skill-based API testing | API1, API2, API7, API8 | Platform access |
Frequently Asked Questions
Is the OWASP API Security Top 10 the same as the OWASP Top 10?
No. The OWASP Top 10 covers general web application risks (injection, XSS, misconfiguration). The API Security Top 10 focuses on risks specific to API architectures — authorization flaws, data exposure patterns, and resource consumption issues that are unique to APIs. There's some overlap (SSRF, misconfiguration) but the API list addresses problems that don't exist in traditional server-rendered web applications.
How often is the OWASP API Security Top 10 updated?
The first version was released in 2019, and the current version (2023) is the second edition. Updates happen roughly every 3-4 years based on real-world API breach data and community input. The 2023 edition is still current in 2026.
Can automated scanners detect all OWASP API Security Top 10 risks?
No. Automated scanners are effective for API2 (authentication flaws), API7 (SSRF), and API8 (misconfiguration). But the authorization risks — API1 (BOLA), API3 (property-level authorization), and API5 (BFLA) — require business logic context that automated tools can't fully understand. API4 (resource consumption) needs load testing tools, not security scanners. A realistic API security program combines automated scanning with manual authorization testing and operational testing.
What's the difference between BOLA and BFLA?
BOLA (API1) is about accessing objects you shouldn't — viewing another user's order, downloading another user's file. BFLA (API5) is about accessing functions you shouldn't — calling admin endpoints, using DELETE when you should only have GET access. BOLA is horizontal privilege escalation (same role, different user's data). BFLA is often vertical privilege escalation (regular user accessing admin functions).