WWW
Stolen AWS Keys
Stolen AWS Keys
Victim S3 Bucket
Victim S3 Bucket
CloudTrail
CloudTrail
Lifecycle delete 7d
Lifecycle delete 7d
Ransom note (in bucket)
Ransom note (in bucket)
SCN-006 / Compromised AKID + SSE-C + 7-day lifecycle delete / 2025

Codefinger 2025

Codefinger encrypts S3 objects in place using AWS native SSE-C (Server-Side Encryption with Customer Provided Keys) - AWS holds the key only during the operation and logs only an HMAC, so forensic recovery is impossible. A 7-day S3 Lifecycle policy triggers deletion if the ransom is not paid.
7 days
until lifecycle delete
HMAC only
in CloudTrail
AES-256
attacker-controlled key
No CVE
native AWS feature abuse
Codefinger · disclosed Jan 13 2025
Ransomware without ransomware - attackers used AWS's own encryption feature against the customer, with CloudTrail unable to recover the key needed to undo it.
Unrecoverable
Exposure
recovery technically impossible without attacker-held AES-256 key; per-victim ransom undisclosed
7 days
Time to detect
attacker sets S3 Lifecycle deletion deadline; CloudTrail logs HMAC only, not the key
1 SCP Deny
Fix complexity
Deny PutObject with x-amz-server-side-encryption-customer-algorithm for principals not using SSE-C
Ask your team this Friday
Do we have an SCP that denies PutObject requests with SSE-C customer-provided keys on buckets where we never use customer-managed keys?
Audit my environment
TEXT
STEP 01 Codefinger acquires compromised AWS keys
Source - leaked credentials, no CVE required
1# Per Halcyon (halcyon.ai, Jan 13 2025) - Codefinger relies entirely on
2# pre-leaked AWS keys. No exploit, no zero-day, no AWS vulnerability.
3
4Sources observed in wild:
5  - Public GitHub commits containing .env / AWS_ACCESS_KEY_ID strings
6  - Infostealer logs (REDLINE, LUMMA, RACOON STEALER)
7  - Paste sites + Pastebin clones
8  - Old S3 buckets with leaked deployment artifacts
9
10Required permissions:
11  - s3:GetObject
12  - s3:PutObject
13  - (optional) s3:PutBucketLifecycleConfiguration
Halcyon attribution · "This ransomware campaign does not exploit any AWS vulnerability." Defense is entirely about credential hygiene + bucket policy controls.
1 / 6
← back
demo state
Export

Generate audit report

Self-contained snapshot of this scenario - step-by-step chain, fixes, ATT&CK mappings, threat actor context.
Click to highlight toxic edges
What if…
node label
Remove this node
Strip outgoing permissions
Reset to original R
REMOVING NODE - saves 0 nodes Esc · R
Right-click any node to test a fix
BREAK POINT
Cut this edge → -- nodes unreachable
Fix: --