aws-create-policy-version

derived aws emits CanModifyPolicy

match (effective permission)

{ "action": "iam:CreatePolicyVersion", "resource_type": "AWS::IAM::Policy" }

emit

source typeIdentity
target type*
source<principal>
target<customer-managed policy in scope>
permissionsiam:CreatePolicyVersion iam:SetDefaultPolicyVersion?
state logicACTIVE 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.'
move · open · esc close