Broken Object-Level Authorization (BOLA): Still #1
Broken Object-Level Authorization (BOLA) — the API equivalent of IDOR — has been the number-one risk in two consecutive OWASP API Top 10 revisions (2019 and 2023). It is not going away. The reason is structural: every REST endpoint that takes an object identifier in the URL needs its own authorization check, and missing one is a single-line bug invisible to scanners.
APIs · By Thimmagurudu Bathini · Published · 6 min read · Last reviewed
Why BOLA persists
Modern APIs have hundreds of endpoints. Authorization is usually implemented as middleware that checks the authenticated user, sometimes as decorators that check role. Object-level checks ("is this user authorized for this specific object?") are usually implemented inline in the handler — and inline checks are the kind that get missed when developers are busy.
How we test systematically
We do not test endpoints. We test object types. For each object type the application exposes (user, order, invoice, file, comment, ...), we enumerate every endpoint that reads or modifies it. Then we authenticate as two users in separate tenants and verify that user A cannot reach user B's objects through any of those endpoints.
For object type: invoice
Endpoints:
GET /api/invoices/:id — read one
PATCH /api/invoices/:id — modify
DELETE /api/invoices/:id — delete
GET /api/invoices/:id/items — sub-resource
POST /api/invoices/:id/pay — action
GET /api/exports/invoice/:id — async
For each: authenticate as user A, request user B's invoice ID, expect 403.
Where BOLA hides
Async exports, batch endpoints, webhook callbacks, file downloads via signed URLs that ignore the original session, search endpoints that return objects without re-authz, GraphQL nested resolvers. All are common findings.
The fix is structural: centralize authorization, treat the authenticated user as a mandatory parameter to every query. See API security testing.
Written by Thimmagurudu Bathini, BERRY9 IT SERVICES PRIVATE LIMITED, Hyderabad. Questions about your own systems? Request a scoping call or call +91 86868 92922.
Plan your next security test
Tell us what needs testing and when you need it done, and we will propose a scope and timeline. We respond within 24 hours. If you would rather talk first, call or write to us.
- +91 86868 92922
- contact@berry9.com
- H.No: 8-3-945/A/12 & 13, Sri Venkata Sai Nest Apartments, Nagarjuna Nagar Colony, Yellareddyguda, Hyderabad 500073, Telangana