AWS - ECS Privesc
ECS
Maggiori informazioni su ECS in:
AWS - ECS Enumiam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:RunTask
Un attaccante che abusa delle autorizzazioni iam:PassRole
, ecs:RegisterTaskDefinition
e ecs:RunTask
in ECS può generare una nuova definizione di task con un container dannoso che ruba le credenziali dei metadati e eseguirlo.
Impatto Potenziale: Privilege escalation diretto a un ruolo ECS diverso.
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
Proprio come nell'esempio precedente, un attaccante che abusa dei permessi iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:StartTask
in ECS può generare una nuova definizione di task con un container malevolo che ruba le credenziali dei metadati e eseguirlo.
Tuttavia, in questo caso, è necessario un'istanza di container per eseguire la definizione di task malevola.
Potenziale Impatto: Privilegio escalation diretto a qualsiasi ruolo ECS.
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, ecs:RegisterTaskDefinition
, (ecs:UpdateService|ecs:CreateService)
Proprio come nell'esempio precedente, un attaccante che abusa dei permessi iam:PassRole
, ecs:RegisterTaskDefinition
, ecs:UpdateService
o ecs:CreateService
in ECS può generare una nuova definizione di task con un container malevolo che ruba le credenziali dei metadati e eseguirlo creando un nuovo servizio con almeno 1 task in esecuzione.
Impatto Potenziale: Privilegio escalation diretto a qualsiasi ruolo ECS.
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
iam:PassRole
, (ecs:UpdateService|ecs:CreateService)
In realtà, solo con questi permessi è possibile utilizzare overrides per eseguire comandi arbitrari in un container con un ruolo arbitrario con qualcosa come:
Impatto Potenziale: Privilege escalation diretto a qualsiasi ruolo ECS.
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
ecs:RegisterTaskDefinition
, (ecs:RunTask|ecs:StartTask|ecs:UpdateService|ecs:CreateService)
Questo scenario è simile ai precedenti ma senza il permesso iam:PassRole
.
Questo è comunque interessante perché se puoi eseguire un container arbitrario, anche senza un ruolo, potresti eseguire un container privilegiato per evadere al nodo e rubare il ruolo IAM di EC2 e i ruoli degli altri container ECS in esecuzione nel nodo.
Potresti persino forzare altri task a eseguire all'interno dell'istanza EC2 che comprometti per rubare le loro credenziali (come discusso nella sezione Privesc to node).
Questo attacco è possibile solo se il cluster ECS utilizza istanze EC2 e 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 attaccante con i permessi ecs:ExecuteCommand
, ecs:DescribeTasks
può eseguire comandi all'interno di un container in esecuzione ed esfiltrare il ruolo IAM ad esso associato (sono necessari i permessi di describe perché è necessario eseguire aws ecs execute-command
).
Tuttavia, per fare ciò, l'istanza del container deve eseguire l'agente ExecuteCommand (che per impostazione predefinita non è attivo).
Pertanto, l'attaccante potrebbe provare a:
Provare a eseguire un comando in ogni container in esecuzione
Se ha
ecs:RunTask
, esegui un task conaws ecs run-task --enable-execute-command [...]
Se ha
ecs:StartTask
, esegui un task conaws ecs start-task --enable-execute-command [...]
Se ha
ecs:CreateService
, crea un servizio conaws ecs create-service --enable-execute-command [...]
Se ha
ecs:UpdateService
, aggiorna un servizio conaws ecs update-service --enable-execute-command [...]
Puoi trovare esempi di queste opzioni nelle sezioni precedenti di ECS privesc.
Impatto Potenziale: Privesc a un ruolo diverso associato ai container.
ssm:StartSession
ssm:StartSession
Controlla nella pagina ssm privesc come puoi abusare di questo permesso per privesc a ECS:
AWS - SSM Privesciam:PassRole
, ec2:RunInstances
iam:PassRole
, ec2:RunInstances
Controlla nella pagina ec2 privesc come puoi abusare di questi permessi per privesc a ECS:
AWS - EC2 Privesc?ecs:RegisterContainerInstance
?ecs:RegisterContainerInstance
TODO: È possibile registrare un'istanza da un diverso account AWS in modo che i task vengano eseguiti su macchine controllate dall'attaccante??
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, ecs:DescribeTaskSets
TODO: Testare questo
Un attaccante con i permessi ecs:CreateTaskSet
, ecs:UpdateServicePrimaryTaskSet
, e ecs:DescribeTaskSets
può creare un task set dannoso per un servizio ECS esistente e aggiornare il task set primario. Questo permette all'attaccante di eseguire codice arbitrario all'interno del servizio.
Impatto Potenziale: Eseguire codice arbitrario nel servizio interessato, potenzialmente influenzando la sua funzionalità o esfiltrando dati sensibili.
Riferimenti
Last updated