AWS - Abusing Lambda Extensions
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Lambda extensions huongeza kazi kwa kuungana na zana mbalimbali za ufuatiliaji, uangalizi, usalama, na utawala. Extensions hizi, zinazoongezwa kupitia .zip archives kwa kutumia Lambda layers au kujumuishwa katika mifano ya picha za kontena, zinafanya kazi katika hali mbili: ndani na nje.
Extensions za ndani huungana na mchakato wa wakati wa utekelezaji, zikibadilisha uzinduzi wake kwa kutumia mabadiliko ya mazingira maalum ya lugha na script za wrapper. Uboreshaji huu unatumika kwa aina mbalimbali za wakati wa utekelezaji, ikiwa ni pamoja na Java Correto 8 na 11, Node.js 10 na 12, na .NET Core 3.1.
Extensions za nje zinafanya kazi kama michakato tofauti, zikihakikisha uendeshaji unalingana na mzunguko wa maisha wa kazi ya Lambda. Zinapatikana kwa aina mbalimbali za wakati wa utekelezaji kama Node.js 10 na 12, Python 3.7 na 3.8, Ruby 2.5 na 2.7, Java Corretto 8 na 11, .NET Core 3.1, na michakato maalum.
Kwa maelezo zaidi kuhusu jinsi extensions za lambda zinavyofanya kazi angalia docs.
Hii ni muhtasari wa mbinu iliyopendekezwa katika chapisho hili: https://www.clearvector.com/blog/lambda-spy/
Ilipatikana kuwa kernel ya Linux ya default katika mazingira ya wakati wa utekelezaji wa Lambda imeandaliwa na “process_vm_readv” na “process_vm_writev” calls za mfumo. Na michakato yote inafanya kazi na kitambulisho sawa cha mtumiaji, hata mchakato mpya ulioanzishwa kwa ajili ya extension ya nje. Hii inamaanisha kuwa extension ya nje ina ufikiaji kamili wa kusoma na kuandika kwenye kumbukumbu ya heap ya Rapid, kwa muundo.
Zaidi ya hayo, ingawa extensions za Lambda zina uwezo wa kujiandikisha kwa matukio ya mwito, AWS haifichui data halisi kwa extensions hizi. Hii inahakikisha kuwa extensions haziwezi kufikia taarifa nyeti zinazotumwa kupitia ombi la HTTP.
Mchakato wa Init (Rapid) unafuatilia maombi yote ya API katika http://127.0.0.1:9001 wakati extensions za Lambda zinaanzishwa na kufanya kazi kabla ya utekelezaji wa msimbo wowote wa wakati wa utekelezaji, lakini baada ya Rapid.
Kigezo AWS_LAMBDA_RUNTIME_API
kinaonyesha IP anwani na nambari ya bandari ya Rapid API kwa michakato ya wakati wa utekelezaji wa watoto na extensions za ziada.
Kwa kubadilisha kigezo cha mazingira AWS_LAMBDA_RUNTIME_API
kuwa port
tunayo, inawezekana kukamata vitendo vyote ndani ya wakati wa utekelezaji wa Lambda (man-in-the-middle). Hii inawezekana kwa sababu extension inafanya kazi na ruhusa sawa na Rapid Init, na kernel ya mfumo inaruhusu kubadilisha kumbukumbu ya mchakato, ikiruhusu kubadilisha nambari ya bandari.
Kwa sababu extensions zinafanya kazi kabla ya msimbo wowote wa wakati wa utekelezaji, kubadilisha kigezo cha mazingira kutakuwa na athari kwenye mchakato wa wakati wa utekelezaji (mfano, Python, Java, Node, Ruby) unapoanza. Zaidi ya hayo, extensions zilizopakiwa baada yetu, ambazo zinategemea kigezo hiki, pia zitaelekeza kupitia extension yetu. Mpangilio huu unaweza kuwezesha malware kupita kabisa hatua za usalama au logging extensions moja kwa moja ndani ya mazingira ya wakati wa utekelezaji.
Chombo lambda-spy kilitengenezwa ili kutekeleza kuandika kumbukumbu na kuchukua taarifa nyeti kutoka kwa maombi ya lambda, maombi ya extensions nyingine na hata kuyaweka.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)