
Bildungsdemonstration des CVE-2024-21626 runc-Container-Escapes mit eBPF-basiertem Erkennungs-Gadget für Exploit-Versuche.
Dieses Repository enthält Codebeispiele für eine Anwendung, die anfällig für CVE-2024-21626 ist, sowie ein eBPF-Gadget zur Erkennung von Exploit-Versuchen.
Dieses Repository wurde im Rahmen dieses Blogbeitrags erstellt.
Das Gadget-Programm zur Erkennung dieser Schwachstelle dient nur Demonstrationszwecken. Es handelt sich nicht um eine vollständige Erkennung von CVE-2024-21626.
CVE-2024-21626 ist eine Schwachstelle in der runc-Containerlaufzeit, die in Versionen vor v1.1.12 vorhanden ist. Sie beruht darauf, dass runc beim Erstellen oder Ausführen von Befehlen innerhalb des Containers einen "geleakten" Dateideskriptor nicht rechtzeitig schließt, sodass der Container diesen Dateideskriptor erbt und Zugriff auf das Hostdateisystem erhält.
Es gibt mehrere Möglichkeiten, diese Schwachstelle auszunutzen. Dieses Repository zeigt, wie diese Schwachstelle zur Laufzeit ausgenutzt werden kann.
Weitere Informationen finden Sie hier.
Damit diese Demo funktioniert, müssen Sie sicherstellen, dass Ihr System eine runc-Version <= 1.1.11 ausführt.
leaky-app ist eine Go-Anwendung, die einen Symlink auf den potenziell geleakten Dateideskriptor erstellt. Um das Docker-Image zu erstellen:
make leaky-app
Um das eBPF-Gadget zu erstellen, benötigen Sie das ig-Tool.
Sie können das Gadget wie folgt erstellen:
make gadget
Sobald beide erstellt sind, führen Sie das Gadget mit folgendem Befehl aus:
IG_EXPERIMENTAL=true sudo -E ig run trace-symlink:latest
Öffnen Sie eine weitere Shell und starten Sie den leaky-app-Container:
docker run --rm --name leaky-app leaky-app
Sie sollten sehen, dass das Gadget den Container ausgibt, der den Symlink-Systemaufruf aufgerufen hat.
Dieses Repository enthält eine Demonstrationsanwendung, die zur Veranschaulichung der Erkennung von CVE-2024-21626 entwickelt wurde. Es ist wichtig zu beachten, dass diese Demonstration ausschließlich zu Bildungszwecken dient und nicht als praktisches Erkennungswerkzeug betrachtet werden sollte. Die in dieser Demo implementierten Erkennungsmechanismen decken nicht alle Szenarien ab und geben die Komplexität der Erkennung dieser Schwachstelle nicht genau wieder.