AWS - Abusare delle Estensioni Lambda

Reading time: 5 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Estensioni Lambda

Le estensioni Lambda migliorano le funzioni integrandosi con vari strumenti di monitoraggio, osservabilità, sicurezza e governance. Queste estensioni, aggiunte tramite .zip archivi utilizzando i layer Lambda o incluse nelle distribuzioni di immagini container, operano in due modalità: interna ed esterna.

  • Le estensioni interne si fondono con il processo di runtime, manipolando il suo avvio utilizzando variabili ambientali specifiche del linguaggio e script wrapper. Questa personalizzazione si applica a una gamma di runtime, inclusi Java Correto 8 e 11, Node.js 10 e 12, e .NET Core 3.1.
  • Le estensioni esterne vengono eseguite come processi separati, mantenendo l'allineamento operativo con il ciclo di vita della funzione Lambda. Sono compatibili con vari runtime come Node.js 10 e 12, Python 3.7 e 3.8, Ruby 2.5 e 2.7, Java Corretto 8 e 11, .NET Core 3.1, e runtime personalizzati.

Per ulteriori informazioni su come funzionano le estensioni lambda controlla la documentazione.

Estensione Esterna per Persistenza, Furto di Richieste e Modifica delle Richieste

Questo è un riassunto della tecnica proposta in questo post: https://www.clearvector.com/blog/lambda-spy/

È stato scoperto che il kernel Linux predefinito nell'ambiente di runtime Lambda è compilato con le chiamate di sistema “process_vm_readv” e “process_vm_writev”. E tutti i processi vengono eseguiti con lo stesso ID utente, anche il nuovo processo creato per l'estensione esterna. Questo significa che un'estensione esterna ha pieno accesso in lettura e scrittura alla memoria heap di Rapid, per design.

Inoltre, mentre le estensioni Lambda hanno la capacità di iscriversi agli eventi di invocazione, AWS non rivela i dati grezzi a queste estensioni. Questo garantisce che le estensioni non possano accedere a informazioni sensibili trasmesse tramite la richiesta HTTP.

Il processo Init (Rapid) monitora tutte le richieste API a http://127.0.0.1:9001 mentre le estensioni Lambda vengono inizializzate ed eseguite prima dell'esecuzione di qualsiasi codice di runtime, ma dopo Rapid.

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

La variabile AWS_LAMBDA_RUNTIME_API indica l'IP e il numero di porta dell'API Rapid ai processi di runtime secondari e alle estensioni aggiuntive.

warning

Cambiando la variabile ambientale AWS_LAMBDA_RUNTIME_API in un port a cui abbiamo accesso, è possibile intercettare tutte le azioni all'interno del runtime Lambda (man-in-the-middle). Questo è possibile perché l'estensione viene eseguita con gli stessi privilegi di Rapid Init, e il kernel del sistema consente la modifica della memoria del processo, abilitando la modifica del numero di porta.

Poiché le estensioni vengono eseguite prima di qualsiasi codice di runtime, modificare la variabile ambientale influenzerà il processo di runtime (ad es., Python, Java, Node, Ruby) mentre si avvia. Inoltre, le estensioni caricate dopo la nostra, che si basano su questa variabile, verranno anch'esse instradate attraverso la nostra estensione. Questa configurazione potrebbe consentire a malware di bypassare completamente le misure di sicurezza o le estensioni di registrazione direttamente all'interno dell'ambiente di runtime.

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

Lo strumento lambda-spy è stato creato per eseguire quella scrittura in memoria e rubare informazioni sensibili dalle richieste lambda, altre richieste di estensioni e persino modificarle.

Riferimenti

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks