Security-Unternehmen Checkmarx kritisiert pip-Funktion Python-Skript setup.py als Malware-Angriffsvektor

Von Stephan Augsten

Anbieter zum Thema

Design-bedingt erlaubt der „Package Installer for Python", kurz pip, das automatische Ausführen beliebigen Codes im Zuge der „install“-Funktion. Das Security-Unternehmen Checkmarx warnt nun davor, sich alternativ auf die vermeintlich unkritische „download“-Option zu verlassen.

Enthält ein Python-Paket nur eine tar.gz-Datei, so resultiert selbst der simple „pip download“-Befehl in automatisierter Code-Ausführung.
Enthält ein Python-Paket nur eine tar.gz-Datei, so resultiert selbst der simple „pip download“-Befehl in automatisierter Code-Ausführung.
(Bild: Checkmarx / pypi.org)

Bei der Installation eines Python-Pakets versucht der Python-Paketmanager pip, die Metadaten dieses Pakets zu sammeln und zu verarbeiten. Er fragt beispielsweise Version und Abhängigkeiten ab, die das Paket benötigt, um richtig zu funktionieren. Dieser Prozess läuft automatisch im Hintergrund ab, indem pip das Hauptskript setup.py ausführt, das Teil der Paketstruktur ist.

Der Zweck von setup.py ist es, dem Paketmanager eine Datenstruktur zur Verfügung zu stellen, damit er versteht, wie das Paket zu behandeln ist. Die Datei setup.py ist jedoch immer noch ein normales Python-Skript, das jeden beliebigen Code enthalten kann. Ein Angreifer könne durchaus bösartigen Code in die Datei setup.py einschleusen, der dann während der Installation des Pakets automatisch ausgeführt wird, warnt Checkmarx.

„Tatsächlich enthalten viele der von uns entdeckten bösartigen Pakete bösartigen Code in der Datei setup.py", schreibt Sicherheitsforscher Yehuda Gelb im Unternehmensblog. Wer nun meint, sicherheitshalber einfach nur die schlichte Download-Funktion von pip nutzen zu können, für den hat Yehuda schlechte Nachrichten: Auch der Befehl …

pip download <Paketname>

… führe die Datei setup.py sowie jeden darin enthaltenen potenziell bösartigen Code aus. Dieses Verhalten sei kein Fehler, sondern eine bekannte, aber bereits 2014 bemängelte Funktion im Pip-Design.

Eine vorbeugende Sicherheitsmaßnahmen besteht laut Gelb darin, den Inhalt der Paketdateien unter https://pypi.org/project/<Paket>/#files zu überprüfen. Denn mit neuen pip-Versionen gebaute Pakete enthielten eine Wheels-Datei, die gegenüber der veralteten tar.gz/setup.py-Kombination bevorzugt wird. Der User könne dann sicher sein, dass er die .whl-Datei erhalte, die keinen Code auf seinem Rechner ausführt. Ist nur eine tar.gz-Datei vorhanden, so solle der Benutzer eine sichere, externe Download-Methode verwenden, z. B. einen direkten Aufruf der „simple“-Web-API von PyPi:

https://pypi.org/simple/<Paketname>

(ID:48552067)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zu Softwareentwicklung und DevOps

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung.

Aufklappen für Details zu Ihrer Einwilligung