Die Forscher von GitGuardian haben die Ergebnisse ihrer Analyse vertraulicher Daten veröffentlicht, die von Entwicklern im Code vergessen wurden, der in dem Python-Paket-Repository PyPI (Python Package Index) gespeichert ist. Nach der Untersuchung von über 9,5 Millionen Dateien und 5 Millionen Paketausgaben, die mit 450.000 Projekten verbunden sind, wurden 56.866 Fälle von Datenlecks identifiziert. Betrachtet man nur die einzigartigen Daten, ohne Duplikate in verschiedenen Ausgaben, beträgt die Anzahl 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 Datenlecks identifiziert, darunter gängige Passwörter, kryptografische Schlüssel sowie Zugangstoken für Cloud-Dienste, Systeme zur kontinuierlichen Integration und APIs. Mindestens 768 Anmeldedaten waren zum Zeitpunkt der Untersuchung noch gültig. Als Beispiele für gängige Lecks, die relevant bleiben, werden Zugangsschlüssel zu Azure Active Directory, Anmeldedaten zu SSH, MongoDB, MySQL und PostgreSQL, Schlüssel für GitHub OAuth Apps, Dropbox und Auth0 sowie Login-Daten für Coinbase und Twilio genannt.
Zu den aufkommenden Typen von Lecks zählen Token für den Zugriff auf Bots in Telegram, deren Anzahl sich Anfang 2021 verdoppelt hat und dann im Frühjahr 2023 erneut verdoppelt hat. Ein stetiger Anstieg von Lecks wird ebenfalls seit 2020 für Zugangsschlüssel zur Google API verzeichnet, und seit 2022 für Anmeldedaten zu Datenbanksystemen. Zu den Paketen, die in Bezug auf die Anzahl der Lecks führen, zählen die Pakete chatllm und safire, in denen 209 Schlüssel für OpenAI und 320 Schlüssel für Google Cloud vergessen wurden.
Unter den Dateitypen, in denen die meisten Lecks festgestellt wurden, neben Dateien mit der Erweiterung „.py“, sind 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) zu finden. Viele Lecks stehen auch im Zusammenhang mit Unaufmerksamkeit und Fehlern bei der Konfiguration von Ausnahmen für Dateien während der Paketbildung. Beispielsweise können Dateien mit lokalen Konfigurationsdateien (.cookiecutterrc, .env, .pypirc usw.) durch die Datei „.gitignore“ von dem Git-Repository ausgeschlossen werden, was bei der Erstellung des Pakets nicht berücksichtigt wird. Insbesondere wurden im Repository 43 .pypirc-Dateien gefunden, die Anmeldedaten für den Zugriff auf PyPI enthalten. In 15 Fällen planten die Entwickler nicht, Pakete öffentlich zu veröffentlichen, die ursprünglich für den internen Gebrauch erstellt wurden, veröffentlichten sie jedoch fälschlicherweise in PyPI.
Zusätzlich können zwei weitere Ereignisse im Zusammenhang mit PyPI erwähnt werden:
- Im PyPI-Repository wurden acht bösartige Pakete entdeckt, die als Obfuscations-Tools präsentiert wurden, d.h. sie machen den Code unleserlich und erschweren die Rekonstruktion des Arbeitsalgorithmus. Die entdeckten Pakete enthielten im Namen die Zeichenfolge „pyobf“ (Pyobftoexe, Pyobfusfile, Pyobfexecute, Pyobfpremium, Pyobflight, Pyobfadvance, Pyobfuse und pyobfgood) und wurden über 2000 Mal heruntergeladen.
Der in die Pakete integrierte bösartige Code war spezifisch für die Windows-Plattform und ermöglichte die Verbindung zu einem externen Kontrollserver zu einem Server, die Ausführung beliebiger Befehle auf dem Computer des Entwicklers, das Auffinden und Versenden vertraulicher Informationen wie Zugangsschlüssel an einen externen Server sowie das Übertragen beliebiger Dateien vom System. Darüber hinaus konnte der bösartige Code als Keylogger fungieren, eingegebene Passwörter in Chrome abfangen, Screenshots erstellen, Ton aufnehmen und sogar die Webcam steuern.
- Die Ergebnisse einer unabhängigen Überprüfung des Quellcodes der Werkzeuge, die für den Betrieb des Repositories pypi.org verwendet werden, sowie des Frameworks „cabotage“, das in der Infrastruktur zur Orchestrierung von Containern eingesetzt wird, wurden veröffentlicht. Die Überprüfung wurde mit Unterstützung der gemeinnützigen Organisation OTF (Open Technology Fund) durchgeführt. Bei der Überprüfung wurden keine schwerwiegenden Sicherheitsprobleme festgestellt, und die Quelltexte wurden als den grundlegenden Anforderungen an sichere Programmierung entsprechend bewertet. Es wurde jedoch festgestellt, dass die Testabdeckung des cabotage-Quellcodes unzureichend ist und 29 Probleme identifiziert wurden, von denen acht als moderat gefährlich, sechs als niedrig und 14 als informierende Anmerkungen eingestuft wurden.
Die auffälligsten Probleme sind:
- Unzureichende Überprüfung der digitalen Signaturen, die für die Integration von PyPI mit AWS SNS verwendet werden, ermöglichte das Versenden von Benachrichtigungen an die E-Mail einzelner Benutzer.
- Datenleck im Upload-Handler, das die Existenz eines Kontos ohne Erstellung von Ereignissen über Anmeldeversuche bestimmen ließ.
- Verwendung unsicherer kryptographischer Hashes, die Angriffe durch Cache Poisoning nicht ausschließen.
- Wenn man die Berechtigungen zum Ausführen von Build-Prozessen über cabotage hat, könnte ein Angreifer potenziell seine eigenen Befehle einschleusen.
- Wenn man die Berechtigungen für das Deployment in cabotage hat, könnte ein Angreifer potenziell ein legitim aussehendes Image bereitstellen.
Quelle: opennet.ru
