Docker release_agent cgroups escape
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Para más detalles, consulta el post original del blog. Este es solo un resumen:
Original PoC:
La prueba de concepto (PoC) demuestra un método para explotar cgroups creando un archivo release_agent
y provocando su invocación para ejecutar comandos arbitrarios en el host del contenedor. Aquí hay un desglose de los pasos involucrados:
Preparar el Entorno:
Se crea un directorio /tmp/cgrp
para servir como punto de montaje para el cgroup.
El controlador de cgroup RDMA se monta en este directorio. En caso de ausencia del controlador RDMA, se sugiere usar el controlador de cgroup memory
como alternativa.
Configurar el Cgroup Hijo:
Se crea un cgroup hijo llamado "x" dentro del directorio cgroup montado.
Se habilitan las notificaciones para el cgroup "x" escribiendo 1 en su archivo notify_on_release.
Configurar el Agente de Liberación:
La ruta del contenedor en el host se obtiene del archivo /etc/mtab.
El archivo release_agent del cgroup se configura para ejecutar un script llamado /cmd ubicado en la ruta del host adquirida.
Crear y Configurar el Script /cmd:
El script /cmd se crea dentro del contenedor y se configura para ejecutar ps aux, redirigiendo la salida a un archivo llamado /output en el contenedor. Se especifica la ruta completa de /output en el host.
Disparar el Ataque:
Se inicia un proceso dentro del cgroup hijo "x" y se termina inmediatamente.
Esto activa el release_agent
(el script /cmd), que ejecuta ps aux en el host y escribe la salida en /output dentro del contenedor.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)