Erneut Schadcode im Python-Paketmanager aufgetaucht

Zwei PyPI-Pakete setzen auf Namensähnlichkeit, um Schadcode in andere Projekte einzuschleusen.

In Pocket speichern vorlesen Druckansicht 24 Kommentare lesen
Erneut Schadcode im Python-Repository gefunden
Lesezeit: 3 Min.
Von
  • Rainald Menge-Sonnentag

Im offiziellen Python-Paketmanager PyPI (Python Package Index) hat ein Entwickler zwei Pakete gefunden, die Schadcode in Projekte einschleusen sollten. Beide Pakete tarnten sich mit Namen, die nützlichen Paketen ähneln, um eigenen Code zu ersetzen. Während ein Paket von Ende November stammt, existierte das andere bereits seit einem Jahr unentdeckt.

Das ältere Paket heißt jeIlyfish und ähnelt damit dem jellyfish-Paket. Es handelt sich bei der Schreibweise eher um eine Tarnung als um klassisches Typosquatting, da es das erste kleine "l" durch ein großes "I" ersetzt. Das Paket enthält den eigentlichen Schadcode, der über einen Umweg versucht SSH- und GPG-Schlüssel vom Rechner auszulesen und an die IP-Adresse http://68.183.212.246 zu schicken. Ausschnitte finden sich in dem GitHub-Issue, mit dem der in Mannheim lebende Entwickler Lukas Martini den Angriff beschrieben hat.

Ende November tauchte im Paketmanager ein weiteres Paket auf, das den Namen python3-dateutil trägt und auf Projekte zielt, die die dateutil-Library integrieren. Das Paket enthält zwar selbst keinen Schadcode, importiert aber seinerseits jeIlyfish. Auch dort findet sich die verdächtigen Zeilen nicht direkt.

Die Newssite ZDNet hat mit Paul Ganssle einen der Entwickler des richtigen dateutil-Pakets gebeten, den Schadcode genauer zu untersuchen. Die jeIlyfish-Bibliothek lädt eine Datei mit dem Namen hashsum von GitLab, die es in eine Python-Datei dekodiert und ausführt. Neben dem versuchten Hochladen der SSH- und GPG-Schlüssel sucht und durchsucht der Schadcode einige Verzeichnisse. Nach Ganssles Einschätzung soll er auf die Weise die passenden Ressourcen zu den Schlüsseln aufspüren.

Inzwischen haben die PyPI-Betreiber sowohl jeIlyfish als auch python3-dateutil aus dem Paketmanager entfernt. Betroffene sollten somit lediglich eine Fehlermeldung wegen des oder der fehlenden Ressourcen finden. In dem Fall sollten sie dringend handeln, da es durchaus möglich ist, dass der Schadcode zuvor bereits die Schlüssel abgegriffen hat.

Ähnliche Angriffe fallen immer wieder auf. Beim Typosquatting geben die Entwickler von Schadcode ihren Paketen Namen, die den Bezeichnungen beliebter Pakete ähneln. Dabei nutzen sie zum einen Tippfehler und verwenden zum anderen Trennzeichen wie Unter- und Bindestrichen. Aus einem my-packet wird my-paket, mypacket oder my_packet. Irgendwer wird sich schon vertippen, so die durchaus berechtigte Annahme der Angreifer. Vor zwei Jahren hat das slowakische CERT SK-CSIRT eine Liste von zehn Paketen gemeldet, die darauf setzten und beispielsweise crypt statt crypto oder urllib beziehungsweise urlib3 statt urllib3 hießen.

Kurz zuvor stand der JavaScript-Paketmanager npm im Visier von Angreifern. Im Sommer 2017 erregte der Fall von hacktask Aufmerksamkeit, der wie aus einem Lehrbuch für Typosquatting unter anderem Pakete mit den Namen jquery.js statt jquery, babelcli statt babel-cli und ffmepg statt ffmpeg veröffentlicht hatte. Aufgefallen war schließlich der Schadcode in crossenv, das auf cross-env-Nutzer zielte. Insgesamt 40 Pakete von hacktask hat npm seinerzeit entfernt. (rme)