Beyond the Application: Understanding OWASP Risk in AWS
OWASP A01
Broken Access Control

Your Application Has Role-Based Access Control. But What About the AWS Role Behind It?

An application can enforce its own roles correctly while the AWS identity behind it stays dangerously overprivileged. The initial flaw is in the app — the blast radius is decided by AWS IAM.

8 min readJuly 10, 2026

Application teams usually think about broken access control as a user accessing another user's record, a standard user opening an administrator endpoint, or an API failing to validate resource ownership. But an application can enforce its own roles correctly while the AWS identity running the application remains dangerously overprivileged.

OWASP identifies Broken Access Control as A01 in the 2025 list. It includes least-privilege violations, privilege elevation, unauthorized information exposure, and users gaining capabilities beyond their intended authorization.

Broken access control is not only an application problem

There are really four distinct authorization layers to consider:

  • Application authorization — what a signed-in user may do in the UI.
  • Cloud identity authorization — what the AWS role running the code may do.
  • Resource-based authorization — what a bucket, key or queue policy allows.
  • Cross-account authorization — which external principals may assume in.

Consider an AWS Lambda function used by a healthcare application. The application may correctly prevent a receptionist from viewing administrative records. However, the Lambda execution role might hold:

Lambda execution role — over-scoped
s3:*
kms:Decrypt
secretsmanager:GetSecretValue
iam:PassRole
lambda:UpdateFunctionCode
Resource: *

An application flaw that initially exposes only one API endpoint could now provide a path to read every S3 bucket, retrieve application secrets, decrypt protected information, modify Lambda code, pass a more powerful role, and move from one compromised workload to broader AWS access. The initial problem is in the application. The resulting blast radius is determined by AWS IAM.

The hidden AWS permission chain

A single over-scoped execution role turns a contained bug into a route across the account:

Compromised application
Lambda execution role
iam:PassRole
More powerful service role
Access to sensitive S3 and KMS resources

Why individual policy reviews are insufficient

A role may not appear dangerous until several permissions are combined. Reviewed one at a time, each looks like routine administration:

Toxic combinations
iam:CreatePolicyVersion  +  iam:SetDefaultPolicyVersion

iam:PassRole  +  lambda:CreateFunction  +  lambda:InvokeFunction

The first pair lets an identity quietly promote an existing policy to a dangerous version. The second lets an identity deploy code under a role it was never granted directly.

How Securitain reconstructs effective access

Securitain examines the AWS authorization layer behind the application by:

  • Inventorying IAM users, groups, roles, policies and access keys.
  • Identifying wildcard actions and wildcard resources.
  • Classifying sensitive permissions and resolving effective, inherited access.
  • Considering permission boundaries and Service Control Policies.
  • Detecting privilege-escalation paths and dangerous permission combinations.
  • Analyzing external trusts and cross-account access.
  • Calculating the blast radius associated with an identity.
  • Providing evidence, affected resources and remediation guidance.

From finding to remediation

The output is a finding card a team can act on directly:

Critical severity finding
Affected identity
healthcare-api-lambda-role
Dangerous permissions
iam:PassRole, s3:*, kms:Decrypt on Resource: *
Attack scenario
Compromised endpoint passes a privileged role to a new function, then reads and decrypts protected patient data.
Blast radius
All S3 buckets + all KMS-encrypted data in the account
Recommended policy
Scope s3 and kms actions to named resources; remove iam:PassRole or restrict its PassedToService.
Compliance mapping
OWASP A01, NIST AC-6
Bottom line

Securitain helps expose these hidden authorization paths before attackers do — so the AWS identities behind your app respect the same boundaries the app itself enforces.

Your application may have access controls. The next question is whether the AWS identities behind it follow the same boundaries.

Securitain provides read-only AWS IAM and security-posture analysis through temporary STS sessions. It helps teams understand identities, effective permissions, attack paths, resource exposure and remediation opportunities without requiring permanent administrative access to the customer's AWS account.