Free plan Signups are open now. The full audytx engine — Terraform and CloudFormation — is live. The Free plan is 100 scans a month and stays free — paid tiers arrive Nov 01, 2026 from $20/month for unlimited repositories. Try it on your own code.
AWS IAM · privilege escalation · iam-vulnerable

The 31 iam-vulnerable privilege-escalation paths

The BishopFox iam-vulnerable project documents 31 AWS IAM privilege-escalation paths, one Terraform file per path. This page lists exactly those 31, the actions each policy grants, and whether audytx detected each one on our last measured run. The project's README credits its 21 original paths to research published by Rhino Security Labs.

How to read the table

  1. Path is the upstream name of the scenario.
  2. Actions are the key permissions in that scenario's policy. Read-only helper permissions are left out.
  3. Detected means audytx reported an IAM privilege-escalation finding on that scenario's Terraform file in the measured run.

The 31 paths

#PathActionsDetected
IAM Permissions on Other Users (3)
01IAM-CreateAccessKeyiam:CreateAccessKeyYes
02IAM-CreateLoginProfileiam:CreateLoginProfileYes
03IAM-UpdateLoginProfileiam:UpdateLoginProfileYes
PassRole to Service (10)
04CloudFormation-PassExistingRoleToCloudFormationiam:PassRole, cloudformation:CreateStackYes
05CodeBuild-CreateProjectPassRoleiam:PassRole, codebuild:CreateProject, codebuild:StartBuild, codebuild:StartBuildBatchYes
06DataPipeline-PassExistingRoleToNewDataPipelineiam:PassRole, datapipeline:CreatePipeline, datapipeline:PutPipelineDefinition, datapipeline:ActivatePipelineYes
07EC2-CreateInstanceWithExistingProfileiam:PassRole, ec2:RunInstancesYes
08Glue-PassExistingRoleToNewGlueDevEndpointiam:PassRole, glue:CreateDevEndpointYes
09Lambda-PassExistingRoleToNewLambdaThenInvokeiam:PassRole, lambda:CreateFunction, lambda:InvokeFunctionYes
10Lambda-PassRoleToNewLambdaThenTriggeriam:PassRole, lambda:CreateFunction, lambda:CreateEventSourceMappingYes
11SageMaker-CreateNotebookPassRoleiam:PassRole, sagemaker:CreateNotebookInstanceYes
12SageMaker-CreateTrainingJobPassRoleiam:PassRole, sagemaker:CreateTrainingJobYes
13SageMaker-CreateProcessingJobPassRoleiam:PassRole, sagemaker:CreateProcessingJobYes
Permissions on Policies (9)
14IAM-AddUserToGroupiam:AddUserToGroupYes
15IAM-AttachGroupPolicyiam:AttachGroupPolicyYes
16IAM-AttachRolePolicyiam:AttachRolePolicyYes
17IAM-AttachUserPolicyiam:AttachUserPolicyYes
18IAM-CreateNewPolicyVersioniam:CreatePolicyVersionYes
19IAM-PutGroupPolicyiam:PutGroupPolicyYes
20IAM-PutRolePolicyiam:PutRolePolicyYes
21IAM-PutUserPolicyiam:PutUserPolicyYes
22IAM-SetExistingDefaultPolicyVersioniam:SetDefaultPolicyVersionYes
Privilege Escalation using AWS Services (8)
23EC2InstanceConnect-SendSSHPublicKeyec2-instance-connect:SendSSHPublicKeyYes
24CloudFormation-UpdateStackcloudformation:UpdateStackYes
25Glue-UpdateExistingGlueDevEndpointglue:UpdateDevEndpointYes
26Lambda-EditExistingLambdaFunctionWithRolelambda:UpdateFunctionCodeYes
27SageMakerCreatePresignedNotebookURLsagemaker:CreatePresignedNotebookInstanceUrlYes
28SSM-SendCommandssm:SendCommandYes
29SSM-StartSessionssm:StartSessionYes
30STS-AssumeRolests:AssumeRole along a role chain that ends in a full-access policyYes
Updating an AssumeRole Policy (1)
31IAM-UpdatingAssumeRolePolicyiam:UpdateAssumeRolePolicy, sts:AssumeRoleYes

Measured on 2026-08-07 with engine 1.18.276 against the iam-vulnerable repository at commit 0f29866: 31 of 31 paths detected. The result is dated and is not re-measured on every release. Action lists come from the policy files in that repository.

Frequently asked questions

Does audytx flag iam:PassRole on its own?

Yes, when the grant is on all resources (Resource: "*"), has no condition and nothing denies it: iam:PassRole is then treated as an escalation-capable permission by itself. Where context shows a finding is harmless, audytx holds it back and prints the reason.

Is this every AWS IAM privilege-escalation path?

No. It is the 31 paths in the iam-vulnerable project, which is a fixed list. AWS adds services over time, and a path that is not on this list is not covered by this measurement.

Free plan

Catch these on the pull request

Install the GitHub App and audytx reviews your next Terraform change for the paths it detects. The Free plan includes 100 scans a month.