Forscher von GitGuardian haben die Ergebnisse ihrer Analyse vertraulicher Daten veröffentlicht, die von Entwicklern im Code hinterlassen wurden, der in dem Python-Paket-Repository PyPI (Python Package Index) gehostet wird. Nach der Untersuchung von über 9,5 Millionen Dateien und 5 Millionen Paketreleases, die mit 450.000 Projekten verbunden sind, wurden 56.866 Fälle von Datenlecks identifiziert. Berücksichtigt man nur einzigartige Daten ohne Duplikate in verschiedenen Releases, beträgt die Zahl der identifizierten Lecks 3.938, und die Zahl der Projekte, in denen mindestens ein Leck vorhanden ist, liegt bei 2.922.
Insgesamt wurden über 150 Arten von Lecks vertraulicher Informationen identifiziert, darunter gewöhnliche Passwörter, kryptografische Schlüssel, Tokens für Cloud-Dienste, kontinuierliche Integrationssysteme und APIs. Mindestens 768 Anmeldedaten waren zum Zeitpunkt der Studie noch gültig. Als Beispiele für häufige, weiterhin relevante Lecks werden Schlüssel für Azure Active Directory, Anmeldedaten für SSH, MongoDB, MySQL und PostgreSQL, Schlüssel für GitHub OAuth App, Dropbox und Auth0 sowie Anmeldeinformationen für Coinbase und Twilio genannt.
Zu den aufkommenden Leak-Typen gehören Tokens für den Zugang zu Bots in Telegram, deren Zahl sich Anfang 2021 verdoppelt hat und dann im Frühling 2023 erneut verdoppelt wurde. Ein kontinuierlicher Anstieg von Leaks wird auch seit 2020 für Zugangskeys zu Google API verzeichnet, sowie seit 2022 für Datenbankanmeldeinformationen. Unter den Paketen, die führend in der Anzahl der Leaks sind, werden die Pakete chatllm und safire erwähnt, in denen 209 Schlüssel zu OpenAI und 320 Schlüssel zu Google Cloud vergessen wurden.
Unter den Dateitypen, in denen die meisten Lecks festgestellt wurden, sind neben Dateien mit der Erweiterung „.py“ auch Dateien mit der Erweiterung .json (610 Lecks), .md (270), PKG-INFO (240), METADATA (210), .txt (170) sowie README-Dateien (209) und Dateien aus Verzeichnissen mit dem Namen test (675) aufgeführt. Viele Lecks sind auch auf Nachlässigkeiten und Fehler bei der Ausnahmebehandlung von Dateien während der Paketbildung zurückzuführen. Beispielsweise können Dateien mit lokalen Konfigurationsdateien (.cookiecutterrc, .env, .pypirc usw.) über die Datei „.gitignore“ aus dem Git-Repository ausgeschlossen werden, was bei der Erstellung des Pakets nicht berücksichtigt wird. Insbesondere wurden im Repository 43 .pypirc-Dateien gefunden, die Anmeldeinformationen für den Zugriff auf PyPI enthalten. In 15 Fällen von Lecks hatten die Entwickler nicht vor, die ursprünglich für den internen Gebrauch erstellten Pakete öffentlich bereitzustellen, veröffentlichten sie jedoch versehentlich auf PyPI.
Zusätzlich können zwei weitere Ereignisse im Zusammenhang mit PyPI erwähnt werden:
- Im PyPI-Repository wurden 8 bösartige Pakete entdeckt, die als Obfuskationstools präsentiert werden, d.h. zur Umwandlung von Code in eine unleserliche Form, die es erschwert, den Algorithmus nachzuvollziehen. Die identifizierten Pakete enthielten in ihren Namen den String „pyobf“ (Pyobftoexe, Pyobfusfile, Pyobfexecute, Pyobfpremium, Pyobflight, Pyobfadvance, Pyobfuse und pyobfgood) und wurden mehr als 2000 Mal heruntergeladen.
Der in die Pakete integrierte bösartige Code war spezifisch für die Windows-Plattform und ermöglichte eine Verbindung zu einem externen Controller. Server, führte willkürliche Befehle auf dem Computer des Entwicklers aus, fand und sendete sensible Informationen wie Zugangsschlüssel an einen externen Server und übertrug beliebige Dateien vom System. Darüber hinaus konnte der bösartige Code Funktionen eines Keyloggers ausführen, Passwörter, die in Chrome eingegeben wurden, abfangen, Screenshots erstellen, Audio aufzeichnen und sogar die Webcam steuern.
- Die Ergebnisse der unabhängigen Überprüfung des Quellcodes des verwendeten Tools zur Organisation der Arbeit des Repositories pypi.org sowie des Frameworks "cabotage", das in der Infrastruktur zur Orchestrierung von Containern eingesetzt wird, wurden veröffentlicht. Die Prüfung wurde mit Unterstützung der gemeinnützigen Organisation OTF (Open Technology Fund) durchgeführt. Bei der Überprüfung wurden keine hochriskanten Probleme festgestellt, und der Quellcode wurde als konform mit den grundlegenden Anforderungen an eine sichere Programmierung anerkannt. Es wurde jedoch ein unzureichender Testabdeckungsgrad des Quellcodes von cabotage festgestellt, und es wurden 29 Probleme erkannt, von denen acht als moderat riskant, sechs als niedrig und 14 als informative Hinweise gekennzeichnet wurden.
Die auffälligsten Probleme:
- Unzureichende Überprüfung der digitalen Signaturen, die für die Integration von PyPI mit AWS SNS verwendet werden, ermöglichte es, Benachrichtigungen an die E-Mail einzelner Benutzer zu senden.
- Informationsoffenlegung im Upload-Handler, die es ermöglicht, das Vorhandensein eines Kontos ohne die Generierung von Anmeldeversuch-Events zu bestimmen.
- Verwendung unsicherer kryptografischer Hashes, die Angriffe durch Cache Poisoning nicht ausschließen.
- Wenn die Berechtigungen zur Ausführung von Build-Prozessen über Cabotage vorhanden sind, könnte ein Angreifer potenziell seine eigenen Befehle einschleusen.
- Wenn Berechtigungen für das Deployment in Cabotage vorhanden sind, könnte ein Angreifer potenziell ein legitim aussehendes Image bereitstellen.
Quelle: opennet.ru
