
Ejemplo de código para usar el exploit CVE-2019-5736 para minar bitcoin sin asociación con el contenedor o usuario original.
Esto usa dos bibliotecas de código abierto:
Esto fue probado en Kali Linux, con Docker versión 18.03.0 y RunC versión 1.0.0-rc5.
El escape del contenedor Docker inicia múltiples daemons de minería que pertenecen al proceso #1 (el kernel). Esto significa que los recursos de la computadora se utilizan para la minería sin que los recursos del script/cómputo estén asociados con tu contenedor.
Esto aprovecha CVE-2019-5736. Cuando se ejecuta el contenedor, Docker usa docker-runc para ejecutarlo, y accedemos al pid de runc que está ejecutando nuestro contenedor. Luego pasamos la ejecución a otro programa (overwrite_runc) con el enlace simbólico al binario de runc. Este enlace simbólico nos apunta directamente al descriptor de archivo del binario de runc. Esto nos permite abrir el descriptor de archivo de runc para escritura y sobrescribirlo. Al sobrescribirlo con un script malicioso, cuando el contenedor se apaga, ejecuta el script con privilegios de root, permitiéndonos iniciar un criptominero.
Esto sobrescribe el binario de runc en el entorno de prueba, por lo que copiar el real es inteligente antes de ejecutar esto.
No uses esto en sistemas reales y vulnerables.