Pasar un rol a Elastic Beanstalk
Puede desplegar un entorno de Elastic Beanstalk con un rol y ejecutar código con ese rol.
Concede escalada solo en combinación. Se necesitan todos estos a la vez:
iam:PassRoleelasticbeanstalk:CreateApplicationVersionelasticbeanstalk:CreateEnvironmentiam:PassRole puede desplegar un entorno de Elastic Beanstalk con un rol y ejecutar código con él, pero solo cuando se combina con elasticbeanstalk:CreateApplicationVersion, elasticbeanstalk:CreateEnvironment. Combinados, llegan a acceso de administrador.
Por qué es peligroso
Un principal tiene iam:PassRole sobre el rol objetivo más elasticbeanstalk:CreateApplicationVersion y elasticbeanstalk:CreateEnvironment, por lo que puede desplegar una aplicación de Elastic Beanstalk en un entorno que aprovisiona una instancia de EC2 con el rol objetivo como perfil de instancia; el código de la aplicación del atacante (o un shell en la máquina) se ejecuta como el rol objetivo y lee sus credenciales a través de IMDS. Como el rol objetivo confía en ec2.amazonaws.com, el pase se acepta; si el rol objetivo es privilegiado, se trata de una escalada de privilegios a nivel de toda la cuenta, la variante PaaS de lanzar una instancia.
En términos de MITRE ATT&CK, esto corresponde a T1578.002, Modificar la infraestructura de cómputo cloud: crear instancia cloud, bajo la táctica de escalada de privilegios. AWS lo registra en CloudTrail como CreateApplicationVersion, CreateEnvironment. La llamada es ruidosa en CloudTrail y destaca de la actividad normal.
Detección
CreateApplicationVersionCreateEnvironmentRequisitos previos
El rol objetivo debe poder usarse como perfil de instancia de EC2 (el rol EC2 de Elastic Beanstalk, por ejemplo aws-elasticbeanstalk-ec2-role) y confiar en ec2.amazonaws.com. CreateEnvironment también acepta un rol de servicio de EB que confíe en elasticbeanstalk.amazonaws.com; el rol con el que se ejecuta y que el atacante roba es el perfil de instancia de EC2.
Táctica
Escalada de privilegios
Un control que lo eliminaría: Elimina iam:PassRole para este rol o acótalo con iam:PassedToService.
Aplicarla o no depende de cómo se use el permiso en tu entorno, así que es una decisión de negocio y no una corrección automática. El mismo permiso puede ser imprescindible en una cuenta y puro riesgo en otra.
Pathbreak confirma si esta ruta se resuelve en tu cuenta, la clasifica frente a las demás según cuánto abre y usa tu modelo de amenazas y tu contexto de negocio para mostrar qué rutas merece la pena cortar.
Preguntas
¿Qué permite iam:PassRole?
Puede desplegar un entorno de Elastic Beanstalk con un rol y ejecutar código con ese rol.
¿Qué más hace falta para que iam:PassRole sea peligroso?
Solo se convierte en escalada cuando se combina con elasticbeanstalk:CreateApplicationVersion, elasticbeanstalk:CreateEnvironment. Por sí solo no basta, y eso es lo que hace que la combinación sea fácil de pasar por alto.
¿Cómo se detecta el pase de rol a Elastic Beanstalk?
Vigila CreateApplicationVersion, CreateEnvironment en CloudTrail. La llamada es ruidosa en CloudTrail y destaca de la actividad normal.
¿Cómo se rompe esta ruta?
Un control que lo eliminaría es: Elimina iam:PassRole para este rol o acótalo con iam:PassedToService. Aplicarla o no depende de cómo se use el permiso en tu cuenta, así que es una decisión de negocio y no una corrección automática.
¿De qué técnica de MITRE ATT&CK se trata?
T1578.002, Modificar la infraestructura de cómputo cloud: crear instancia cloud, en la táctica de escalada de privilegios.
Rutas relacionadas
Referencias
Encuéntralo en tu propia cuenta
Ejecutamos un escaneo de solo lectura de una cuenta de AWS y te mostramos cuáles de estas rutas existen, ordenadas por radio de impacto, con el cambio que rompe cada una. Primeras rutas validadas en menos de una hora.