AWS - Abusing Lambda Extensions

Support HackTricks

Lambda Extensions

Lambda extensions huongeza kazi kwa kuunganishwa na zana mbalimbali za ufuatiliaji, uangalizi, usalama, na utawala. Extensions hizi, zinazoongezwa kupitia .zip archives kwa kutumia Lambda layers au kujumuishwa katika mifumo 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 scripts 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.

External Extension for Persistence, Stealing Requests & modifying Requests

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 zinafanya 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 zitaelekezwa 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.

Zana lambda-spy iliundwa ili kutekeleza hiyo memory write na kuchukua taarifa nyeti kutoka kwa maombi ya lambda, maombi ya extensions nyingine na hata kuyaweka mabadiliko.

References

Support HackTricks

Last updated