Privileged AWS Permissions You Should Restrict Immediately (Top 25 + Bonus)

4 mins to read

Drumroll, please… 🥁

After five weeks of countdowns, breakdowns, and some very lively conversations, we’ve finally reached the end of the Top 25 Most Risky AWS Privileged Permissions, plus a special bonus round for AWS Organizations.

These permissions aren’t just “potentially risky.” They’ve been abused in real-world incidents to steal data, bypass controls, and escalate to full-blown admin access.

If your cloud teams are serious about least privilege, identity governance, or just not getting breached, this list is for you.

I’ve compiled every permission from the series, in order of severity, and added quick context on why it matters.

Before we dive in…

💙 Follow Sonrai Security on LinkedIn for more cloud privilege and permissions deep dives
📺 And don’t forget to subscribe on YouTube to learn more about paths to privilege abuse

Countdown #25–#21

RankPermissionWhy It’s Risky
#25ec2:TerminateInstancesLets attackers shut down EC2 instances, disrupting services or executing ransomware-style destruction.
#24s3:GetObjectOften over-scoped. Allows retrieval of sensitive files, logs, or customer data from S3 buckets.
#23ec2:CreateImageEnables copying of EC2 disk volumes, useful for data exfiltration or lateral movement.
#22ec2:GetPasswordDataExposes Windows administrator passwords. Opens the door to identity takeover.
#21lambda:InvokeFunctionExecutes Lambda functions, potentially triggering sensitive logic with minimal oversight.

🎥 Video Explainer  

Here’s why s3:GetObject, a seemingly harmless permission, deserves its spot on the list. It’s one of the most commonly granted permissions in AWS, often over-scoped, and can expose sensitive files, logs, or customer data. Even identities with minimal access often get this permission, making it the “consolation prize” for attackers who compromise lower-privileged accounts.

Countdown #20–#16

RankPermissionWhy It’s Risky
#20cloudformation:CreateStackLets attackers spin up full infrastructure templates, building shadow environments quickly.
#19ec2:ModifySecurityGroupRulesAlters EC2 firewall rules, exposing services or enabling command-and-control traffic.
#18lambda:CreateFunctionAllows deployment of attacker-controlled code. Can abuse existing IAM roles.
#17ec2:RunInstancesStarts new EC2 instances for exfiltration, crypto mining, or persistence.
#16ec2:ModifyInstanceMetadataOptionsWeakens IMDS protections, enabling theft of temporary credentials.

🎥 Video Explainer  

Let’s talk about ec2:ModifySecurityGroupRules. Attackers can use this permission to punch holes in your network defenses. By modifying ingress or egress rules, they can expose internal services or set up command-and-control traffic. AWS itself warns that this permission should be tightly controlled, and I show you why.

Countdown #15–#11

RankPermissionWhy It’s Risky
#15ec2:ModifyInstanceAttributeChanges IAM roles, security groups, or startup scripts to escalate privileges.
#14kms:DecryptDecrypts sensitive data like secrets, passwords, or config files.
#13kms:PutKeyPolicyGrants attackers access to encryption keys, often without alerting owners.
#12secretsmanager:GetSecretValueRetrieves stored secrets (e.g. DB passwords, API keys) directly.
#11organizations:LeaveOrganizationDetaches account from org guardrails (like SCPs), evading governance and logging.

🎥 Video Explainer 

I step outside the IAM service to spotlight a governance threat: organizations:LeaveOrganization. This permission allows an account to break free from centralized controls like SCPs or CloudTrail org trails. It’s particularly dangerous because it works outside the org management account and can let compromised accounts quietly slip away from your security net.

Countdown #10–#6

RankPermissionWhy It’s Risky
#10route53:ChangeResourceRecordSetsAlters DNS records. Useful for phishing, data rerouting, or traffic interception.
#9iam:CreateAccessKeyCreates new API keys to maintain hidden, durable access.
#8iam:UpdateLoginProfileResets passwords for IAM users. Grants quiet console access to attacker.
#7iam:PassRoleAssigns powerful roles to services like EC2 or Lambda, key for escalation.
#6cloudtrail:DeleteTrailDisables or deletes logging. Useful for anti-forensics and covering tracks.

🎥 Video Explainer  

Let me explain one of the most versatile privilege escalation paths: PassRole. While it doesn’t look dangerous on its own, when combined with the ability to launch or update AWS resources, it becomes a launchpad for escalating access and executing high-privilege actions under the radar. Also, here’s another resource listing 12+ known abuse chains involving this permission.

Countdown #5–#1

RankPermissionWhy It’s Risky
#5sts:AssumeRoleLets attackers assume roles in other accounts, key to cross-account attacks.
#4iam:UpdateAssumeRolePolicyRedefines trust relationships to give attacker access.
#3iam:CreatePolicyVersionSwaps policy contents with malicious version.
#2iam:AttachRolePolicyGrants managed policy access, reused here due to massive impact.
#1iam:PutRolePolicyThe most dangerous of all — grants arbitrary permissions through inline policies.

🎥 Video Explainer

I close the series with a look at what I call the baddest of bad: PutRolePolicy. This allows an attacker to directly inject inline permissions into a role, granting virtually any privilege they want. Because it doesn’t alter policy attachments, it can also be harder to audit than managed policy changes, making it the perfect tool for stealth escalation.

Bonus Countdown: Top 5 AWS Organizations Permissions

Applicable only in multi-account orgs, but devastating if misused.

RankPermissionWhy It’s Risky
#5organizations:CreateAccountCreates shadow accounts that evade oversight.
#4organizations:CloseAccountCan irreversibly shut down accounts. Used for sabotage.
#3organizations:MoveAccountEscapes applied SCPs by shifting between OUs.
#2organizations:UpdatePolicyEdits SCPs. Removes security controls org-wide.
#1organizations:DetachPolicyRemoves policies altogether. No more guardrails.

🎥 Video Explainer 

Here I warn about the organizations:DetachPolicy permission, which removes SCPs, RCPs, and other org-wide policies. This is especially dangerous because it only works in the org management account, where SCPs can’t stop it and where access is often assumed to be trustworthy. It’s a point of failure that can dissolve your entire permissions strategy with a single API call.

Final Thoughts

Permissions create privilege, and privilege creates risk. If you’re not actively monitoring and locking down these permissions, you’re leaving wide-open doors in your AWS environment.

Every permission on this list has been:

  • Misused in real-world breaches
  • Found over-scoped in customer environments
  • Linked to stealth, escalation, or full compromise

The good news is that just because these permissions are risky doesn’t mean they can’t be controlled; with the right visibility, automation, and guardrails in place.

Stay Tuned

To get more research, breakdowns, and video content on cloud privilege and permissions:

💙 Follow Sonrai Security on LinkedIn
📺 Subscribe on YouTube

Wish you could automate privilege access management? Check out the Cloud Permissions Firewall, Sonrai’s answer to taming cloud privilege at scale.