Secuestro de Credenciales IAM y Datos de Eventos en AWS Lambda
Última actualización
Última actualización
¿Crees tener lo que se necesita para ser un experto en Pentesting contra AWS? Si nuestro libro te abrió los ojos a las posibilidades de la ciberseguridad ofensiva o si ya cuentas con habilidades en este campo, es momento de subir de nivel. Te retamos a certificarte en el CPNA - Curso Profesional de Pentesting Contra AWS. No será fácil: te enfrentarás a un examen riguroso de 12 horas donde deberás hackear una infraestructura completa alojada en AWS. ¿Listo para el desafío? Acepta el reto y demuestra tu verdadero potencial.
En el contexto de la seguridad informática y la gestión de identidades y accesos, es esencial entender cómo las credenciales IAM (Identity and Access Management) y los datos de eventos pueden ser expuestos indebidamente en entornos de cómputo en la nube, particularmente en servicios como AWS Lambda. AWS Lambda es un servicio de cómputo que permite ejecutar código en respuesta a eventos sin necesidad de administrar servidores. Este artículo busca profundizar en las vulnerabilidades asociadas con la exposición de credenciales IAM y datos de eventos en funciones Lambda, proporcionando un enfoque detallado y profesional sobre cómo estos activos pueden ser comprometidos y cómo ampliar la comprensión sobre los riesgos involucrados.
En AWS Lambda, las funciones se ejecutan en un entorno aislado que recibe credenciales IAM mediante variables de entorno. Estas credenciales son fundamentales para otorgar el acceso necesario a otros servicios de AWS desde la función Lambda. Sin embargo, esta práctica también presenta un riesgo de seguridad: si un adversario logra explotar vulnerabilidades en la función, como las derivadas de ataques de Entidad Externa XML (XXE) o Solicitudes de Falsificación de Servidor (SSRF), puede acceder a estas credenciales. Este tipo de ataques aprovecha el diseño de los sistemas Unix, donde "todo es un archivo", permitiendo la lectura de archivos sensibles.
Para acceder a las credenciales IAM, un atacante podría intentar leer el contenido del archivo /proc/self/environ
, el cual contiene las variables de entorno del proceso actual de la función Lambda. Este método de ataque se basa en la premisa de que el sistema de archivos procfs expone detalles del entorno de ejecución del proceso, incluyendo variables de entorno que contienen las credenciales IAM.
En situaciones donde el acceso directo a /proc/self/environ
se encuentra restringido, ya sea por configuraciones de seguridad de la función Lambda o por un firewall de aplicaciones web (WAF), los atacantes pueden buscar alternativas. Una táctica consiste en intentar leer las variables de entorno de otros procesos dentro del mismo entorno de ejecución, accediendo a archivos del sistema /proc/#/environ
, donde "#" representa el identificador de un proceso específico, generalmente en un rango de 1 a 20. Este método requiere que el atacante identifique un proceso cuyas variables de entorno sean accesibles y contengan información sensible.
Más allá de las credenciales IAM, las funciones Lambda también manejan datos de eventos que se pasan a la función en el momento de su invocación. Estos datos, accesibles a través de la interfaz de tiempo de ejecución de Lambda, ofrecen un contexto sobre el evento que desencadenó la ejecución de la función, incluyendo detalles potencialmente valiosos para un atacante.
A diferencia de las credenciales IAM, los datos de eventos son accesibles mediante técnicas estándar de SSRF dirigidas a http://localhost:9001/2018-06-01/runtime/invocation/next
. Esta vulnerabilidad permite a un atacante obtener información sobre la invocación de la función Lambda, incluyendo el origen del evento y posiblemente datos sensibles específicos del contexto de la aplicación.