
Exploit PoC per la sandbox escape di Angular Expressions (CVE-2024-54152) che consente RCE tramite espressione dannosa. Include ambiente Docker e script payload in Go e Python.
Angular Expressions fornisce espressioni per il framework web Angular.JS come modulo autonomo. Prima della versione 1.4.3, un attaccante può scrivere un'espressione malevola che evade la sandbox per eseguire codice arbitrario sul sistema. Con un payload più complesso (non divulgato), si può ottenere pieno accesso all'esecuzione di codice arbitrario sul sistema. Il problema è stato corretto nella versione 1.4.3 di Angular Expressions. Sono disponibili due possibili soluzioni alternative. Si può disabilitare l'accesso a __proto__ globalmente oppure assicurarsi di usare la funzione con un solo argomento.
Per dimostrare la vulnerabilità, abbiamo creato una semplice applicazione Node.js che utilizza la versione vulnerabile di Angular Expressions. L'applicazione espone un endpoint /parse che valuta le espressioni fornite dall'utente.
Clonare il repository:
git clone https://github.com/example/CVE-2024-54152-poc.git
cd CVE-2024-54152-poc
Costruire ed eseguire il container Docker:
docker build -t vulnerable-app .
docker run -p 8080:8080 vulnerable-app
Inviare il payload malevolo: Puoi usare sia lo script Go che quello Python forniti per inviare il payload.
Usando Go:
go run poc.go
Usando Python:
python3 poc.py
Il server dovrebbe eseguire il payload e restituire il risultato del comando id, dimostrando l'esecuzione di codice arbitrario.
Per mitigare questa vulnerabilità, aggiorna Angular Expressions alla versione 1.4.3 o successiva. In alternativa, puoi disabilitare l'accesso a __proto__ globalmente o assicurarti che la funzione venga usata con un solo argomento.