Granting an IAM role permissions for both iam:UpdateAssumeRolePolicy and sts:AssumeRole actions with the Resource attribute set to "*" creates a severe privilege escalation risk. This misconfiguration allows a user or role to modify the trust policies of any role and subsequently assume any role in the AWS account, potentially gaining administrative privileges. If left unaddressed, malicious actors could exploit these permissions to take over sensitive roles and perform unauthorized actions across all AWS resources.
Compliant Code Examples
# Has iam:UpdateAssumeRolePolicy but no sts:AssumeRole grant: only one of the
# two required permissions is present.
resource"aws_iam_role""cosmic2"{name="cosmic2"}resource"aws_iam_role_policy""inline_policy_only"{name="inline_policy_only"role=aws_iam_role.cosmic2.namepolicy= jsonencode({Version="2012-10-17"Statement=[{Action=["iam:UpdateAssumeRolePolicy",]Effect="Allow"Resource="*"},]})}
# Has sts:AssumeRole via an attached managed policy but no
# iam:UpdateAssumeRolePolicy grant: only one of the two required permissions
# is present.
resource"aws_iam_role""cosmic3"{name="cosmic3"}resource"aws_iam_policy_attachment""test-attach"{name="test-attachment"roles=[aws_iam_role.cosmic3.name]policy_arn=aws_iam_policy.assume_role_policy.arn}resource"aws_iam_policy""assume_role_policy"{name="assume-role-policy"description="A test policy"policy= jsonencode({Version="2012-10-17"Statement=[{Action=["sts:AssumeRole",]Effect="Allow"Resource="*"},]})}
Non-Compliant Code Examples
resource"aws_iam_role""cosmic"{name="cosmic"}resource"aws_iam_role_policy""test_inline_policy"{name="test_inline_policy"role=aws_iam_role.cosmic.namepolicy= jsonencode({Version="2012-10-17"Statement=[{Action=["iam:UpdateAssumeRolePolicy",]Effect="Allow"Resource="*"},]})}resource"aws_iam_policy_attachment""test-attach"{name="test-attachment"roles=[aws_iam_role.cosmic.name]policy_arn=aws_iam_policy.policy.arn}resource"aws_iam_policy""policy"{name="test-policy"description="A test policy"policy= jsonencode({Version="2012-10-17"Statement=[{Action=["sts:AssumeRole",]Effect="Allow"Resource="*"},]})}