AWS - ECS Privesc
ECS
Más información sobre ECS en:
pageAWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Un atacante que abuse de los permisos iam:PassRole
, ecs:RegisterTaskDefinition
y ecs:RunTask
en ECS puede generar una nueva definición de tarea con un contenedor malicioso que robe las credenciales de metadatos y ejecutarlo.
Impacto Potencial: Escalada de privilegios directos a un rol ECS diferente.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Al igual que en el ejemplo anterior, un atacante que abuse de los permisos iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
en ECS puede generar una nueva definición de tarea con un contenedor malicioso que robe las credenciales de metadatos y ejecutarlo.
Sin embargo, en este caso, se necesita una instancia de contenedor para ejecutar la definición de tarea maliciosa.
Impacto Potencial: Escalada de privilegios directa a cualquier rol de ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Al igual que en el ejemplo anterior, un atacante que abuse de los permisos iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
o ecs:CreateService
en ECS puede generar una nueva definición de tarea con un contenedor malicioso que robe las credenciales de metadatos y ejecutarlo creando un nuevo servicio con al menos 1 tarea en ejecución.
Impacto Potencial: Escalada de privilegios directa a cualquier rol de ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Este escenario es similar a los anteriores pero sin el permiso iam:PassRole
.
Aún es interesante porque si puedes ejecutar un contenedor arbitrario, incluso si es sin un rol, podrías ejecutar un contenedor privilegiado para escapar al nodo y robar el rol IAM de EC2 y los otros roles de contenedores ECS que se ejecutan en el nodo.
Incluso podrías forzar a otras tareas a ejecutarse dentro de la instancia EC2 comprometida para robar sus credenciales (como se discute en la sección Escalada de privilegios al nodo).
Este ataque solo es posible si el clúster de ECS está utilizando instancias EC2 y no Fargate.
ecs:ExecuteCommand
, ecs:DescribeTasks
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:ExecuteCommand
, ecs:DescribeTasks
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Un atacante con los permisos ecs:ExecuteCommand
, ecs:DescribeTasks
puede ejecutar comandos dentro de un contenedor en ejecución y extraer el rol IAM adjunto a él (se necesitan los permisos de descripción porque es necesario ejecutar aws ecs execute-command
).
Sin embargo, para lograrlo, la instancia del contenedor debe estar ejecutando el agente ExecuteCommand (lo cual no es el caso de forma predeterminada).
Por lo tanto, el atacante podría intentar:
Intentar ejecutar un comando en cada contenedor en ejecución
Si tiene
ecs:RunTask
, ejecute una tarea conaws ecs run-task --enable-execute-command [...]
Si tiene
ecs:StartTask
, ejecute una tarea conaws ecs start-task --enable-execute-command [...]
Si tiene
ecs:CreateService
, cree un servicio conaws ecs create-service --enable-execute-command [...]
Si tiene
ecs:UpdateService
, actualice un servicio conaws ecs update-service --enable-execute-command [...]
Puedes encontrar ejemplos de esas opciones en secciones anteriores de privesc de ECS.
Impacto potencial: Privesc a un rol diferente adjunto a contenedores.
ssm:StartSession
ssm:StartSession
Verifica en la página de privesc de ssm cómo puedes abusar de este permiso para privesc a ECS:
pageAWS - SSM Privesciam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Verifica en la página de privesc de ec2 cómo puedes abusar de estos permisos para privesc a ECS:
pageAWS - EC2 Privesc?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: ¿Es posible registrar una instancia desde una cuenta de AWS diferente para que las tareas se ejecuten en máquinas controladas por el atacante??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Probar esto
Un atacante con los permisos ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
y ecs:DescribeTaskSets
puede crear un conjunto de tareas maliciosas para un servicio ECS existente y actualizar el conjunto de tareas principal. Esto permite al atacante ejecutar código arbitrario dentro del servicio.
Impacto Potencial: Ejecutar código arbitrario en el servicio afectado, potencialmente afectando su funcionalidad o exfiltrando datos sensibles.
Referencias
Última actualización