Secuestrar el código de una función Lambda
Puede sobrescribir el código de una función y ejecutarlo con su rol de ejecución.
Concede escalada por sí solo.
lambda:UpdateFunctionCodePor sí solo, lambda:UpdateFunctionCode puede sobrescribir el código de una función y ejecutarlo con su rol de ejecución. Con un alcance de recursos amplio, eso por sí solo llega a acceso de administrador.
Por qué es peligroso
Un principal puede llamar a lambda:UpdateFunctionCode sobre una función existente que se ejecuta con el rol de la función, sobrescribiendo el paquete de despliegue de la función con código controlado por el atacante. En la siguiente invocación, ese código se ejecuta con los permisos de la función y lee las credenciales activas de la función desde el entorno de ejecución de Lambda, sin necesidad de iam:PassRole, porque la función ya está vinculada al rol. Si la función es privilegiada, se trata de una escalada total de privilegios contra una función en la que ya se confiaba.
En términos de MITRE ATT&CK, esto corresponde a T1578, Modificar la infraestructura de cómputo cloud, bajo la táctica de escalada de privilegios. AWS lo registra en CloudTrail como UpdateFunctionCode20150331v2, UpdateFunctionCode. La llamada es ruidosa en CloudTrail y destaca de la actividad normal.
Detección
UpdateFunctionCode20150331v2UpdateFunctionCodeRequisitos previos
Una función de Lambda existente con un rol de ejecución; permiso para actualizar su código. La ejecución ocurre en el siguiente disparador (o en una invocación que el atacante pueda provocar), y no se requiere un permiso de invocación aparte para el robo de las credenciales del rol en sí.
Táctica
Escalada de privilegios
Un control que lo eliminaría: Restringe lambda:UpdateFunctionCode a los principales de CI/CD; reduce los permisos del rol de ejecución de la función.
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 lambda:UpdateFunctionCode?
Puede sobrescribir el código de una función y ejecutarlo con su rol de ejecución.
¿Puede lambda:UpdateFunctionCode escalar privilegios por sí solo?
Sí. Concedido sobre un recurso lo bastante amplio, llega a acceso de administrador sin ningún otro permiso.
¿Cómo se detecta el secuestro del código de una función Lambda?
Vigila UpdateFunctionCode20150331v2, UpdateFunctionCode 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: Restringe lambda:UpdateFunctionCode a las entidades de CI/CD; reduce los permisos del rol de ejecución de la función. 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, Modificar la infraestructura de cómputo 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.