AWS - Zloupotreba Lambda Ekstenzija

Reading time: 4 minutes

tip

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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Lambda Ekstenzije

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 eksterni.

  • Interni ekstenzije se spajaju sa procesom izvršavanja, manipulišući njegovim pokretanjem koristeći promenljive okruženja specifične 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.
  • Eksterni 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.

Eksterni Ekstenzija za Održavanje, Krađu Zahteva i Modifikaciju Zahteva

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 eksternu ekstenziju. To znači da eksterni 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.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png

Promenljiva AWS_LAMBDA_RUNTIME_API označava IP adresu i broj porta Rapid API-ju za dečije procese izvršavanja i dodatne ekstenzije.

warning

Promenom AWS_LAMBDA_RUNTIME_API promenljive 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 promenljive 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 promenljivu, 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.

https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png

Alat lambda-spy je kreiran da izvrši tu memorijsku pisanje i ukrade osetljive informacije iz lambda zahteva, drugih ekstenzija zahteva i čak modifikuje ih.

Reference

tip

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) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks