AWS - Abusando de las Extensiones de Lambda
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
Extensiones de Lambda
Las extensiones de Lambda mejoran las funciones al integrarse con varias herramientas de monitoreo, observabilidad, seguridad y gobernanza. Estas extensiones, añadidas a través de .zip archives usando capas de Lambda o incluidas en despliegues de imágenes de contenedor, operan en dos modos: interno y externo.
- Extensiones internas se fusionan con el proceso de ejecución, manipulando su inicio utilizando variables de entorno específicas del lenguaje y scripts envolventes. Esta personalización se aplica a una variedad de entornos de ejecución, incluyendo Java Correto 8 y 11, Node.js 10 y 12, y .NET Core 3.1.
- Extensiones externas se ejecutan como procesos separados, manteniendo la alineación de operación con el ciclo de vida de la función Lambda. Son compatibles con varios entornos de ejecución como Node.js 10 y 12, Python 3.7 y 3.8, Ruby 2.5 y 2.7, Java Corretto 8 y 11, .NET Core 3.1, y entornos de ejecución personalizados.
Para más información sobre cómo funcionan las extensiones de lambda, consulta la documentación.
Extensión Externa para Persistencia, Robo de Solicitudes y Modificación de Solicitudes
Este es un resumen de la técnica propuesta en esta publicación: https://www.clearvector.com/blog/lambda-spy/
Se encontró que el kernel de Linux por defecto en el entorno de ejecución de Lambda está compilado con llamadas al sistema “process_vm_readv” y “process_vm_writev”. Y todos los procesos se ejecutan con el mismo ID de usuario, incluso el nuevo proceso creado para la extensión externa. Esto significa que una extensión externa tiene acceso completo de lectura y escritura a la memoria heap de Rapid, por diseño.
Además, aunque las extensiones de Lambda tienen la capacidad de suscribirse a eventos de invocación, AWS no revela los datos en bruto a estas extensiones. Esto asegura que las extensiones no pueden acceder a información sensible transmitida a través de la solicitud HTTP.
El proceso Init (Rapid) monitorea todas las solicitudes API en http://127.0.0.1:9001 mientras las extensiones de Lambda son inicializadas y ejecutadas antes de la ejecución de cualquier código de tiempo de ejecución, pero después de Rapid.
.png)
https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.default.png
La variable AWS_LAMBDA_RUNTIME_API indica la IP y el número de puerto de la API de Rapid a los procesos de tiempo de ejecución hijo y extensiones adicionales.
Warning
Al cambiar la variable de entorno
AWS_LAMBDA_RUNTIME_APIa unpuertoal que tengamos acceso, es posible interceptar todas las acciones dentro del tiempo de ejecución de Lambda (man-in-the-middle). Esto es posible porque la extensión se ejecuta con los mismos privilegios que Rapid Init, y el kernel del sistema permite la modificación de la memoria del proceso, lo que habilita la alteración del número de puerto.
Debido a que las extensiones se ejecutan antes de cualquier código de tiempo de ejecución, modificar la variable de entorno influirá en el proceso de tiempo de ejecución (por ejemplo, Python, Java, Node, Ruby) a medida que se inicia. Además, las extensiones cargadas después de la nuestra, que dependen de esta variable, también se enrutarán a través de nuestra extensión. Esta configuración podría permitir que el malware eluda completamente las medidas de seguridad o las extensiones de registro directamente dentro del entorno de tiempo de ejecución.
.png)
https://www.clearvector.com/blog/content/images/size/w1000/2022/11/2022110801.rapid.mitm.png
La herramienta lambda-spy fue creada para realizar esa escritura de memoria y robar información sensible de las solicitudes de lambda, otras solicitudes de extensiones e incluso modificarlas.
Referencias
- https://aws.amazon.com/blogs/compute/building-extensions-for-aws-lambda-in-preview/
- https://www.clearvector.com/blog/lambda-spy/
Tip
Aprende y practica AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Az Hacking:HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Consulta los subscription plans!
- Únete al 💬 Discord group o al telegram group o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud github repos.
HackTricks Cloud

