AWS - ECS Privesc
ECS
Plus d'informations sur ECS dans :
pageAWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Un attaquant abusant des autorisations iam:PassRole
, ecs:RegisterTaskDefinition
et ecs:RunTask
dans ECS peut générer une nouvelle définition de tâche avec un conteneur malveillant qui vole les informations d'identification des métadonnées et l'exécuter.
Impact potentiel : Élévation de privilèges directe vers un rôle ECS différent.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Tout comme dans l'exemple précédent, un attaquant abusant des autorisations iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
dans ECS peut générer une nouvelle définition de tâche avec un conteneur malveillant qui vole les informations d'identification des métadonnées et les exécute.
Cependant, dans ce cas, une instance de conteneur doit être disponible pour exécuter la définition de tâche malveillante.
Impact potentiel : Élévation de privilèges directe vers n'importe quel rôle ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Tout comme dans l'exemple précédent, un attaquant abusant des autorisations iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
ou ecs:CreateService
dans ECS peut générer une nouvelle définition de tâche avec un conteneur malveillant qui vole les informations d'identification des métadonnées et l'exécuter en créant un nouveau service avec au moins 1 tâche en cours d'exécution.
Impact potentiel : Élévation de privilèges directe vers n'importe quel rôle ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Ce scénario est similaire aux précédents mais sans l'autorisation iam:PassRole
.
Cela reste intéressant car si vous pouvez exécuter un conteneur arbitraire, même sans rôle, vous pourriez exécuter un conteneur privilégié pour vous échapper vers le nœud et voler le rôle IAM EC2 et les autres rôles des conteneurs ECS s'exécutant sur le nœud.
Vous pourriez même forcer d'autres tâches à s'exécuter à l'intérieur de l'instance EC2 que vous compromettez pour voler leurs informations d'identification (comme discuté dans la section Élévation de privilèges vers le nœud).
Cette attaque est uniquement possible si le cluster ECS utilise des instances EC2 et non 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 attaquant avec les permissions ecs:ExecuteCommand
, ecs:DescribeTasks
peut exécuter des commandes à l'intérieur d'un conteneur en cours d'exécution et exfiltrer le rôle IAM qui y est attaché (vous avez besoin des permissions de description car il est nécessaire d'exécuter aws ecs execute-command
).
Cependant, pour ce faire, l'instance du conteneur doit exécuter l'agent ExecuteCommand (ce qui n'est pas activé par défaut).
Par conséquent, l'attaquant pourrait essayer de :
Essayer d'exécuter une commande dans chaque conteneur en cours d'exécution
S'il a
ecs:RunTask
, exécute une tâche avecaws ecs run-task --enable-execute-command [...]
S'il a
ecs:StartTask
, exécute une tâche avecaws ecs start-task --enable-execute-command [...]
S'il a
ecs:CreateService
, crée un service avecaws ecs create-service --enable-execute-command [...]
S'il a
ecs:UpdateService
, met à jour un service avecaws ecs update-service --enable-execute-command [...]
Vous pouvez trouver des exemples de ces options dans les sections précédentes de privesc ECS.
Impact potentiel: Privesc vers un rôle différent attaché aux conteneurs.
ssm:StartSession
ssm:StartSession
Consultez la page de privesc ssm pour savoir comment abuser de cette autorisation pour privesc vers ECS:
pageAWS - SSM Privesciam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Consultez la page de privesc ec2 pour savoir comment abuser de ces autorisations pour privesc vers ECS:
pageAWS - EC2 Privesc?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: Est-il possible d'enregistrer une instance à partir d'un compte AWS différent afin que les tâches soient exécutées sous des machines contrôlées par l'attaquant??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Tester ceci
Un attaquant avec les autorisations ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
et ecs:DescribeTaskSets
peut créer un ensemble de tâches malveillant pour un service ECS existant et mettre à jour l'ensemble de tâches principal. Cela permet à l'attaquant d'exécuter du code arbitraire dans le service.
Impact potentiel : Exécuter du code arbitraire dans le service affecté, potentiellement impactant sa fonctionnalité ou exfiltrant des données sensibles.
Références
Dernière mise à jour