Check ID:
Provider: AWS
Service:
Severity: HIGH
Categories:
Resource type:
iam_role_cross_service_confused_deputy_preventionProvider: AWS
Service:
iamSeverity: HIGH
Categories:
identity-access, trust-boundariesResource type:
AwsIamRoleWhat this check verifies
IAM service role trust policies restrict AWS service principals to expected sources using global condition keys likeaws:SourceArn or aws:SourceAccount, avoiding overly broad sts:AssumeRole trust relationships.
Risk
Unrestricted service-principal trust lets outsiders trigger a cross-service confused deputy, causing unintendedsts:AssumeRole.
This can enable data exfiltration, unauthorized changes, and lateral movement, impacting confidentiality and integrity.
Recommendation
Constrain service-role trust to expected callers usingaws:SourceArn/aws:SourceAccount to bind service principals to specific resources or accounts. If unsupported, apply equivalent limits in resource-based policies or org-level controls. Apply least privilege and review trust relationships regularly.
Remediation
- CLI
- Terraform
- Native IaC
- Dashboard steps
References
- https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html
- https://aws.amazon.com/blogs/security/how-to-set-up-least-privilege-access-to-your-encrypted-amazon-sqs-queue/
- https://docs.aws.amazon.com/IAM/latest/UserGuide/confused-deputy.html#cross-service-confused-deputy-prevention
- https://docs.aws.amazon.com/textract/latest/dg/cross-service-confused-deputy-prevention.html
Where this check fires
This check runs on every scheduled scan against your AWS account. Findings appear at Cloud Security → Findings filterable byCheck ID = iam_role_cross_service_confused_deputy_prevention. To re-evaluate after a fix, hit Run now on the account’s schedule under Cloud Security → Schedules — the next scan re-checks this control and marks the finding fixed or keeps it persistent.
← Back to AWS checks