Secrets detection firm Truffle Security has published findings from a four-year tracking effort revealing the scale of AWS credential exposure in public data sources. Researchers found 64,024 unique AWS keys tied to 50,654 AWS accounts — and 88% of a verified subset still authenticated as of August 10, 2026. Of the keys linked to corporate accounts, 768 grant full administrative control, including 526 AWS root keys.
Scale of the Exposure
The research scanned public Git repositories, Hugging Face datasets, Docker images, package registries, and CI/CD logs. Key findings:
- 431,875 AWS secrets found in total across all sources
- 64,024 unique AWS keys after deduplication
- 10,616 keys with complete credential pairs tested — 88% (approximately 9,300+) still authenticated
- 817 keys tied to identifiable corporate accounts
- 526 of those are AWS root keys — the highest privilege level, unrestricted by IAM policies, capable of closing accounts, modifying billing, and bypassing all controls
- 242 keys are IAM users with
AdministratorAccesspolicy - 130 root keys belong to AWS organization management accounts, meaning a single compromise exposes every member account in the organization simultaneously
Where the Keys Were Found
Hugging Face was the single largest source, accounting for 8,482 unique live keys across 3,394 public datasets — many of which are collections of public source code scraped for AI model training. Root credentials made up 17.9% of Hugging Face-sourced keys. Researchers also found 787 live Hugging Face tokens in training data, including 237 with write access and 70 with org-admin access.
This reveals a compounding problem: once a credential is committed to a public repository, it propagates into AI training datasets, container images, forks, and archives. Deleting the original file does not eliminate the credential from the ecosystem.
The Rotation Problem
The data paints a stark picture of credential hygiene failure:
- Median age of a live leaked key: 1,831 days (~5 years)
- 86% of exposed keys were never rotated or revoked — no newer replacement key existed alongside the leaked credential
Accounts checked were spending $420,631 in July 2026 alone, yet only 262 of 2,754 readable accounts (9.5%) had a budget alert configured. This means the vast majority would have no financial anomaly detection if attackers began mining cryptocurrency or running compute jobs at their expense.
Why This Matters
AWS root keys are supposed to be deleted after initial account setup — AWS documentation explicitly states that root access keys should never exist for ongoing operations. Yet 526 such keys remain active and publicly exposed. An attacker with a root key can:
- Delete all IAM users, roles, and policies
- Access all data across all services without restriction
- Modify or disable CloudTrail logging
- Transfer or close the AWS account
- Access billing information and rack up unlimited charges
For the 130 organizational management account root keys, the blast radius extends to every AWS account in the organization.
Mitigation Steps
Immediate actions:
- Delete all root access keys — use IAM users and roles for all programmatic access
- Audit git history (not just current files) for any committed secrets using tools like TruffleHog or git-secrets
- Rotate any key that ever appeared in a public repo, web page, or AI prompt — treat it as permanently compromised
- Check Hugging Face datasets if your organization contributes public code that may have been scraped
Ongoing controls: 5. Set AWS Budget Alerts — the 9.5% coverage rate is unacceptably low; alerts on unusual spend are often the first indicator of credential abuse 6. Use AWS Secrets Manager or IAM roles instead of hardcoded keys in source code or CI/CD configurations 7. Enforce key age policies in IAM — 1,831-day-old keys should not exist 8. Enable Hugging Face push scanning — Hugging Face integrates TruffleHog and emails users when verified secrets are detected; enterprise orgs get tokens auto-revoked
Key Quotes
As Truffle Security researchers put it: "At the far end sit 130 live root keys on organization management accounts — the account that controls every member account in the org. One compromised management root exposes every account in the org at once."
And on the persistence of the problem: "Rotation is the only fix that survives being copied into a dataset. Defenders must treat every public commit as a permanent credential exposure."
Takeaway
The research underscores that the threat from leaked cloud credentials is not a momentary misconfiguration — it compounds over time as training data, forks, and cached copies propagate secrets far beyond the original repository. With a five-year median key age and 86% never rotated, the gap between exposure and remediation is not hours or days. For most of these organizations, it has been years.