
Exploit de PoC para escape de sandbox do Angular Expressions (CVE-2024-54152) que alcança RCE por meio de expressão maliciosa. Inclui ambiente Docker e scripts de payload em Go e Python.
Angular Expressions fornece expressões para o framework web Angular.JS como um módulo independente. Antes da versão 1.4.3, um atacante pode escrever uma expressão maliciosa que escapa da sandbox para executar código arbitrário no sistema. Com um payload mais complexo (não divulgado), pode-se obter acesso total à execução de código arbitrário no sistema. O problema foi corrigido na versão 1.4.3 do Angular Expressions. Duas soluções alternativas estão disponíveis. Pode-se desabilitar o acesso a __proto__ globalmente ou garantir que a função seja usada com apenas um argumento.
Para demonstrar a vulnerabilidade, criamos uma aplicação Node.js simples que utiliza a versão vulnerável do Angular Expressions. A aplicação expõe um endpoint /parse que avalia expressões fornecidas pelo usuário.
Clone o repositório:
git clone https://github.com/example/CVE-2024-54152-poc.git
cd CVE-2024-54152-poc
Construa e execute o contêiner Docker:
docker build -t vulnerable-app .
docker run -p 8080:8080 vulnerable-app
Envie o payload malicioso: Você pode usar o script Go ou Python fornecido para enviar o payload.
Usando Go:
go run poc.go
Usando Python:
python3 poc.py
O servidor deve executar o payload e retornar o resultado do comando id, demonstrando a execução de código arbitrário.
Para mitigar essa vulnerabilidade, atualize o Angular Expressions para a versão 1.4.3 ou posterior. Alternativamente, você pode desabilitar o acesso a __proto__ globalmente ou garantir que a função seja usada com apenas um argumento.