Secuestrar el rol de la instancia objetivo de CodeDeploy
Puede desplegar una revisión maliciosa y ejecutar un script con el rol de las instancias objetivo.
Concede escalada solo en combinación. Se necesitan todos estos a la vez:
codedeploy:CreateDeploymentcodedeploy:RegisterApplicationRevisioncodedeploy:CreateDeployment puede desplegar una revisión maliciosa y ejecutar un script con el rol de las instancias de destino, pero solo cuando se combina con codedeploy:RegisterApplicationRevision. Combinados, llegan a acceso de administrador.
Por qué es peligroso
Un principal puede llamar a codedeploy:CreateDeployment sobre un grupo de despliegue existente cuyas instancias EC2 de destino ya tienen el rol del perfil de instancia, desplegando una revisión cuyo hook de ciclo de vida en appspec.yml ejecuta un script de shell del atacante como root en esas instancias. El script lee las credenciales activas del grupo desde IMDS, sin necesidad de iam:PassRole, porque el grupo ya está vinculado a las máquinas. Si el grupo tiene privilegios, se trata de una escalada total de privilegios contra instancias en las 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 CreateDeployment, RegisterApplicationRevision. La llamada es ruidosa en CloudTrail y destaca de la actividad normal.
Detección
CreateDeploymentRegisterApplicationRevisionRequisitos previos
Un grupo de despliegue existente que apunta a instancias de EC2 con un perfil de instancia; el agente de CodeDeploy en ejecución en ellas; un bucket de S3 donde preparar la revisión; permiso para crear un despliegue. Los hooks de ciclo de vida de appspec deben estar permitidos (el valor por defecto).
Táctica
Escalada de privilegios
Un control que lo eliminaría: Restringe codedeploy:CreateDeployment en los grupos de implementación cuyas instancias de destino tienen un perfil de instancia con privilegios; revisa los hooks de ciclo de vida de appspec.
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 codedeploy:CreateDeployment?
Puede desplegar una revisión maliciosa y ejecutar un script con el rol de las instancias objetivo.
¿Qué más hace falta para que codedeploy:CreateDeployment sea peligroso?
Solo se convierte en escalada cuando se combina con codedeploy:RegisterApplicationRevision. 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 secuestro del rol de la instancia de destino de CodeDeploy?
Vigila CreateDeployment, RegisterApplicationRevision 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 codedeploy:CreateDeployment en grupos de despliegue cuyas instancias de destino tengan un perfil de instancia con privilegios; revisa los hooks de ciclo de vida de appspec. 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.