Paketmanager: Kryptomining-Schadcode auf PyPI zielt auf Data-Science-Projekte

Mit Namen wie mplatlib setzen die Pakete auf Verwechslung zu matplotlib. Sie laden ein Bash-Skript herunter, das versucht einen Kryptominer zu installieren.

Lesezeit: 3 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen 3 Beiträge

(Bild: Shutterstock)

Update
Von
  • Rainald Menge-Sonnentag

Erneut meldet Sonatype den Fund von Schadcode in sechs Paketen im Python-Software-Repository PyPI (Python Package Index). Alle Packages stammen vom selben Autor und laden über Umwege ein Bash-Skript herunter, das wiederum versucht ein Kryptomining-Tool zu installieren.

Die ältesten Pakete stammen bereits vom April. Insgesamt kommen die Packages auf 5000 Downloads, wobei die Zahl der betroffenen User vermutlich nur etwa die Hälfte ausmacht: Der Code zum Download des Bash-Skripts befindet sich in der am häufigsten heruntergeladenen Datei, die wiederum von den anderen Paketen nachgeladen wird.

Die Pakete geben mit den Namen maratlib, maratlib1, matplatlib-plus, mllearnlib, mplatlib und learninglib eine Nähe zu Data Science und Machine Learning vor. Einige setzen dabei wohl auf Typosquatting, also Schadcode in Paketen mit Namen, die populären Packages ähneln. Sie enthalten oft bewusst Tippfehler oder Trennzeichen wie Unter- oder Bindestriche oder Namenszusätze wie plus.

Offensichtlich startet das Paket maratlib den Angriff, und die meisten anderen Paketen haben es als direkte Dependency eingetragen, um es nachzuladen. Der Schadcode, der sich in der Installationsroutine setup.py befindet, ist wohl in der aktuellen Version 1.0 von maratlib stark verschleiert, aber laut Sonatype findet sich in Version 0.6 der Download eines Bash-Skripts von GitHub im Klartext.

Der Aufruf der URL zum GitHub-Repository in der alten Version des Schadpakets weist inzwischen ins Leere.

(Bild: Sonatype)

Unter dem Namen beziehungsweise der in der alten Version genutzten URL findet sich das Skript inzwischen nicht mehr, aber eine weitere Suche hat wohl passende Bash-Skripte unter dem Alias des Autors aufgetan, die das Kryptominingtool Ubqminer laden. Letzteres ist dabei entsprechend modifiziert, um den Schürfertrag auf eine bestimmte Wallet zu leiten.

Das Vorgehen ist kein Einzelfall: Immer wieder berichten Sicherheitsforscherinnen und -forscher von Schadcode in Paketen auf Plattformen wie PyPI oder npm. Neben Typosquatting hat sich das Brandjacking etabliert, bei dem die Pakete mit den Namen bekannter Hersteller wie Twilio einen scheinbar seriösen Anstrich erhalten. Vor Kurzem hat Google ein Framework gegen Supply-Chain-Angriffe vorgeschlagen, das neben anderen Maßnahmen das versehentliche Verwenden von Paketen mit Schadcode verhindern soll.

Die Konferenz zu sicherer Softwareentwicklung

Dieses Jahr erweitern heise Developer, heise Security und dpunkt.verlag die Konferenz für sichere Softwareentwicklung heise devSec um drei Thementage. Am 29. Juni steht beim DevSecOps-Tag das Absichern der Pipeline und damit auch der Schutz der Supply Chain im Fokus. Der Web-Application-Security-Tag thematisiert am 1. Juli in einem Vortrag konkret entsprechende Angriffe: "NPM: Bitte haben Sie noch einen Augenblick Geduld, der nächste Supply-Chain-Angriff ist gleich für Sie da."

Unabhängig von den Wertschwankungen der Kryptowährungen steht das Schürfen hoch im Kurs der Angriffe: Im April nutze Schadcode den CI/CD-Dienst (Continuous Integration / Continuous Delivery) von GitHub für ein Kryptomining-Tool. Im Mai kündigte GitLab Maßnahmen an, um ähnlichen Angriffen gegenzusteuern.

Weitere Details zum jüngsten Angriff lassen sich dem zugehörigen Blogbeitrag entnehmen. Sonatype hat die PyPI-Betreiber wohl informiert, einige der genannten Pakete, darunter maratlib, fanden sich beim Schreiben dieser Meldung jedoch weiterhin im Repository.

[Update 23.6.21 13:30 Uhr]: Laut einem Thread auf Twitter hat Sonatype die PyPI-Admins erst kurz vor der Veröffentlichung der Schwachstelle informiert. Demnach hatten die PyPI-Betreiber zu wenig Zeit, die Pakete mit dem Schadcode zu entfernen

(rme)