AWS - Abusing Lambda Extensions

Reading time: 5 minutes

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Lambda Extensions

Lambda extensions huongeza kazi kwa kuunganishwa na zana mbalimbali za monitoring, observability, security, na governance. Extensions hizi, zinazoongezwa kupitia .zip archives using Lambda layers au kujumlishwa katika container image deployments, zinafanya kazi katika hali mbili: internal na external.

  • Internal extensions huungana na mchakato wa runtime, zikibadilisha uzinduzi wake kwa kutumia language-specific environment variables na wrapper scripts. Uboreshaji huu unatumika kwa aina mbalimbali za runtimes, ikiwa ni pamoja na Java Correto 8 na 11, Node.js 10 na 12, na .NET Core 3.1.
  • External extensions zinafanya kazi kama michakato tofauti, zikihakikisha uendeshaji unalingana na mzunguko wa maisha wa kazi ya Lambda. Zinapatikana kwa runtimes mbalimbali 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 custom runtimes.

Kwa maelezo zaidi kuhusu how lambda extensions work check the 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 kwamba kernel ya Linux ya default katika mazingira ya runtime ya Lambda imeandikwa kwa “process_vm_readv” na “process_vm_writev” system calls. Na michakato yote inafanya kazi na kitambulisho sawa cha mtumiaji, hata mchakato mpya ulioanzishwa kwa ajili ya external extension. Hii inamaanisha kwamba external extension ina ufikiaji kamili wa kusoma na kuandika kwenye kumbukumbu ya Rapid, kwa muundo.

Zaidi ya hayo, ingawa Lambda extensions zina uwezo wa kujiandikisha kwa matukio ya mwito, AWS haifunui data halisi kwa extensions hizi. Hii inahakikisha kwamba 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 Lambda extensions zinaanzishwa na kuendesha kabla ya utekelezaji wa msimbo wowote wa runtime, lakini baada ya Rapid.

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

Kigezo AWS_LAMBDA_RUNTIME_API kinaonyesha IP anwani na nambari ya bandari ya Rapid API kwa michakato ya runtime ya watoto na extensions za ziada.

warning

Kwa kubadilisha kigezo cha mazingira AWS_LAMBDA_RUNTIME_API kuwa port tunayo, inawezekana kukamata vitendo vyote ndani ya runtime ya Lambda (man-in-the-middle). Hii inawezekana kwa sababu extension inafanya kazi na ruhusa sawa na Rapid Init, na kernel ya mfumo inaruhusu mabadiliko ya kumbukumbu ya mchakato, ikiruhusu kubadilisha nambari ya bandari.

Kwa sababu extensions zinafanya kazi kabla ya msimbo wowote wa runtime, kubadilisha kigezo cha mazingira kutakuwa na athari kwenye mchakato wa runtime (kwa mfano, Python, Java, Node, Ruby) unapozinduliwa. Zaidi ya hayo, extensions zilizoandikwa 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 runtime.

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

Chombo lambda-spy kilitengenezwa ili kutekeleza memory write na kuchukua taarifa nyeti kutoka kwa maombi ya lambda, maombi mengine ya extensions na hata kuyabadilisha.

References

tip

Jifunze na fanya mazoezi ya AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Jifunze na fanya mazoezi ya GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Jifunze na fanya mazoezi ya Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks