The differences at a glance

BOLABFLABOPLA
OWASP 2023API1API5API3
What is not checkedwhether the user may see or change exactly this objectwhether the role may perform this functionwhether the user may read or write this individual field
Typical exampleGET /orders/1002 instead of your own order 1001a regular user calls DELETE /admin/users/7PATCH /users/me with "role": "admin", or the response contains an internal field
Consequenceaccess to other users' dataadmin actions without admin rightsindividual fields are exposed or manipulated

One question to classify them

If you want to classify a finding, a single question helps: what should the API have checked?

  • Which object? The user accesses someone else's record: BOLA.
  • Which action? The user performs a function their role is not entitled to: BFLA.
  • Which field? Access to the object is allowed, but not to each of its properties: BOPLA.

They often occur together. An endpoint can return other users' objects (BOLA) and expose too many fields at the same time (BOPLA).

Why scanners miss all three

From a scanner's point of view, each of these flaws looks like normal behavior. The API responds with 200 OK and valid JSON, without an error message and without a suspicious pattern. Whether the response is a flaw depends solely on who owns the object, which role the caller has and which fields they may see. This knowledge lives in the business logic, not in a signature.

On top of that, many scanners test with a single identity. Authorization flaws only show up in comparison. What may user A do, what may user B do, and what may an admin do?

How to test all three

Authorization flaws are found with at least two test identities, better with several roles. The principle is always the same: create something as identity A, access it as identity B.

  • BOLA: Read, change and delete user A's object IDs with user B's token.
  • BFLA: Call every function with every role, including admin endpoints and other HTTP methods on the same path, such as DELETE instead of GET.
  • BOPLA: Check responses for fields the role may not see, and send additional fields when writing (mass assignment).

This creates a matrix of identities, endpoints and methods that grows with every release. Venedy runs exactly this matrix automatically: an AI plans the attacks across multiple identities, and every finding comes with the HTTP evidence. How Venedy works

Frequently asked questions

Is IDOR the same as BOLA?

Essentially, yes. IDOR (Insecure Direct Object Reference) is the older term from the world of web applications. In the OWASP API Top 10, the same problem is called BOLA.

Which of the three flaws is the most common?

BOLA ranks first in the OWASP API Top 10. OWASP describes it as extremely common in API-based applications.

Can an API gateway prevent these flaws?

Partly. A gateway enforces authentication, scopes and access to entire endpoints, and so catches many BFLA cases. Whether a user may see a specific object or field, however, is usually known only to the application itself. BOLA and BOPLA therefore have to be checked in the API and tested regularly.

Sources

Read on