Cybersecurity-onderzoekers hebben een beveiligingsfout onthuld die van invloed is op de Amazon Web Services (AWS) Cloud Development Kit (CDK) en die onder specifieke omstandigheden tot een accountovername had kunnen leiden.
“De impact van dit probleem zou er in bepaalde scenario’s voor kunnen zorgen dat een aanvaller beheerderstoegang krijgt tot een doel-AWS-account, wat resulteert in een volledige accountovername”, aldus Aqua in een rapport gedeeld met The Hacker News.
Na de verantwoorde openbaarmaking op 27 juni 2024 werd het probleem aangepakt door de projectbeheerders in CDK-versie 2.149.0, uitgebracht in juli.
AWS CDK is een open-source softwareontwikkelingsframework voor het definiëren van cloudapplicatiebronnen met behulp van Python, TypeScript of JavaScript en het inrichten ervan via CloudFormation.
Het door Aqua geïdentificeerde probleem bouwt voort op eerdere bevindingen van het cloudbeveiligingsbedrijf over schaduwbronnen in AWS, en hoe vooraf gedefinieerde naamgevingsconventies voor AWS Simple Storage Service (S3)-buckets kunnen worden ingezet om Bucket Monopoly-aanvallen te orkestreren en toegang te krijgen tot gevoelige gegevens.
Het voorbereiden van een AWS-omgeving voor gebruik met de AWS Cloud Development Kit (AWS CDK) wordt bereikt door een proces dat bootstrapping wordt genoemd, waarbij bepaalde AWS-bronnen aan de omgeving worden geleverd. Dit omvat een AWS S3-bucket, Amazon Elastic Container Registry (Amazon ECR) repository en AWS Identity and Access Management (IAM)-rollen.
“Bronnen en hun configuratie die door de CDK worden gebruikt, worden gedefinieerd in een AWS CloudFormation-sjabloon”, aldus AWS-documentatie.
“Om een omgeving op te starten, gebruikt u de cdk bootstrap-opdracht van AWS CDK Command Line Interface (AWS CDK CLI). De CDK CLI haalt de sjabloon op en implementeert deze in AWS CloudFormation als een stapel, ook wel de bootstrap-stack genoemd. Standaard is de stapel naam is CDKToolkit.”
Sommige van de IAM-rollen die zijn gemaakt als onderdeel van het opstartproces verlenen toestemming om assets uit de bijbehorende S3-bucket te uploaden en te verwijderen, en om stackimplementaties uit te voeren met beheerderstoegang.
Aqua zei dat het naamgevingspatroon van de IAM-rollen gemaakt door AWS CDK de structuur volgt “cdk-{Qualifier}-{Description}-{Account-ID}-{Region}”, waarbij elk van de velden hieronder wordt uitgelegd –
- Qualifier, een unieke tekenreekswaarde van negen tekens die standaard ‘hnb659fds’ is, hoewel deze tijdens de opstartfase kan worden aangepast
- Beschrijving, resourcebeschrijving (bijv. cfn-exec-role)
- Account-ID, AWS-account-ID van de omgeving
- Regio, AWS-regio van de omgeving
Op dezelfde manier volgt de S3-bucket die tijdens het opstarten wordt gemaakt het naampatroon ‘cdk-{Qualifier}-assets-{Account-ID}-{Region}’.
“Aangezien veel gebruikers het cdk bootstrap-commando uitvoeren zonder de kwalificatie aan te passen, wordt het S3-bucket-naamgevingspatroon van de staging-bucket voorspelbaar”, aldus Aqua. “Dit komt omdat de standaardwaarde voor de kwalificatie voor de bucketnaam is ingesteld op ‘hnb659fds’, waardoor het gemakkelijker wordt om op de naam van de bucket te anticiperen.”
Met duizenden exemplaren ontdekt op GitHub waar de standaardkwalificatie wordt gebruikt, betekent dit ook dat het raden van de naam van de bucket net zo eenvoudig is als het vinden van de AWS-account-ID en de regio waar de CDK is geïmplementeerd.
Door dit aspect te combineren met het feit dat S3-bucketnamen wereldwijd uniek zijn voor alle AWS-accounts, opent de maas in de wet de deur voor wat S3 Bucket Namesquatting (of Bucket Sniping) wordt genoemd, waardoor een aanvaller de CDK-bucket van een andere gebruiker kan claimen als deze niet bestaat. al.
Dit zou vervolgens de weg kunnen vrijmaken voor een gedeeltelijke denial-of-service (DoS) wanneer een gebruiker probeert de CDK op te starten met dezelfde account-ID en regio, een scenario dat kan worden opgelost door tijdens het opstarten een aangepaste kwalificatie op te geven.
Een ernstiger gevolg zou kunnen optreden als de CDK van het slachtoffer toestemming heeft om zowel gegevens te lezen als te schrijven van en naar de door de aanvaller bestuurde S3-bucket, waardoor het mogelijk wordt om met CloudFormation-sjablonen te knoeien en kwaadaardige acties uit te voeren binnen het AWS-account van het slachtoffer.
“De implementatierol van de CloudFormation-service, de rol CloudFormationExecutionRole in CDK, heeft standaard beheerdersrechten binnen het account”, benadrukt Aqua.
“Dit betekent dat elk CloudFormation-sjabloon dat door de CDK van het slachtoffer naar de S3-bucket van de aanvaller wordt geschreven, later met beheerdersrechten in het account van het slachtoffer zou worden ingezet. Hierdoor zou de aanvaller bevoorrechte bronnen kunnen creëren.”
Als een gebruiker bij een hypothetische aanval in het verleden het CDK-bootstrapproces heeft gestart en vervolgens de S3-bucket heeft verwijderd vanwege quotalimieten, zou een tegenstander van de situatie kunnen profiteren door een bucket met dezelfde naam te maken.
Dit zou er vervolgens voor kunnen zorgen dat de CDK impliciet de frauduleuze bucket vertrouwt en CloudFormation-sjablonen ernaar leest/schrijft, waardoor ze vatbaar worden voor misbruik. Om dit te laten slagen, wordt echter van de aanvaller verwacht dat hij aan de onderstaande vereisten voldoet:
- Claim de bucket met de voorspelbare naam en sta publieke toegang toe
- Maak een Lambda-functie die een kwaadwillende beheerdersrol of achterdeur in een bepaald CloudFormation-sjabloonbestand injecteert wanneer het naar de bucket wordt geüpload
In de laatste fase, wanneer de gebruiker de CDK implementeert met behulp van “cdk deploy”, verzendt het proces niet alleen de sjabloon naar de replicabucket, maar injecteert het ook een beheerdersrol die de aanvaller kan aannemen om uiteindelijk controle over het account van het slachtoffer te krijgen.
Anders gezegd: de aanvalsketen vergemakkelijkt het creëren van een beheerdersrol in een doel-AWS-account wanneer een CDK S3-bucket die is ingesteld tijdens het bootstrap-proces wordt verwijderd en de CDK opnieuw wordt gebruikt. AWS heeft sindsdien bevestigd dat ongeveer 1% van de CDK-gebruikers kwetsbaar was voor de aanvalsvector.
De door AWS aangebrachte oplossing zorgt ervoor dat assets alleen worden geüpload naar buckets binnen het gebruikersaccount om te voorkomen dat de CDK gegevens naar buckets pusht die geen eigendom zijn van het account dat de bootstrapping heeft gestart. Het heeft klanten ook aangespoord om een op maat gemaakte kwalificatie te gebruiken in plaats van de standaard ‘hnb659fds’.
In een verklaring gedeeld met The Hacker News zei AWS dat het alle zorgen met betrekking tot ongeautoriseerde gegevensblootstelling bij het uitvoeren van CDK-implementaties heeft onderzocht en aangepakt.
“Op 12 juli 2024 bracht AWS een update uit voor de AWS Cloud Development Kit (AWS CDK) CLI, die aanvullende beveiligingsmaatregelen implementeerde om de kans op openbaarmaking van gegevens voor klanten die CDK-implementaties uitvoeren te beperken”, vertelde een woordvoerder van AWS aan de publicatie.
“Klanten die de nieuwste versie gebruiken, moeten een eenmalige actie uitvoeren om hun bootstrap-bronnen te upgraden. AWS heeft rechtstreeks contact opgenomen met mogelijk getroffen klanten om hen op de hoogte te stellen van de noodzaak om te upgraden, en heeft extra controles aan de CLI toegevoegd om gebruikers eraan te herinneren om te upgraden.”
Dat gezegd hebbende, is actie van de gebruiker vereist als het opstarten is uitgevoerd met CDK-versie v2.148.1 of eerder, waardoor het noodzakelijk is dat ze de CDK bijwerken naar de nieuwste versie en het bootstrap-commando opnieuw uitvoeren. Als alternatief hebben gebruikers de mogelijkheid om een IAM-beleidsvoorwaarde toe te passen op de FilePublishingRole CDK-rol.
De bevindingen roepen opnieuw op om AWS-account-ID’s geheim te houden, een uitgebreid IAM-beleid te definiëren en te voorkomen dat voorspelbare namen aan S3-buckets worden gegeven.
“Genereer in plaats daarvan unieke hashes of willekeurige identificatiegegevens per regio en account, en neem deze op in uw S3-bucketnamen”, concludeerde Aqua. “Deze strategie helpt je te beschermen tegen aanvallers die preventief jouw bucket claimen.”
De onthulling komt omdat Symantec, eigendom van Broadcom, verschillende Android- en iOS-apps heeft gevonden die hardgecodeerde en niet-versleutelde cloudservicereferenties voor AWS en Microsoft Azure Blob Storage hebben, waardoor gebruikersgegevens in gevaar komen.
Enkele van de aanstootgevende apps zijn Pic Stitch: Collage Maker, Crumbl, Eureka: Earn Money for Surveys, Videoshop – Video Editor, Meru Cabs, Sulekha Business en ReSound Tinnitus Relief.
“Deze gevaarlijke praktijk betekent dat iedereen met toegang tot de binaire code of de broncode van de app deze inloggegevens kan onttrekken en deze kan misbruiken om gegevens te manipuleren of te exfiltreren, wat tot ernstige inbreuken op de beveiliging kan leiden”, aldus beveiligingsonderzoekers Yuanjing Guo en Tommy Dong.
(Het verhaal is na publicatie bijgewerkt met een reactie van AWS.)