Flut von Angriffen auf Paketmanager PyPI schleust Backdoor in Python-Pakete ein

Nachdem zunächst Sonatype einen Angriff auf fünf Pakete im Python-Paketmanager entdeckt hat, füllt sich die CVE-Schwachstellendatenbank mit weiteren Vorfällen.

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

(Bild: BeeBright / Shutterstock.com)

Von
  • Rainald Menge-Sonnentag

Derzeit läuft offensichtlich ein großangelegter Angriff auf Inhalte im Python-Paketmanager PyPI. Sonatype hatte zunächst fünf Pakete mit Schadcode identifiziert, der sensible Daten wie AWS-Schlüssel und weitere Secrets an eine anfangs ungeschützte öffentliche Site hochgeladen hat. Seitdem sind zahlreiche weitere Vorfälle in der CVE-Datenbank (Common Vulnerabilities and Exposures) aufgetaucht.

Die fünf angegriffenen Pakete, die Sonatype ausgemacht hat, stellen namentlich eine eigentümliche Mischung dar. Während loglib-modules und pyg-modules offensichtlich auf Entwicklerinnen und Entwickler zielen, die die PyPI-Pakete loglib und pyg verwenden, findet sich für die anderen drei kein direkter Bezug zu bekannten Python-Paketen. Sie heißen pygrata, pygrata-utils und hkg-sol-utils.

Auch die beiden bekannten Pakete sind nicht wirklich stark verbreitet. Das als Alternative zum Paketmanagertool pip gestartete pyg ist laut der Projektbeschreibung offiziell tot und setzt noch auf die veralteten Python-Version 2.6 und 2.7.

Einige der Pakete enthalten direkten Schadcode, und andere laden ihn erst über eine Dependency nach. Sonatype hat im Blogbeitrag einen Screenshot eines Codeausschnitts veröffentlicht, der unter anderem den Zugriff auf Amazon-Credentials, Informationen zum Netzwerkinterface und Umgebungsvariablen zeigt.

Der Code versucht unterschiedliche Secrets auszulesen.

(Bild: Sonatype)

Der Bezug zu den beiden Paketen mit Pygrata im Namen ergibt sich im weiteren Schadcode, der die abgegriffenen Informationen auf Endpunkte der gleichnamigen .com-Domain hochlädt. Interessanterweise war diese zunächst ungeschützt erreichbar, sodass die Sicherheitsforscher Zugriff auf die hochgeladenen Textdateien erhielten.

Sonatype hat die Betreiber der Domain daraufhin kontaktiert und sie über den Vorfall und den mangelnden Zugriffsschutz informiert. Damit wollten die Sicherheitsforscher ausschließen, dass es sich bei den Angreifern um ein legitim handelndes Red Team handelt, das gezielt die Security untersucht. Dass die Betreiber der Domain eine Antwort schuldig blieben, aber den öffentlichen Zugriff auf Pygrata in Folge sperrten, legt die Vermutung nahe, dass es sich um einen gezielten, bösartigen Angriff handelte.

Die PyPI-Betreiber haben die fünf Pakete inzwischen entfernt. Seitdem sind auf der Plattform zahlreiche weitere Packages mit Schadcode aufgetaucht. Eine Suche nach "pypi" im Frontend der National Vulnerability Database zeigt alleine zwanzig Treffer vom 24. Juni. Alle Ergebnisse haben dieselbe Beschreibung der Schwachstelle, die auf eine Backdoor hinweist.

Vergiftete Pakete

Schadcode in Open-Source-Paketen gehört zu den verbreiteten Angriffen auf die Software Supply Chain. Angreiferinnen und Angreifer veröffentlichen auf Paketmanagern vermeintlich nützliche Pakete, die Developer in ihren Anwendungen verwenden. Häufige Methoden sind das Typosquatting und das Brandjacking. Letzteres verwendet Firmennamen wie Twilio, um eine legitime Quelle vorzutäuschen.

Beim Typosquatting tragen die Pakete mit Schadcode Namen, die den Bezeichnungen beliebter Pakete ähneln. Die Methode setzt zum einen auf Tippfehler und verwendet zum anderen Trennzeichen wie Unter- und Bindestriche. Aus my-packet wird my-paket, mypacket oder my_packet. Irgendwer wird sich schon vertippen, so die berechtigte Hoffnung der Angreifenden.

Ein weiterer Angriffsvektor sind zunächst nützliche und harmlose Pakete, die den Schadcode erst dann mitbringen, wenn sie eine gewisse Verbreitung erreicht haben. Das npm-Team hatte 2019 mit electron-native-notify ein solches Package entdeckt. Schließlich versucht Dependency Confusion intern gehostete Dependencies durch gleichnamige externe Pakete mit Schadcode zu ersetzen. Letztere bekommen dazu eine hohe Versionsnummer, da die Paketinstallationswerkzeuge wie pip je nach Einstellung das Paket mit der höchsten Nummer verwenden, das vermeintlich das aktuellste ist.

Weitere Details zu der ursprünglichen Attacke lassen sich dem Sonatype-Blog entnehmen. Mitte Juni hatte die Open Source Security Foundation (OpenSSF) angekündigt, die Python Software Foundation mit 400.000 US-Dollar zu unterstützen. Die Stiftung ist unter anderem für den Paketmanager PyPI verantwortlich, und das Geld soll zusätzlichen Security-Maßnahmen dienen.

(rme)