See continuous offensive security in action.
Book a 30-minute demo and watch the Equixly Agentic AI Hacker test your APIs, web apps, LLMs and MCP in a live environment.
Book a demoThe most consistently exploited API vulnerability - occurring when an application fails to verify that the user requesting an object actually has the right to access it, allowing attackers to enumerate identifiers and retrieve data belonging to other users without ever bypassing authentication.
Broken Object Level Authorization (BOLA) is a class of API vulnerabilities in which an application correctly verifies that a user is authenticated, but fails to verify that the user is authorized to access the specific data object they are requesting. It is consistently ranked as the most prevalent and most exploited of all API vulnerabilities, listed as API1 in the OWASP API Security Top 10 in both the 2019 and 2023 editions.
BOLA is sometimes referred to as Insecure Direct Object Reference (IDOR) in the context of web applications, though the two terms are not identical. BOLA is the API-specific formulation, and it accounts for how modern APIs expose object identifiers at scale across endpoints, services, and data models.
APIs routinely expose identifiers that reference specific data objects:
When a client makes a request to retrieve or modify a specific object, the API uses that identifier to locate and return the relevant data.
BOLA vulnerabilities exist when the API does not verify, at the point of that request, that the authenticated user making the request is actually permitted to access the object identified. The API confirms who the user is. It does not confirm whether this user is allowed to see that object.
An attacker exploiting BOLA does not need to bypass authentication. They are already authenticated as a legitimate user. They manipulate or enumerate the object ID, incrementing a numeric ID, substituting a UUID, or replacing one user’s reference with another’s. The API returns the data without checking whether the requesting user owns or has rights to that specific object.
Here is a concrete Broken Object Level Authorization example:
BOLA is structurally invisible to most automated security tools for a specific reason: The API response to a successful BOLA attack looks identical to the response to a legitimate request.
When a user requests their own order and receives a 200 OK response with the order data, the HTTP response is indistinguishable from the response an attacker receives when they request another user’s order using the same endpoint:
Nothing in the observable HTTP exchange signals that anything has gone wrong.
Traditional scanners work by matching request-response patterns against known vulnerability signatures. There is no signature for BOLA. The flaw is not in the request or the response; it is in the absence of an authorization check that should have occurred between the two.
Detecting BOLA vulnerabilities requires understanding the application’s data model, creating controlled test objects with known ownership boundaries, making cross-ownership requests, and verifying whether unauthorized access was, in fact, blocked.
This is why BOLA is both the most common of API vulnerabilities and the one most frequently missed by an automated tool. Finding it requires adversarial reasoning about how the application is designed to work, not pattern-matching against how requests look.
BOLA manifests differently depending on how an API exposes and handles object identifiers.
Sequential numeric identifiers The simplest and most easily exploited form. Object identifiers are integers assigned in sequence, such as 1024, 1025, and 1026. An attacker needs no knowledge of the system to enumerate them. Incrementing or decrementing the identifier is sufficient to test whether access controls exist.
UUID and non-sequential identifiers APIs that use UUIDs or other non-sequential identifiers make enumeration harder, but do not eliminate BOLA. If an attacker can obtain a valid identifier belonging to another user - through a separate API response, a shared link, a sensitive data leak, or a reference in another object - the underlying authorization failure remains exploitable. Non-sequential identifiers reduce discoverability but do not fix the vulnerability.
Indirect object references Some APIs do not expose the underlying identifier directly but use a reference that maps to it, such as a slug, a short code, or a human-readable identifier. The authorization failure can exist at any layer of that reference chain.
Cross-tenant BOLA In multi-tenant applications, BOLA can allow unauthorized access by one tenant to objects belonging to another. The severity is typically higher because the data involved is often sensitive information, and the boundary being crossed is between organizations rather than between individual users.
BOLA and BFLA (Broken Function Level Authorization, API5 in the OWASP API Security Top 10) are related but distinct.
In practice, both can be present in the same application, and distinguishing them matters for how they are remediated. For instance, BOLA is fixed by implementing object-level authorization checks. In contrast, BFLA is fixed by implementing function-level access controls.
BOLA has held the top position in the OWASP API Security Top 10 across both the 2019 and 2023 editions. This is not because it is the most technically sophisticated vulnerability. It is because it is structurally endemic to how APIs are built and because the testing methods that would reliably detect it are not part of standard automated scanning programs.
The 2023 edition of the OWASP API Security Top 10 also introduced Broken Object Property Level Authorization as a separate category (API3). It distinguishes between access to an entire object, which BOLA addresses, and access to specific properties within an object that should be restricted or read-only. These categories frequently co-occur in the same APIs.
Regulatory frameworks often create direct obligations around authorization testing that BOLA sits within.
Testing for BOLA requires a different approach from standard vulnerability scanning. The process involves:
BOLA is particularly well-suited to continuous penetration testing because the authorization logic it tests changes every time new data models, endpoints, or user roles are introduced. An API that correctly implements object-level authorization at launch may introduce BOLA when new resource types are added without the same authorization checks being applied consistently.
In a continuous penetration testing model, BOLA is tested against the API as it changes rather than at a fixed point in time. New endpoints are discovered automatically, cross-ownership tests are run against the current data model, and confirmed findings surface to the security team with the exploitability evidence needed to act on them immediately.
This matters because BOLA does not generate signals that a monitoring tool detects. There are no anomalous error codes, no unusual traffic patterns, no signatures to match. The only way to know whether BOLA exists is to test for it deliberately. And in an environment where APIs change continuously, that testing needs to be continuous too.
Equixly tests for BOLA by reasoning about the API’s data model and authorization structure the way an attacker does, not by matching request patterns against signatures. It creates controlled test objects, attempts cross-ownership access across the full API surface, and confirms exploitability before surfacing any findings.
Since Equixly operates continuously, BOLA is tested every time material changes occur in the API. The false positive rate for BOLA findings is zero. Every finding represents a confirmed case of cross-ownership access, demonstrated with the specific request, identifier, and response that proves the vulnerability exists in the current environment.