Paketmanager: PyPI-Pakete wurden versehentlich mit Malware ausgeliefert

Plattformen wie PyPI werden gern genutzt, um Softwarepakete mit Schadcode auszuliefern – bisweilen auch unabsichtlich, wie ein aktueller Fall zeigt.

In Pocket speichern vorlesen Druckansicht 31 Kommentare lesen

(Bild: RaiDztor/Shutterstock.com)

Lesezeit: 3 Min.
Von
  • Frank-Michael Schlede

Ein GitHub-Nutzer hatte im Mai festgestellt, dass im Repository des Paketmanagers PyPI einige Softwarepakete zu finden waren, die Schadcode beinhalteten. Es handelte sich dabei um die Pakete keep, pyanxdns und api-res-py, die mit einer Hintertür versehen waren, die auf Abhängigkeiten des mit Malware infizierten request-Moduls basierte.

Da Sicherheitsforscherinnen und -forscher immer wieder von Schadcode in Paketen auf Plattformen wie PyPI oder npm berichten, lag auch diesem Fall der Verdacht nahe, dass hier ein gezielter Angriff auf die Software-Lieferkette erfolgt. So fanden Experten bei einer Untersuchung heraus, dass zwar die gängigen Versionen des keep-Projekts das legitime Python-Modul requests für HTTP-Anfragen verwenden, aber in keep in der Version 1.2 request (ohne s) enthalten war – eine Version, die Malware beinhaltete. Aus diesem Grund wurden folgende CVEs zugewiesen:

  • CVE-2022-30877: die keep-Version 1.2 enthält die Hintertür request (im Gegensatz zur Aussage im Advisory).
  • CVE-2022-30882 - pyanxdns Version 0.2 ist betroffen.
  • CVE-2022-31313 - api-res-py Version 0.1 ist ebenfalls betroffen.

Während es sich bei pyanxdns und api-res-py um relativ kleine Projekte handelt, sieht die Lage beim keep-Paket kritischer aus: Es wird im Durchschnitt über 8.000 Mal pro Woche heruntergeladen – und zwar in der Version 1.2, die die bösartige Abhängigkeit nutzt:

In solchen Fällen, leicht zu verwechselnder Paketnamen, bleibt stets die Frage, ob dahinter Absicht steckt oder nur ein "schneller Tipp-Fehler"? Den Machern hinter der Webseite BleepingComputer ist es gelungen, den Kontakt zum Autor eines betroffenen Pakets aufzunehmen. Sie haben daraufhin von Marky Egebäck, dem Autor und Betreuer von pyanxdns, eine Rückmeldung erhalten. Darin bestätigt er, dass es sich bei diesem Problem um einen Tippfehler und nicht um eine Kompromittierung eines Accounts handelt. Weitere Recherchen zeigten, dass die Autoren der beiden anderen Pakete aufgrund eines Tippfehlers in der Datei setup.py ebenfalls versehentlich request anstelle des legitimen requests eingeführt haben. Inzwischen liegen neue Versionen auf PyPI bereit, die keine Abhängigkeit auf request mehr enthalten.

Dieses Beispiel zeigt deutlich, wie schnell einfache Tippfehler anschließend zu erfolgreichen Typosquatting-Angriffen führen können. Beim Typosquatting geben die Entwickler von Schadcode ihren Paketen beispielsweise Namen, die den Bezeichnungen beliebter Pakete ähneln. Dabei nutzen sie zum einen Tippfehler und verwenden zum anderen Trennzeichen wie Unter- und Bindestriche. Oder es wird – wie in diesem Beispiel – einfach ein Buchstabe angehängt.

Wenn Entwicklerinnen und Entwickler Anwendungen programmieren, können solche "unschuldigen Tippfehler" ungewollt zum Erfolg von Typosquatting-Angriffen führen, die sich genau solche Fehler zunutze machen, um die gesamte Software-Lieferkette zu gefährden.

(fms)