CodeBreach maakt overnemen AWS GitHub-repositories mogelijk
In dit artikel:
Wiz ontdekte een kritieke kwetsbaarheid in AWS CodeBuild — door hen CodeBreach genoemd — die aanvallers in staat stelde toegang te krijgen tot kernrepositories van AWS, waaronder de veelgebruikte AWS SDK voor JavaScript. De fout zat in webhook-filters die builds zouden moeten beperken tot goedgekeurde maintainers: de ACTOR_ID-regex miste de start- (^) en eind- ($) anchors. Omdat GitHub-gebruikers-ID’s als getallen worden toegewezen en nieuwere ID’s regelmatig langere getallen opleveren, kon een nieuw aangemaakte gebruikers-ID die een bestaande maintainer-ID als substring bevatte het filter omzeilen (Wiz noemt dat een “eclipse”).
Tijdens onderzoek naar een eerdere supply-chain-aanval op een Amazon VS Code-extensie controleerde Wiz openbare CodeBuild-configuraties en vond vier AWS-projecten met kwetsbare pull-request-filters, waaronder aws/aws-sdk-js-v3. Om een geschikte superstring-ID te bemachtigen maakten de onderzoekers massaal GitHub-apps via de manifest flow (omzeilen van reCAPTCHA), en registreerden gelijktijdig honderden bot-accounts. Daarmee verwierven ze de user ID 226755743 die het ACTOR_ID-filter kon passeren.
Met die bot openden zij een ogenschijnlijk legitieme pull request met een verborgen payload: een NPM-dependency die tijdens de build GitHub-credentials zou uitlezen. De build leverde een GitHub Classic Personal Access Token op van de aws-sdk-js-automation-gebruiker, met volledige repo-adminrechten. Door misbruik van de token-scope konden de onderzoekers zichzelf uitnodigen als repository-admin, code naar main pushen, pull requests goedkeuren en repository-secrets exfiltreren.
De impact was groot: de JavaScript SDK wordt breed gebruikt (Wiz stelt dat 66% van cloud-omgevingen de SDK bevat) en de AWS Console bundelt recente SDK-versies, wat een compromise potentieel wereldwijd effect zou geven. Bovendien bleek dezelfde ongeborgde ACTOR_ID-logica in ten minste drie andere AWS-repositories aanwezig, waarmee aanvullende account-credentials gestolen hadden kunnen worden.
Wiz meldde de bevindingen aan AWS op 25 augustus 2025. AWS en Wiz overlegden snel: op 27 augustus 2025 werden de regex-filters verankerd en het gecompromitteerde PAT ingetrokken. In september voerde AWS verdere hardening door om te voorkomen dat non-privileged builds credentials via geheugenlekken kunnen bemachtigen, voerde een brede audit van publieke build-omgevingen en CloudTrail-logs uit en bevestigde dat er geen aanwijzingen waren voor misbruik door derden. AWS introduceerde ook een Pull Request Comment Approval build-gate om onbetrouwbare builds tegen te houden.
Belangrijke lessen: gebruik altijd exacte-match anchors bij ID-checks, behandel CI/build-omgevingen als onbetrouwbaar, beperk tokenrechten strikt en roteer/verwijder langdurige credentials om supply-chain-risico’s te verminderen.