Das Security-Research-Team von JFrog hat kürzlich eine neue Angriffsmethode im Python-Package-Index (PyPI)-Ökosystem aufgedeckt, bekannt als „Revival Hijack“. Diese Technik, die bereits aktiv ausgenutzt wurde, ermöglicht es Angreifern, gelöschte PyPI-Pakete zu übernehmen, was eine erhebliche Bedrohung für die Sicherheit von Open-Source-Software darstellt. Die Analyse ergab, dass rund 22.000 Pakete von dieser Hijacking-Methode betroffen sein könnten, was potenziell zu Hunderttausenden von bösartigen Downloads geführt hätte. Dank der proaktiven Maßnahmen von JFrog konnten schwerwiegende Folgen verhindert werden, dennoch offenbart dieser Vorfall bedeutende Schwachstellen im PyPI-System.
Was ist die Revival-Hijack-Technik?
Die Revival-Hijack-Technik macht sich eine Lücke in der PyPI-Richtlinie zunutze, die es ermöglicht, Paketnamen nach ihrer Löschung durch den ursprünglichen Autor erneut zu registrieren. Sobald ein Paket aus dem PyPI-Repository entfernt wurde, kann jeder den Paketnamen übernehmen, was Angreifern die Möglichkeit gibt, das Paket zu kapern. Dadurch besteht die Gefahr, dass Benutzer oder automatisierte Systeme unwissentlich schädlichen Code herunterladen, wenn sie versuchen, das vermeintlich legitime Paket zu installieren oder zu aktualisieren, da es wie eine reguläre neue Version aussieht.
Im Gegensatz zu anderen bekannten Angriffsvektoren wie dem Typosquatting, bei dem ähnlich klingende Paketnamen verwendet werden, setzt Revival Hijack nicht auf Fehler des Nutzers. Vielmehr wird eine Lücke in der Richtlinie ausgenutzt, was diese Methode besonders effektiv und schwer erkennbar macht.
Nachstellung des Angriffs
Um das Risiko dieser Angriffsmethode zu verdeutlichen, führte das JFrog-Team ein kontrolliertes Experiment durch. Sie erstellten ein legitimes Paket namens „revival-package“, entfernten es und registrierten es anschließend unter einem neuen Konto. Die gekaperte Version ersetzte das ursprüngliche Paket, ohne dass Benutzer oder Paketmanager gewarnt wurden. So konnte JFrog nachweisen, dass das Kapern eines entfernten PyPI-Pakets problemlos möglich ist, ohne dass gängige Python-Entwicklungstools wie “pip” nennenswerte Sicherheitswarnungen ausgeben.
In diesem Test wurde die manipulierte Version erfolgreich installiert, ohne Anzeichen dafür, dass der ursprüngliche Autor oder der Code verändert worden war – ein klarer Beweis für die Bedrohung durch diese Technik.
Das massive Bedrohungspotenzial
Bei einer weiteren Analyse konnten mehr als 120.000 entfernte Pakete auf PyPI identifiziert werden, von denen 22.000 aufgrund ihrer Beliebtheit oder Langlebigkeit als risikoreich eingestuft wurden. Diese ausgedehnte Angriffsfläche wächst monatlich, wobei durchschnittlich 309 Pakete von PyPI entfernt werden. Die Gründe für die Entfernung von Paketen sind vielfältig, darunter die Integration von Funktionen in offizielle Bibliotheken, mangelnde Wartung oder die Migration von Entwicklern zu neuen Paketen.
Beispiel aus der Praxis: Paket pingdomv3
Ein eindrucksvolles Praxisbeispiel für die Ausnutzung der Revival Hijack-Methode stellt das Paket „pingdomv3“ dar. Ursprünglich als API-Wrapper für den Website-Überwachungsdienst Pingdom entwickelt, wurde das Paket im Jahr 2020 aufgegeben. Vier Jahre später registrierte ein neuer Nutzer den identischen Paketnamen und fügte kompromittierenden Code ein. Diese Malware war darauf ausgelegt, zu erkennen, ob sie in einer Jenkins-Umgebung – einem weit verbreiteten CI/CD-Tool – ausgeführt wurde, um in diesem Fall weiteren Schadcode von einem Remote-Server nachzuladen und auszuführen.
Das Sicherheitsteam von JFrog identifizierte die Bedrohung rasch und meldete sie umgehend an die PyPI-Administratoren, die das Paket unverzüglich entfernten. Dieser Vorfall verdeutlicht, wie einfach Revival Hijack in realen Szenarien als effektive Angriffsmethode eingesetzt werden kann und welche erheblichen Risiken für die Lieferketten verschiedener IT-Umgebungen dadurch entstehen.
Schutzmaßnahmen und Empfehlungen
Zum Schutz der PyPI-Community ergriff JFrog sofort Maßnahmen, indem es über 22.000 verlassene Pakete unter einem „security_holding“-Konto reservierte. Diese Pakete wurden durch gutartige, leere Versionen ersetzt, um zu verhindern, dass Angreifer sie kapern. Während diese Maßnahme einige der anfälligsten Pakete schützt, bleibt das Risiko für andere entfernte Pakete bestehen.
Das Unternehmen setzt sich auch für strengere Richtlinien innerhalb von PyPI ein, wie z. B. das Verhindern der Wiederverwendung gelöschter Paketnamen. JFrog empfiehlt Entwicklern und Organisationen, zusätzliche Vorsichtsmaßnahmen zu ergreifen, wie z. B. die Überprüfung ihrer CI/CD-Pipelines, um sicherzustellen, dass sie keine Pakete abrufen, die aus PyPI entfernt wurden.
Fazit
Revival-Hijack deckt eine kritische Schwachstelle im PyPI-Ökosystem auf, die zu weit verbreiteten Angriffen führen könnte. Obwohl die proaktiven Maßnahmen von JFrog eine größere Sicherheitsverletzung verhindert haben, bleibt das Missbrauchspotenzial hoch. Da dieser Angriffsvektor nicht auf Benutzerfehlern beruht, stellt er ein ernstes Risiko für automatisierte Systeme und CI/CD-Pipelines dar, die Pakete häufig ohne menschliches Eingreifen aktualisieren. Sowohl für die PyPI-Betreuer als auch für die Benutzer ist es unerlässlich, wachsam zu bleiben und strengere Richtlinien umzusetzen, um diese Bedrohungen in der Lieferkette zu reduzieren.
Die komplette Untersuchung von JFrog finden sich hier: https://jfrog.com/blog/revival-hijack-pypi-hijack-technique-exploited-22k-packages-at-risk/
#JFrog