By NHI Mgmt Group Editorial TeamBased on Cerbos: “Broken access control still tops the list: OWASP top 10 2025” (November 20, 2025)

TL;DR: Broken access control remains OWASP's top application security risk in the 2025 Top 10, with OWASP citing an average 3.73% of tested applications containing one or more CWEs in the category, according to Cerbos. Ad-hoc role checks and code-embedded authorization no longer scale across microservices, APIs, and machine identities.


At a glance

What this is: This is an analysis of why broken access control still leads OWASP's application security rankings and why policy-driven authorization is the practical response.

Why it matters: It matters because IAM and security teams need authorization that is consistent, auditable, and able to govern object-level access across apps, APIs, and non-human identities.

By the numbers:

  • Broken Access Control maintains its position at #1 as the most serious application security risk, and on average 3.73% of applications tested had one or more of the 40 CWEs in this category.

Context

Broken access control is the failure mode that appears when a system lets a subject do more than it should on a resource, object, or action. In application-heavy environments, that failure spreads across inline role checks, object ownership rules, tenant boundaries, and API enforcement points, which makes the problem as much a governance issue as a code defect.

The article argues that the old pattern of embedding access logic directly in application code does not hold up as architectures become more distributed. Once microservices, APIs, and machine identities enter the picture, authorization decisions need to be consistent, centrally governed, and easy to audit across every request path.


Key questions

Q: How should security teams prevent broken access control in modern applications?

A: Security teams should move authorization out of scattered code and into a centrally governed policy model. That approach makes access rules consistent across services, easier to test, and easier to audit. It also reduces the risk that different teams will implement conflicting permission logic for the same resource or action.

Q: Why do microservices and APIs make broken access control harder to control?

A: Microservices and APIs multiply the number of places where authorization can fail. When permission logic is duplicated across services, the same user or machine identity can be treated differently depending on which endpoint it reaches. That creates drift, weak auditability, and a much larger attack surface.

Q: What are the signs that authorization logic is failing?

A: Common signs include repeated role-check branches, inconsistent decisions between services, manual exceptions, and difficulty explaining why a user could act on a specific object. If reviewers cannot trace the decision path, governance is already too fragmented.

Q: How should teams govern authorization in complex application estates?

A: They should use centrally managed policy with versioning, decision logging, and consistent enforcement across all entry points. That approach makes access decisions auditable and reduces the chance that one team or service drifts away from the intended control model.


Technical breakdown

Why inline role checks fail in modern applications

Inline access logic hard-codes authorization into application code, often through role checks, object comparisons, or conditional branches. That approach tends to fragment as teams add services, tenants, and bespoke exceptions, because every new path becomes another place where enforcement can drift. The result is inconsistent decisions, duplicated logic, and a wider chance of broken object-level authorization. When the control lives in code, testing, review, and auditability all become harder at the same time.

Practical implication: move authorization decisions out of scattered application branches and into a centrally governed policy layer.

How policy-driven authorization supports object-level control

Policy-driven authorization externalizes access logic so that resource, subject, and context can be evaluated in one place. That matters for object-level access because the question is not only who the user is, but which object they are allowed to read, update, or delete under the current conditions. Attribute-based rules can express ownership, region, tenant, and threshold constraints more cleanly than hand-built code checks, which reduces the chance of force-browse and identifier tampering abuse.

Practical implication: define object-level rules in policy rather than relying on application developers to implement each check consistently.

Why auditability becomes a control requirement

As access control spreads across microservices, API gateways, and worker services, the programme needs evidence, not just enforcement. A policy repository, versioning, decision logs, and simulation or testing are what turn authorization from a local implementation detail into a governable control. That is why Broken Access Control is not just an application bug category. It is a signal that authorization governance has to be centrally owned, reviewable, and repeatable across the estate.

Practical implication: treat policy versioning, decision logging, and review as part of the authorization control, not optional extras.


NHI Mgmt Group analysis

Broken access control is a governance failure, not just a coding flaw. The persistence of this issue shows that authorization logic still lives too close to application implementation in many programmes. Once access rules are scattered across services and teams, consistency breaks down and exceptions multiply, so the control itself becomes hard to trust. The practical conclusion is that authorization needs central ownership and lifecycle governance, not just developer awareness.

Object-level authorization is where modern applications still leak. The article's examples point to the recurring gap between role membership and permission to act on a specific resource. That gap widens in multitenant and API-heavy environments because object identity, ownership, and context are harder to enforce in every code path. Practitioners should recognise this as an entitlement design problem, not a one-off defect.

Policy-centric authorization is the named concept that matters here. This is the shift from embedded role logic to centrally governed rules that can express subject, resource, action, and context together. That model is the only one that can scale across microservices and machine identities without multiplying bespoke checks. The implication for teams is to treat authorization architecture as part of identity governance, not as a local application feature.

