aws-create-policy-version
match (effective permission)
{
"action": "iam:CreatePolicyVersion",
"resource_type": "AWS::IAM::Policy"
}
emit
| source type | Identity |
|---|---|
| target type | * |
| source | <principal> |
| target | <customer-managed policy in scope> |
| permissions | iam:CreatePolicyVersion iam:SetDefaultPolicyVersion? |
| state logic | ACTIVE if CreatePolicyVersion sets default (default behavior with SetAsDefault=true) else CONDITIONAL(needs SetDefaultPolicyVersion) |
Narrative
{principal.name} can create a new default version of managed policy {policy.name} (iam:CreatePolicyVersion), rewriting the permissions of every principal it is attached to.
Raw rule rules/derived/aws/identity-escalation.yaml
id: aws-create-policy-version
emits: CanModifyPolicy
match_effective_permission:
action: iam:CreatePolicyVersion
resource_type: AWS::IAM::Policy
optional_permission: iam:SetDefaultPolicyVersion
emit:
source_type: Identity
target_type: '*'
source: <principal>
target: <customer-managed policy in scope>
permissions:
- iam:CreatePolicyVersion
- iam:SetDefaultPolicyVersion?
state_logic: ACTIVE if CreatePolicyVersion sets default (default behavior with SetAsDefault=true) else
CONDITIONAL(needs SetDefaultPolicyVersion)
escalation: Publish a new default version of a policy already attached to the attacker -> instant privilege
gain.
narrative: '{principal.name} can create a new default version of managed policy {policy.name} (iam:CreatePolicyVersion),
rewriting the permissions of every principal it is attached to.'