AWS - Abusing Lambda Extensions
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lambda-uitbreidings verbeter funksies deur te integreer met verskeie monitering, waaksaamheid, sekuriteit, en bestuur gereedskap. Hierdie uitbreidings, wat bygevoeg word via .zip argiewe met behulp van Lambda-lae of ingesluit in houerbeeld ontplooiings, werk in twee modi: intern en extern.
Interne uitbreidings meng met die runtime-proses, wat die opstart daarvan manipuleer met behulp van taalspesifieke omgewing veranderlikes en wrapper-skripte. Hierdie aanpassing geld vir 'n reeks runtimes, insluitend Java Correto 8 en 11, Node.js 10 en 12, en .NET Core 3.1.
Eksterne uitbreidings loop as aparte prosesse, wat die werking in lyn hou met die Lambda-funksie se lewensiklus. Hulle is versoenbaar met verskeie runtimes soos Node.js 10 en 12, Python 3.7 en 3.8, Ruby 2.5 en 2.7, Java Corretto 8 en 11, .NET Core 3.1, en aangepaste runtimes.
Vir meer inligting oor hoe lambda-uitbreidings werk, kyk na die dokumentasie.
Dit is 'n opsomming van die tegniek wat in hierdie pos voorgestel word: https://www.clearvector.com/blog/lambda-spy/
Daar is gevind dat die standaard Linux-kern in die Lambda-runtime-omgewing saamgekompileer is met “process_vm_readv” en “process_vm_writev” stelsels oproepe. En alle prosesse loop met dieselfde gebruikers-ID, selfs die nuwe proses wat geskep is vir die eksterne uitbreiding. Dit beteken dat 'n eksterne uitbreiding volle lees- en skryfgemagtiging het tot Rapid se heap-geheue, volgens ontwerp.
Boonop, terwyl Lambda-uitbreidings die vermoë het om te integreer met aanroepgebeurtenisse, onthul AWS nie die rou data aan hierdie uitbreidings nie. Dit verseker dat uitbreidings nie toegang het tot sensitiewe inligting wat via die HTTP-versoek oorgedra word.
Die Init (Rapid) proses monitor alle API-versoeke by http://127.0.0.1:9001 terwyl Lambda-uitbreidings geïnitialiseer en uitgevoer word voordat enige runtime-kode uitgevoer word, maar na Rapid.
Die veranderlike AWS_LAMBDA_RUNTIME_API
dui die IP adres en poort nommer van die Rapid API aan kind runtime prosesse en addisionele uitbreidings.
Deur die AWS_LAMBDA_RUNTIME_API
omgewing veranderlike na 'n poort
wat ons toegang tot het, is dit moontlik om alle aksies binne die Lambda-runtime te onderskep (man-in-the-middle). Dit is moontlik omdat die uitbreiding met dieselfde voorregte as Rapid Init loop, en die stelselkern toelaat vir modifikasie van prosesgeheue, wat die verandering van die poortnommer moontlik maak.
Omdat uitbreidings voor enige runtime-kode loop, sal die aanpassing van die omgewing veranderlike die runtime-proses (bv. Python, Java, Node, Ruby) beïnvloed soos dit begin. Verder, uitbreidings wat na ons gelaai word, wat op hierdie veranderlike staatmaak, sal ook deur ons uitbreiding lei. Hierdie opstelling kan malware in staat stel om sekuriteitsmaatreëls of registrasie-uitbreidings heeltemal te omseil direk binne die runtime-omgewing.
Die hulpmiddel lambda-spy is geskep om daardie geheue skrywe en sensitiewe inligting van lambda versoeke te steel, ander uitbreidings versoeke en selfs te modifiseer.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)