Machine identities expand the access-control surface without simplifying accountability. The article correctly notes that modern architectures now include APIs and machine identities, which increases the number of decision points that must be governed. When non-human actors participate in request flows, weak authorization no longer just risks overexposure. It also obscures who or what is allowed to act, which makes audit and review much harder. Teams should align authorization governance with the identities that actually execute the workload.

Broken access control persists because many programmes still optimise for developer convenience over governable control. Ad hoc checks are easy to write and difficult to govern at scale, especially when security review happens after the fact. The article's core lesson is that audit-friendly authorization must be designed in from the start, or organisations will keep rediscovering the same failure in new architectures. Security leaders should reframe authorization as an operating model decision.

What this signals

Policy-driven authorization is becoming the control plane for application access. As applications spread across microservices, APIs, and non-human workflows, the real risk is no longer just incorrect code. It is uncontrolled variation in who can do what, where, and under which conditions, which is exactly the kind of drift that central policy models are meant to suppress.

For IAM and IGA teams, the lesson is to govern permissions at the object and context level. Role assignment alone cannot describe ownership, tenant boundaries, or risk-sensitive actions in modern application estates. That means authorization design has to sit alongside lifecycle governance, not downstream from it.


For practitioners

  • Centralise authorization policy Move access rules out of scattered application branches and into a single governed policy layer that can be reviewed, versioned, and tested across services.
  • Map object-level access paths Inventory where users can read, update, delete, or manipulate specific objects and look for force-browse, identifier tampering, and ownership bypass opportunities.
  • Define contextual policy attributes Capture ownership, tenant, region, 2FA status, and approval thresholds as policy inputs so decisions can reflect the real business context of each request.
  • Add policy decision logging Record allow and deny outcomes with the attributes that drove each decision so reviewers can trace why access was granted or blocked.
  • Test authorization before rollout Use policy simulation and sandboxed testing to validate new rules before they reach production paths that handle sensitive resources.

Key takeaways

  • Broken access control persists because authorization logic is still too often embedded in application code rather than governed centrally.
  • OWASP's 2025 Top 10 keeps the issue at #1, and the article cites an average of 3.73% of tested applications with one or more CWEs in the category.
  • Policy-driven, object-aware authorization is the practical way to reduce drift, improve auditability, and make access control scalable across modern architectures.

Standards & Framework Alignment

This section maps relevant standards and security frameworks to the operational risks and controls described in this guidance.

OWASP API Security Top 10 addresses the attack and risk surface, while OWASP ASVS, NIST CSF 2.0 and CIS Controls v8 set the governance and control requirements practitioners need to meet.

FrameworkControl / ReferenceRelevance
OWASP API Security Top 10API1 — Broken Object Level AuthorizationThe article directly discusses object-level access failures across APIs and services.
Recommendation — Enforce object-level authorization checks for every API request and reject implicit trust in object identifiers.
OWASP ASVSV8 — AuthorizationThe article is about application authorization design and verification.
Recommendation — Verify that authorization rules are centralised, testable, and consistently applied across application entry points.
NIST CSF 2.0PR.AA-05 — Access Permissions, Entitlements and AuthorizationsThe article focuses on governing permissions and entitlement decisions across systems.
Recommendation — Align entitlement decisions to PR.AA-05 and document who can do what under which conditions.
CIS Controls v8CIS-5 — Account ManagementBroken access control often stems from weak governance of accounts, roles, and entitlements.
Recommendation — Review account and entitlement assignments regularly to remove unnecessary access paths and reduce drift.

Key terms

  • Broken Access Control: Broken access control occurs when a system fails to restrict what an authenticated user, service, or workload can do. The issue often appears as missing checks, inconsistent enforcement, or excessive permissions. It is a structural weakness because attacks exploit the gap between verified identity and permitted action.
  • Policy Driven Authorization: A policy driven authorization model makes access decisions from centrally defined rules rather than hard coded application logic. It lets teams express who can do what, under which conditions, and across changing business contexts. This approach is designed to be flexible enough for new use cases without forcing application rewrites.
  • Object Level Authorization: Object level authorization controls access to individual records or resources, not just to an endpoint. It prevents users from reaching data that is technically available through a route but should remain hidden according to policy, role, or ownership. This is a key safeguard against broken access control.
  • Auth drift: Auth drift is the gap between an authentication implementation and the real identity model it is supposed to enforce. It often appears when generated code, schema assumptions, and tests all agree with one another, but none of them match live users, real credentials, or production lookup paths.

Deepen your knowledge

NHI governance, agentic AI identity, and machine identity lifecycle are core topics in our NHI Foundation Level course, the industry's only accredited NHI security programme. If you are building or maturing an IAM programme, it is worth exploring.
NHIMG Editorial Note
Published by the NHIMG editorial team on June 11, 2026.
Updated on October 6, 2026.
NHI Mgmt Group, the independent authority on Non-Human Identity, IAM, and Agentic AI security. nhimg.org