AWS - Abusando de Extensões Lambda
Reading time: 5 minutes
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.
Extensões Lambda
As extensões Lambda aprimoram funções integrando-se a várias ferramentas de monitoramento, observabilidade, segurança e governança. Essas extensões, adicionadas via .zip archives usando Lambda layers ou incluídas em implantações de imagens de contêiner, operam em dois modos: interno e externo.
- Extensões internas se fundem com o processo de runtime, manipulando seu início usando variáveis de ambiente específicas de linguagem e scripts wrapper. Essa personalização se aplica a uma variedade de runtimes, incluindo Java Correto 8 e 11, Node.js 10 e 12, e .NET Core 3.1.
- Extensões externas funcionam como processos separados, mantendo a operação alinhada com o ciclo de vida da função Lambda. Elas são compatíveis com vários runtimes como 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 runtimes personalizados.
Para mais informações sobre como as extensões lambda funcionam, consulte a documentação.
Extensão Externa para Persistência, Roubo de Requisições e Modificação de Requisições
Este é um resumo da técnica proposta neste post: https://www.clearvector.com/blog/lambda-spy/
Foi descoberto que o kernel Linux padrão no ambiente de runtime Lambda é compilado com chamadas de sistema “process_vm_readv” e “process_vm_writev”. E todos os processos são executados com o mesmo ID de usuário, mesmo o novo processo criado para a extensão externa. Isso significa que uma extensão externa tem acesso total de leitura e escrita à memória heap do Rapid, por design.
Além disso, enquanto as extensões Lambda têm a capacidade de se inscrever em eventos de invocação, a AWS não revela os dados brutos para essas extensões. Isso garante que as extensões não podem acessar informações sensíveis transmitidas via a requisição HTTP.
O processo Init (Rapid) monitora todas as requisições de API em http://127.0.0.1:9001 enquanto as extensões Lambda são inicializadas e executadas antes da execução de qualquer código de runtime, mas após o Rapid.
.png)
https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png
A variável AWS_LAMBDA_RUNTIME_API
indica o IP e o número da porta da API Rapid para processos de runtime filhos e extensões adicionais.
warning
Ao alterar a variável de ambiente AWS_LAMBDA_RUNTIME_API
para uma porta
à qual temos acesso, é possível interceptar todas as ações dentro do runtime Lambda (man-in-the-middle). Isso é possível porque a extensão é executada com os mesmos privilégios que o Rapid Init, e o kernel do sistema permite a modificação da memória do processo, possibilitando a alteração do número da porta.
Como as extensões são executadas antes de qualquer código de runtime, modificar a variável de ambiente influenciará o processo de runtime (por exemplo, Python, Java, Node, Ruby) à medida que ele inicia. Além disso, extensões carregadas após a nossa, que dependem dessa variável, também serão roteadas através da nossa extensão. Essa configuração poderia permitir que malware contornasse completamente as medidas de segurança ou extensões de registro diretamente dentro do ambiente de runtime.
.png)
https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png
A ferramenta lambda-spy foi criada para realizar essa escrita de memória e roubar informações sensíveis de requisições lambda, outras requisições de extensões e até mesmo modificá-las.
Referências
- https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/
- https://www.clearvector.com/blog/lambda-spy/
tip
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Aprenda e pratique Hacking Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Support HackTricks
- Confira os planos de assinatura!
- Junte-se ao 💬 grupo do Discord ou ao grupo do telegram ou siga-nos no Twitter 🐦 @hacktricks_live.
- Compartilhe truques de hacking enviando PRs para o HackTricks e HackTricks Cloud repositórios do github.