Istraživači cyber sigurnosti otkrili su sigurnosni propust koji je uticao na Amazon Web Services (AWS) Cloud Development Kit (CDK) koji je mogao dovesti do preuzimanja računa pod određenim okolnostima.
“Utjecaj ovog problema mogao bi, u određenim scenarijima, omogućiti napadaču da dobije administrativni pristup ciljanom AWS računu, što bi rezultiralo potpunim preuzimanjem računa”, rekli su istraživači Aqua Ofek Itach i Yakir Kadkoda u izvještaju podijeljenom za The Hacker News.
Nakon odgovornog otkrivanja 27. juna 2024., problem su pozabavili održavači projekta u verziji CDK 2.149.0 objavljenoj u julu.
AWS CDK je okvir za razvoj softvera otvorenog koda za definisanje resursa aplikacija u cloud-u koristeći Python, TypeScript ili JavaScript i njihovo obezbjeđivanje putem CloudFormation-a.
Problem koji je identificirao Aqua temelji se na prethodnim nalazima kompanije za sigurnost u cloud-u o sjenčanim resursima u AWS-u i načinu na koji se unaprijed definisane konvencije imenovanja za AWS Simple Storage Service (S3) bucket mogu koristiti za orkestriranje napada na Bucket Monopoly i dobijanje pristupa osjetljivim podacima.
Priprema AWS okruženja za korištenje sa AWS Cloud Development Kitom (AWS CDK) se postiže procesom koji se naziva bootstrapping, pri čemu se određeni AWS resursi obezbjeđuju okruženju. Ovo uključuje AWS S3 segment, Amazon Elastic Container Registry (Amazon ECR) spremište i uloge AWS Identity and Access Management (IAM).
“Resursi i njihova konfiguracija koje koristi CDK definisani su u AWS CloudFormation šablonu”, prema AWS dokumentaciji .
“Da biste pokrenuli okruženje, koristite AWS CDK interfejs komandne linije (AWS CDK CLI) cdk bootstrap komandu. CDK CLI preuzima šablon i postavlja ga na AWS CloudFormation kao stog, poznat kao bootstrap stack. Podrazumevano, stek ime je CDKToolkit.”
Neke od IAM uloga kreiranih kao dio procesa pokretanja daju dozvolu za učitavanje i brisanje sredstava iz šablona S3 segmenta, kao i izvođenje postavljanja steka uz administratorski pristup.
Aqua je rekao da obrazac imenovanja IAM uloga kreiranih od strane AWS CDK slijedi strukturu “cdk-{Qualifier}-{Description}-{Account-ID}-{Region}”, gdje je svako od polja objašnjeno u nastavku –
- Kvalifikator, jedinstvena vrijednost niza od devet znakova koja je zadana vrijednost “hnb659fds” iako se može prilagoditi tokom faze pokretanja
- Opis, opis resursa (npr. cfn-exec-role)
- ID naloga, ID AWS naloga okruženja
- Region, AWS region okruženja
Na sličan način, S3 bucket kreiran tokom pokretanja prati obrazac imenovanja “cdk-{Qualifier}-assets-{Account-ID}-{Region}.”
“Pošto mnogi korisnici pokreću naredbu cdk bootstrap bez prilagođavanja kvalifikatora, obrazac imenovanja S3 bucketa u staging bucketu postaje predvidljiv”, rekao je Aqua. “To je zato što je zadana vrijednost za kvalifikator naziva segmenta postavljena na ‘hnb659fds’, što olakšava predviđanje imena bucketa.”
Sa hiljadama instanci otkrivenih na GitHubu u kojima se koristi zadani kvalifikator, to takođe znači da je pogađanje imena bucketa jednostavno kao pronalaženje ID-a AWS naloga i regiona na koji je CDK raspoređen.
Kombinujući ovaj aspekt sa činjenicom da su imena S3 bucketa globalno jedinstvena za sve AWS naloge, rupa otvara vrata za ono što se zove S3 Bucket Namesquatting (ili Bucket Sniping), dozvoljavajući napadaču da preuzme CDK korpu drugog korisnika ako ona ne postoji već.
Ovo bi onda moglo utrti put za djelimično uskraćivanje usluge (DoS) kada korisnik pokuša da pokrene CDK sa istim ID-om naloga i regionom, scenario koji bi se mogao rešiti navođenjem prilagođenog kvalifikatora tokom pokretanja.
Ozbiljnije posljedice mogu se dogoditi ako CDK žrtve ima dozvolu i za čitanje i za pisanje podataka iz i u S3 kantu koju kontrolira napadač, čime je omogućeno mijenjanje CloudFormation šablona i izvršavanje maliciznih radnji unutar AWS naloga žrtve.
“Uloga implementacije usluge CloudFormation, koja je uloga CloudFormationExecutionRole u CDK-u, ima administrativne privilegije unutar naloga prema zadanim postavkama”, istakao je Aqua.
“To znači da će svaki CloudFormation predložak koji je žrtvin CDK upisati u S3 kantu napadača biti raspoređen kasnije sa administrativnim privilegijama na nalogu žrtve. To bi omogućilo napadaču da kreira privilegovane resurse.”
U hipotetičkom napadu, ako je korisnik pokrenuo CDK bootstrap proces u prošlosti i nakon toga izbrisao S3 bucket zbog ograničenja kvote, protivnik bi mogao iskoristiti situaciju da kreira kantu s istim imenom.
To bi onda moglo uzrokovati da CDK implicitno vjeruje lažnoj kanti i u nju čita/piše CloudFormation predloške, čineći ih podložnim eksploataciji. Međutim, da bi to uspjelo, od napadača se očekuje da ispuni dolje navedene preduslove –
- Zatražite kantu s predvidljivim imenom i dozvolite javni pristup
- Kreirajte Lambda funkciju koja će ubaciti zlonamjernu ulogu administratora ili backdoor u datu datoteku CloudFormation predloška svaki put kada se učita u korpu
U završnoj fazi, kada korisnik implementira CDK koristeći “cdk deploy”, ne samo da proces šalje predložak u korpu za repliku, već i ubacuje ulogu administratora koju napadač može preuzeti kako bi na kraju dobio kontrolu nad nalogom žrtve.
Drugačije rečeno, lanac napada olakšava kreiranje uloge administratora u ciljnom AWS nalogu kada se CDK S3 bucket postavljen tokom procesa pokretanja izbriše i CDK se ponovo koristi. AWS je od tada potvrdio da je otprilike 1% korisnika CDK-a ranjivo na vektor napada.
Ispravka koju je uveo AWS osigurava da se sredstva učitavaju samo u segmente unutar korisničkog naloga kako bi se spriječilo da CDK prosljeđuje podatke u segmente koji nisu u vlasništvu naloga koji je pokrenuo bootstrapping. Takođe je pozvao korisnike da koriste prilagođeni kvalifikator umjesto zadanog “hnb659fds”.Uz to, potrebna je radnja korisnika ako je pokretanje pokretanja izvršeno pomoću CDK verzije v2.148.1 ili ranije, što zahtijeva da ažuriraju CDK na najnoviju verziju i ponovo pokreću naredbu za pokretanje. Alternativno, korisnici imaju opciju primjene uvjeta IAM politike na CDK ulogu FilePublishingRole.
U izjavi koju je podijelio s The Hacker News, AWS je rekao da je istražio i riješio sve zabrinutosti vezane za neovlašteno izlaganje podataka prilikom implementacije CDK-a.
“12. jula 2024., AWS je objavio ažuriranje AWS Cloud Development Kit (AWS CDK) CLI koje je implementiralo dodatne sigurnosne kontrole kako bi se ublažio potencijal za otkrivanje podataka za klijente koji izvode implementaciju CDK-a”, rekao je glasnogovornik AWS-a za publikaciju.
“Korisnici koji koriste najnoviju verziju morat će izvršiti jednokratnu radnju za nadogradnju svojih resursa za pokretanje. AWS se obratio potencijalno pogođenim korisnicima direktno kako bi ih obavijestio o potrebi za nadogradnjom i dodao je dodatne provjere u CLI kako bi podsjetio korisnike nadograditi.”
Nalazi još jednom pozivaju na čuvanje tajne ID-ova AWS naloga, definiranje IAM politike s opsegom i izbjegavanje davanja predvidljivih imena S3 segmentima.
“Umjesto toga, generisajte jedinstvene hešove ili nasumične identifikatore po regiji i računu i ugradite ih u svoje S3 nazive bucketa”, zaključio je Aqua. “Ova strategija pomaže u zaštiti od napadača koji preventivno zauzmu vašu kantu.”
Otkrivanje dolazi nakon što je Symantec u vlasništvu Broadcoma pronašao nekoliko Android i iOS aplikacija koje su tvrdo kodirane i nešifrirane akreditive za usluge u oblaku za AWS i Microsoft Azure Blob Storage, dovodeći korisničke podatke u opasnost .
Neke od štetnih aplikacija uključuju Pic Stitch: Collage Maker, Crumbl, Eureka: Zaradite novac za ankete, Videoshop – Video Editor, Meru Cabs, Sulekha Business i ReSound Tinnitus Relief.
“Ova opasna praksa znači da bi svako ko ima pristup binarnom ili izvornom kodu aplikacije mogao potencijalno izdvojiti ove krendcijale i zloupotrebiti ih za manipulaciju ili eksfiltriranje podataka, što bi dovelo do ozbiljnih sigurnosnih propusta”, rekli su istraživači sigurnosti Yuanjing Guo i Tommy Dong.