CLOUD CREDENTIALS

Hundreds of Live AWS Keys Found in Public Sources, Most Grant Full Account Control

Researchers pulled hundreds of working AWS access keys out of publicly reachable sources, and a large share carried administrative permissions over entire corporate accounts.

Matt Lucas  |  August 23, 2026  |  5 min
Editorial hero illustration
Hundreds
Valid AWS keys recovered
Full admin
Permission level on many accounts
Under 60 sec
Time to first bot scan of a public commit
No CVE
Exploit cost to the attacker
Detected by CaverLive detection for CVE-2013-4786 in the RedEye Intel Feed →
TL;DR
  • What: Researchers collected hundreds of live AWS access keys from publicly reachable sources, and many of them mapped to IAM principals with administrative rights over entire corporate accounts.

Hundreds of working AWS access keys are sitting in publicly reachable places right now, and a significant share of them do not just read a bucket. They own the account. Researchers who harvested and validated these credentials reported that many resolved to IAM users or roles with administrative permissions, meaning a single 40 character secret is enough to enumerate every resource, create new persistence, disable logging, and bill the victim for whatever the attacker wants to run.

There is no CVE here and no patch to deploy. This is a credential hygiene failure at scale, which is exactly why it keeps working. Attackers do not need to defeat a control. They need a string that somebody committed, pasted, or baked into an artifact and then forgot about.

What was actually found

The recovered credentials were long-lived IAM user keys, the kind that begin with the AKIA prefix and never expire on their own. Unlike temporary STS credentials issued to an EC2 instance profile or an IRSA-bound Kubernetes service account, an AKIA key remains valid until a human deactivates it. Keys created for a one-off migration in 2022 are still authenticating in 2026.

The permission distribution is the part that should worry you. A leaked key scoped to a single S3 prefix is an incident. A leaked key attached to a policy granting the equivalent of AdministratorAccess is a full account compromise with no lateral movement required. Reporting on this research indicates the second category was well represented, not a rare outlier.

Assume the window is minutes, not days

Automated scrapers monitor public code hosting event streams continuously. A secret pushed to a public repository is commonly fetched and tested in under a minute. Deleting the commit does not help: the object stays reachable through the repository history and through forks and caches. Once a key is public, the only safe assumption is that it is already in somebody else's inventory.

How the keys get out

The leak paths are boring and repeatable, which is good news because it means they are enumerable. In roughly descending order of frequency:

What an attacker does in the first hour

The playbook is consistent enough that you can build detections against it. Step one is identity discovery: sts:GetCallerIdentity, iam:GetUser, iam:ListAttachedUserPolicies. This is cheap, fast, and tells the attacker whether the key is worth keeping. Step two is inventory: s3:ListAllMyBuckets, ec2:DescribeInstances, rds:DescribeDBInstances, secretsmanager:ListSecrets. Step three splits by motive.

Detection: what to hunt for now

Do not wait for a bill anomaly. Query CloudTrail for the following patterns across all regions, including the ones you believe are unused, since attackers deliberately work in regions nobody monitors.

The fix, in priority order

AWS attaches a quarantine policy to IAM users whose keys it detects in public, but that detection is not comprehensive and it is not a control you should depend on. Treat it as a backstop that occasionally saves you, not as coverage.

Rotation is not remediation

Deactivating a leaked key stops future use of that key. It does not undo what was done with it. If a key was exposed, review CloudTrail from the earliest possible exposure date, not from the date you noticed, and specifically check for IAM principals created, role trust policies modified, snapshots shared to unknown account IDs, and Lambda functions or EventBridge rules you did not author. Persistence planted with an admin key outlives the key itself.

The uncomfortable part of this research is how little skill it required. Somebody scraped public sources, called a free API to test each string, and ended up holding administrative control over other people's production environments. Every organization running AWS should assume at least one of its keys is discoverable and should be able to answer, today, how many long-lived keys exist, who owns them, and what each one can do.

Questions about your exposure?

RedEye Security provides assessments for organizations that need to understand their real risk.

Talk to us