
Proof-of-Concept-Exploit für CVE-2024-21542, der beliebiges Schreiben von Dateien mittels Zip Slip im Luigi-Pipeline-Manager demonstriert. Erzeugt schädliche Archive, um Dateien außerhalb des Extraktionsverzeichnisses zu überschreiben.
luigi ist ein Paket, das Ihnen hilft, komplexe Pipelines von Batch-Jobs zu erstellen. Es kümmert sich um Abhängigkeitsauflösung, Workflow-Management, Visualisierung, Fehlerbehandlung, Kommandozeilenintegration und vieles mehr.
Betroffene Versionen dieses Pakets sind anfällig für beliebiges Dateischreiben via Archivextraktion (Zip Slip) aufgrund einer unzureichenden Validierung des Ziel-Dateipfads in der Funktion _extract_packages_archive.
Dies wird mittels eines speziell präparierten Zip-Archivs ausgenutzt, das Dateinamen mit Pfad-Traversal enthält. Im Falle einer Ausnutzung wird ein Dateiname aus einem bösartigen Archiv mit dem Ziel-Extraktionsverzeichnis verknüpft, was dazu führt, dass der endgültige Pfad außerhalb des Zielordners liegt. Beispielsweise kann ein Zip eine Datei mit dem Pfad „../../file.exe“ enthalten und so den Zielordner verlassen. Wenn eine ausführbare Datei oder eine Konfigurationsdatei mit einer Datei überschrieben wird, die bösartigen Code enthält, kann das Problem leicht zu einer Möglichkeit der beliebigen Codeausführung werden.
Im Folgenden finden Sie ein Beispiel für ein Zip-Archiv mit einer harmlosen und einer bösartigen Datei. Das Extrahieren der bösartigen Datei führt dazu, dass der Zielordner verlassen wird, und landet in /root/.ssh/ und überschreibt die Datei authorized_keys:
+2018-04-15 22:04:29 ..... 19 19 good.txt
+2018-04-15 22:04:42 ..... 20 20 ../../../../../../root/.ssh/authorized_keys
Erstellen Sie das bösartige packages.tar
python3 xpl.py
Übergeben Sie es als Argument für luigi/contrib/lsf_runner.py
Überprüfen Sie Ihr /tmp/fodac :)
https://security.snyk.io/vuln/SNYK-PYTHON-LUIGI-7830489
https://github.com/spotify/luigi/commit/b5d1b965ead7d9f777a3216369b5baf23ec08999
https://github.com/spotify/luigi/issues/3301