The OWASP API Top 10
A short list of the API bugs that actually pay, ranked by how often they land.
What you will learn
- -Name the API Top 10 categories and what each one looks like in a request
- -Explain why authorization bugs dominate the list
- -Pick the right first tests when you land on a new API
The web app Top 10 and the Top 10 are different lists, and testing an API with the web list will make you miss the bugs that matter. OWASP built a separate API Security Top 10 (current edition 2023) because APIs fail in their own ways. The headline: the top two entries are both broken , and together they account for most real API breaches.
Here is the list, in the order OWASP ranks it, with what each one means when you have a request in front of you.
API1 Broken Object Level Authorization (BOLA). The checks you are logged in but not that the object you asked for is yours. GET /api/orders/8890 returns someone else's order. This is the single most exploited API bug, and it gets its own lesson next.
API2 Broken . Weak or missing checks on who you are. JWTs accepted with alg:none, no rate limit on login so stuffing runs free, reset you can guess, tokens that never expire.
API3 Broken Object Property Level Authorization. Two failures in one. Mass assignment (you send "isAdmin":true and the server binds it) and excessive data exposure (the returns the full user object including password_hash and ssn, trusting the UI to hide them). Read every field in every response.
API4 Unrestricted Resource Consumption. No limits. One request triggers a huge export, an unbounded ?limit= returns the whole table, no throttling lets you . This is how you turn a slow endpoint into a denial of service or a data dump.
API5 Broken Function Level Authorization (BFLA). You can call admin functions as a normal user. The UI hides the delete button, but DELETE /api/admin/users/5 still works because the server only gated the button, not the route. Swap the or hit the admin path directly.
API6 Unrestricted Access to Sensitive Business Flows. Automation abuse. Buy every concert ticket, drain a promo code, mass-create accounts. The endpoint works as designed, but there is nothing stopping a script from running it ten thousand times.
API7 Server Side Request Forgery. The API fetches a you supply. Point it at http://169.254.169.254/latest/meta-data/ and you may pull cloud credentials off the metadata service. Any field named url, callback, webhook, or image_url is a candidate.
API8 Security Misconfiguration. Verbose traces, missing restrictions, debug endpoints left live, default credentials on an admin panel. Cheap to find, often high .
API9 Improper Inventory Management. The forgotten /api/v1/ still running next to /api/v2/, a staging. with no auth, an internal endpoint exposed to the internet. Old versions rarely the fixes the current one did.
API10 Unsafe Consumption of APIs. Your target trusts a third-party API blindly and passes its data through without validation. You attack the weaker upstream to reach the stronger downstream.
Where to start
Do not test top to bottom. Test by payoff. On a fresh API, your first three moves are almost always the same.
$GET /api/orders/8889 (you own 8890)$PATCH /api/users/me {"role":"admin"}$DELETE /api/admin/users/5 as a normal userRun these against OWASP crAPI, VAmPI, or a you have written permission to test. Probing a live third-party API for BOLA is unauthorized access, and iterating across another user's data is the part prosecutors point at.
The pattern under the whole list: APIs assume the behaves. Authorization is the check developers skip because the front end already hid the option, and the front end is not your problem.
Which category sits at number one on the OWASP API Security Top 10, and why?