Tarek Cheikh
Founder & AWS Cloud Architect
On June 17, 2014, Code Spaces, a project hosting and source code management service, was hit with a distributed denial-of-service attack. That alone would have been an ordinary, survivable incident. What actually ended the company, permanently, within about 12 hours, was that the same attacker had also gained access to Code Spaces' AWS control panel.
Alongside the DDoS, the attacker left extortion demands in Code Spaces' AWS EC2 console, along with a contact address, and demanded payment to stop the attack. When Code Spaces' team attempted to regain control of the account instead of paying, they discovered the attacker had already created several backup logins of their own inside the account. Watching the recovery attempt in real time, the attacker began deleting resources: Elastic Block Store (EBS) snapshots, Amazon S3 buckets, Amazon Machine Images (AMIs), and a number of EC2 instances, largely at random, across the account.
By the time Code Spaces regained exclusive control, most of their data, including their backups, was gone. The company never recovered and shut down permanently.
It's tempting to read this as "AWS let a company get destroyed." That's not what happened. Every action the attacker took, deleting snapshots, buckets, AMIs, instances, was a legitimate action available to whoever held valid, authenticated access to that AWS account. The infrastructure worked exactly as designed. The failure was entirely on the access-control and architecture side, and it's a failure still worth studying because the same two root causes show up constantly today.
However the attacker initially obtained access to the AWS console, the account did not have layered protection strong enough to prevent one compromised credential from granting full, unrestricted control. Multi-factor authentication on the root and administrative access, combined with IAM users scoped to only what each person or system actually needs, turns "one stolen password" from a company-ending event into a contained incident.
This is the lesson that outlived the company. Code Spaces' backup strategy relied on the same AWS account, and largely the same access, as their production infrastructure. Once the attacker had administrative access to the account, there was no independent, isolated copy of the data left to recover from. A backup that can be deleted by the same compromised credentials protecting production isn't really a backup, it's just another copy inside the same blast radius.
A decade later, "our backups live in the same account as production, protected by the same credentials" is still one of the most common gaps a real AWS security review finds. Code Spaces is the case study for why that specific gap is existential, not theoretical.
Sources: contemporaneous reporting from The Hacker News, CSO Online, and PCWorld (June-July 2014), and Code Spaces' own public statement at the time of the incident.
This article is just the start. Get the full picture with our free whitepaper - 8 chapters covering IAM, S3, VPC, monitoring, agentic AI security, compliance, and a prioritized action plan with 50+ CLI commands.
Contain active threats, investigate what happened using CloudTrail and VPC Flow Logs, and come out with a hardened environment, not just a patched hole.
Comprehensive security assessments and implementations to protect your cloud infrastructure.
KloudSec, built by the team behind Toc Consulting
What you just read is a manual, one-time check. KloudSec runs this and 400+ more automated checks across 90+ AWS services, continuously, agentless, live in about 5 minutes.
Toc Consulting: AWS Security & Cloud Architecture
Our team helps engineering teams secure and architect AWS the right way: assessment in week one, a prioritized action plan in week two.
Run AWS's own sample Region-restriction SCP against a member account on your laptop, get an allowed or denied matrix by service and Region, and turn it into a check that exits non-zero when the policy is wrong.
awsmount is a free, open-source tool from KloudSec that shows an AWS account as a read-only folder, so ls, cat, grep, find and diff work on it. Secret-looking values are hidden by default and awsmount only reads.
Seven practical recipes with awsmount: find security groups open to the world, see what uses a security group, follow links between resources, diff two snapshots, keep your account in Git, and give an AI coding agent read-only access.