Schlangenbisse: Vorsicht vor böswilligen Python-Bibliotheken

Anfang dieser Woche wurden zwei Python-Bibliotheken mit schädlichem Code aus dem Python Package Index (PyPI) entfernt, dem offiziellen Python-Repository für Pakete von Drittanbietern.

Es ist die neueste Inkarnation eines Problems, mit dem viele moderne Softwareentwickler konfrontiert sind, und wirft eine wichtige Frage für alle Entwickler auf, die sich auf Open Source-Software verlassen: Wie können Sie es Menschen ermöglichen, ihren eigenen Code zur Wiederverwendung in ein gemeinsames Repository einzubringen? , ohne dass diese Repos zu Überträgern für Angriffe werden?

Im Großen und Ganzen sind die offiziellen Bibliotheksrepositorys von Drittanbietern für Sprachen, die als Open Source-Projekte wie Python ausgeführt werden, sicher. Böswillige Versionen einer Bibliothek können sich jedoch schnell verbreiten, wenn sie nicht aktiviert sind. Und die Tatsache, dass die meisten dieser Sprachspeicher von Freiwilligen überwacht werden, bedeutet, dass nur so viele Augen auf den Ausguck gerichtet sind und Beiträge nicht immer die erforderliche Kontrolle erhalten.

Die beiden bösartigen Pakete, die diese Woche aus PyPI entfernt wurden, verwendeten einen Trick namens "Tippfehler-Squatting", dh die Auswahl von Namen, die den häufig verwendeten Paketen ähnlich sind, um eine Benachrichtigung zu vermeiden. Dies kann zu einer versehentlichen Installation führen, wenn jemand den beabsichtigten Namen falsch eingibt. Beim Versuch, sich als dateutilund jellyfish-Pakete zu tarnen, die zum Bearbeiten von Python-Datetime-Objekten und zum Durchführen von ungefähren Übereinstimmungen für Zeichenfolgen verwendet werden, wurden die schädlichen Pakete benannt  python-dateutilund jeIlyfish (mit einem Großbuchstaben I anstelle des ersten Kleinbuchstaben L).

Bei der Installation  python-dateutilund jeIlyfishgenau wie bei den Originalen - außer beim Versuch, dem Entwickler personenbezogene Daten zu stehlen. Paul Ganssle, ein Entwickler im dateutilTeam, sagte gegenüber ZDNet, dass der wahrscheinliche Grund für den Angriff darin bestehe, herauszufinden, an welchen Projekten das Opfer gearbeitet habe, um später Angriffe auf diese Projekte zu starten.

Python-Bibliotheken fallen im Allgemeinen in zwei Lager: die Module, aus denen die mit der Python-Laufzeit gelieferte Standardbibliothek besteht, und auf PyPI gehostete Pakete von Drittanbietern. Während die Module in der Standardbibliothek genauestens geprüft und streng überprüft werden, ist PyPI von Natur aus weitaus offener, sodass die Community der Python-Benutzer Pakete zur Wiederverwendung frei beitragen kann.

Auf PyPI wurden bereits bösartige Projekte gefunden. In einem Fall haben bösartige Pakete das Django-Framework, ein Grundnahrungsmittel der Webentwicklung in Python, mit Tippfehlern besetzt. Das Problem scheint jedoch immer dringlicher zu werden. 

"Als Mitglied des Python-Sicherheitsteams (PSRT) erhalte ich jede Woche Berichte über Tippfehler oder bösartige Pakete", sagte Christian Heimes, ein Kernentwickler von Python, im offiziellen Entwicklungsdiskussionsforum von Python. "(Unterhaltsame Tatsache: Es gab diesen Monat vier E-Mail-Threads über schädliche Inhalte auf PyPI und heute ist nur der 4. Dezember.)" 

Die Python Software Foundation hat Pläne zum Schutz von PyPI vor Missbrauch auf dem Tisch, aber die vollständige Einführung wird einige Zeit in Anspruch nehmen. Anfang dieses Jahres hat das Python-Team die Zwei-Faktor-Authentifizierung als Option für PyPI-Benutzer eingeführt, die Pakete hochladen. Dies bietet Entwicklern, die auf PyPI hochladen, eine Schutzschicht, die es schwieriger macht, ihre Konten zu entführen und Malware in ihrem Namen hochzuladen. Aber es geht nicht um Tippfehler oder andere Missbräuche des Gemeinwesens.

Andere Initiativen umfassen die Suche nach Möglichkeiten, um diese Probleme mit der Automatisierung auszugleichen. Die Arbeitsgruppe innerhalb der Python Software Foundation, die sich mit dem Verpacken befasst, hat von Facebook Research einen Zuschuss erhalten, um erweiterte PyPI-Sicherheitsfunktionen wie die kryptografische Signatur von PyPI-Paketen und die automatische Erkennung böswilliger Uploads (anstelle einer arbeitsintensiven manuellen Überprüfung) zu erstellen.

Auch Dritte bieten einen gewissen Schutz. Reversing Labs, eine unabhängige Sicherheitsfirma, entdeckte einen PyPI-basierten Angriff, nachdem das gesamte Repository nach verdächtigen Dateiformaten durchsucht worden war. Das Unternehmen räumt jedoch ein, dass solche Scans keinen Ersatz für die interne Überprüfung darstellen. "Um die Möglichkeit des Hostings von Malware erheblich zu verringern", schrieb das Unternehmen, "würden solche Repositorys alle von einer kontinuierlichen Verarbeitung und einem besseren Überprüfungsprozess profitieren."

Die beste Lösung muss, wie Pythons eigene Entwickler wissen, von innen kommen.