AWS_ATTACH_ROLE_POLICY
Summary
Forestall ACL Alias
AWS_ATTACH_ROLE_POLICY
Edge Type
Attack Path
Affected Object Types
IAM Users, IAM Roles, IAM Groups
Exploitation Certainty
High
AWS IAM Action
iam:AttachRolePolicy on the target role
Description
A principal with iam:AttachRolePolicy can attach any managed policy to a target IAM role. That covers customer-managed and AWS-managed policies, including AdministratorAccess.
Once the policy is on the role, the attacker assumes the role, or gets a service or instance to assume it, and inherits whatever the role now grants.
A role that holds iam:AttachRolePolicy scoped to itself can escalate its own permissions.
The edge is (Attacker:AWSUser|AWSRole|AWSGroup) -[AWS_ATTACH_ROLE_POLICY]-> (TargetRole:AWSRole).
There is no precondition. Any role in the account that matches the resource ARN pattern is a valid target.
Identification
# List principals with iam:AttachRolePolicy
aws iam get-account-authorization-details \
--filter User Role Group LocalManagedPolicy AWSManagedPolicy \
--query "UserDetailList[?AttachedManagedPolicies[?contains(PolicyName, 'AttachRolePolicy')]].[UserName]"
# Simulate privilege check
aws iam simulate-principal-policy \
--policy-source-arn <attacker-arn> \
--action-names iam:AttachRolePolicy \
--resource-arns "arn:aws:iam::*:role/*"PowerShell (AWS Tools):
Exploitation
Mitigation
Restrict
iam:AttachRolePolicyto dedicated IAM administrators. Deny it for service roles and instance profiles.Use permission boundaries to cap what any role can do, whatever policy gets attached.
Apply SCPs to block attachment of Tier-0 policies like
AdministratorAccessandIAMFullAccessoutside approved admin pipelines.Audit role trust policies so no unintended principal can assume a high-privilege role.
Detection
AttachRolePolicy
A managed policy was attached to a role
requestParameters.roleName, requestParameters.policyArn, userIdentity.arn
AssumeRole
A role was assumed after being escalated
requestParameters.roleArn, userIdentity.arn
Alert on AttachRolePolicy where policyArn is a Tier-0 policy, or where the same principal shows up in both AttachRolePolicy and a later AssumeRole for the same role.
References
Last updated
Was this helpful?