AWS - Abusing Lambda Extensions
Last updated
Last updated
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lambda ekstenzije poboljšavaju funkcije integracijom sa raznim alatima za praćenje, posmatranje, bezbednost i upravljanje. Ove ekstenzije, dodate putem .zip arhiva koristeći Lambda slojeve ili uključene u implementacije kontejnerskih slika, rade u dva režima: interni i spoljni.
Interni ekstenzije se spajaju sa procesom izvršavanja, manipulišući njegovim pokretanjem koristeći specifične varijable okruženja za jezik i wrapper skripte. Ova prilagođavanja se primenjuju na niz izvršnih okruženja, uključujući Java Correto 8 i 11, Node.js 10 i 12, i .NET Core 3.1.
Spoljni ekstenzije rade kao odvojeni procesi, održavajući usklađenost sa životnim ciklusom Lambda funkcije. Kompatibilni su sa raznim izvršnim okruženjima kao što su Node.js 10 i 12, Python 3.7 i 3.8, Ruby 2.5 i 2.7, Java Corretto 8 i 11, .NET Core 3.1, i prilagođena izvršna okruženja.
Za više informacija o kako lambda ekstenzije funkcionišu proverite dokumentaciju.
Ovo je sažetak tehnike predložene u ovom postu: https://www.clearvector.com/blog/lambda-spy/
Otkriveno je da je podrazumevani Linux kernel u Lambda okruženju izvršavanja kompajliran sa “process_vm_readv” i “process_vm_writev” sistemskim pozivima. I svi procesi se izvršavaju sa istim korisničkim ID-jem, čak i novi proces kreiran za spoljnu ekstenziju. To znači da spoljna ekstenzija ima pun pristup za čitanje i pisanje u Rapidovu heap memoriju, po dizajnu.
Štaviše, dok Lambda ekstenzije imaju mogućnost da pretplate na događaje invokacije, AWS ne otkriva sirove podatke ovim ekstenzijama. Ovo osigurava da ekstenzije ne mogu pristupiti osetljivim informacijama koje se prenose putem HTTP zahteva.
Init (Rapid) proces prati sve API zahteve na http://127.0.0.1:9001 dok se Lambda ekstenzije inicijalizuju i izvršavaju pre nego što se izvrši bilo koji kod izvršavanja, ali nakon Rapida.
Varijabla AWS_LAMBDA_RUNTIME_API
označava IP adresu i broj porta Rapid API-ju za dečije procese izvršavanja i dodatne ekstenzije.
Promenom AWS_LAMBDA_RUNTIME_API
varijable okruženja na port
kojem imamo pristup, moguće je presresti sve akcije unutar Lambda izvršavanja (man-in-the-middle). Ovo je moguće jer ekstenzija radi sa istim privilegijama kao Rapid Init, a kernel sistema omogućava modifikaciju memorije procesa, omogućavajući promenu broja porta.
Budući da ekstenzije rade pre bilo kog koda izvršavanja, modifikacija varijable okruženja će uticati na proces izvršavanja (npr. Python, Java, Node, Ruby) kada se pokrene. Štaviše, ekstenzije učitane nakon naše, koje se oslanjaju na ovu varijablu, takođe će prolaziti kroz našu ekstenziju. Ova postavka bi mogla omogućiti malveru da potpuno zaobiđe bezbednosne mere ili ekstenzije za logovanje direktno unutar okruženja izvršavanja.
Alat lambda-spy je kreiran da izvrši tu memorijsku pisanje i ukrade osetljive informacije iz lambda zahteva, drugih zahteva ekstenzija i čak modifikuje ih.
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)