46 % der Python-Pakete im PyPI-Repository enthalten potenziell unsicheren Code

Eine Gruppe von Forschern der Universität Turku (Finnland) hat die Ergebnisse einer Analyse von Paketen im PyPI-Repository veröffentlicht, um potenziell gefährliche Konstruktionen zu identifizieren, die zu Schwachstellen führen könnten. Bei der Analyse von 197.000 Paketen wurden 749.000 potenzielle Sicherheitsprobleme entdeckt. In 46 % der Pakete ist mindestens ein solches Problem vorhanden. Zu den häufigsten festgestellten Problemen gehören Mängel im Umgang mit Ausnahmen und die Nutzung von Funktionen, die Code-Injection ermöglichen.

Von den festgestellten 749.000 Problemen werden 442.000 (41 %) als geringfügig, 227.000 (30 %) als Probleme mittlerer Gefahr und 80.000 (11 %) als gefährlich eingestuft. Einige Pakete stechen besonders hervor und weisen Tausende von Problemen auf: So wurden im Paket PyGGI 2.589 Probleme gefunden, hauptsächlich im Zusammenhang mit der Verwendung des Konstrukts „try-except-pass“, während im Paket appengine-sdk 2.356 Probleme festgestellt wurden. Auch in den Paketen genie.libs.ops, pbcore und genie.libs.parser sind zahlreiche Probleme vorhanden.

Es ist zu beachten, dass die Ergebnisse auf der Durchführung einer automatisierten statischen Analyse basieren, die den Anwendungskontext bestimmter Konstrukte nicht berücksichtigt. Der Entwickler des Tools bandit, das zum Scannen des Codes verwendet wurde, äußerte die Meinung, dass aufgrund der relativ hohen Zahl an Fehlalarmen die Ergebnisse der Prüfung nicht direkt als Sicherheitsanfälligkeiten betrachtet werden können, ohne dass eine zusätzliche manuelle Überprüfung jedes Problems erfolgt.

Zum Beispiel betrachtet der Analyzer die Verwendung unsicherer Zufallszahlengeneratoren und Hashing-Algorithmen wie MD5 als Sicherheitsproblem, obwohl solche Algorithmen im Code möglicherweise für Zwecke eingesetzt werden, die nicht die Sicherheit beeinträchtigen. Der Analyzer stuft auch jede Verarbeitung externer Daten in unsicheren Funktionen wie pickle, yaml.load, subprocess und eval als problematisch ein, jedoch ist der Einsatz dieser Funktionen nicht unbedingt mit dem Auftreten von Schwachstellen verbunden, und in der Praxis kann deren Verwendung ohne Sicherheitsrisiken erfolgen.

Unter den Prüfungen, die in der Untersuchung verwendet wurden:

  • Verwendung potenziell unsicherer Funktionen wie exec, mktemp, eval, mark_safe usw.
  • Unsichere Datei-Berechtigungen.
  • Verbindung eines Netzwerk-Sockets mit allen Netzwerk-Interfaces.
  • Verwendung von im Code festgelegten Passwörtern und Schlüsseln.
  • Verwendung eines vordefinierten temporären Verzeichnisses.
  • Verwendung von pass und continue in allgemeinen Ausnahmebehandlern.
  • Betrieb von Webanwendungen auf Basis des Flask-Webframeworks im Debug-Modus.
  • Verwendung unsicherer Methoden zur Deserialisierung von Daten.
  • Verwendung der Hash-Funktionen MD2, MD4, MD5 und SHA1.
  • Verwendung unsicherer Verschlüsselungsalgorithmen wie DES und unsicherer Betriebsmodi.
  • Verwendung unsicherer Implementierungen von HTTPSConnection in bestimmten Python-Versionen.
  • Angabe des Schemas file:// in urlopen.
  • Verwendung von Pseudozufallszahlengeneratoren bei kryptographischen Aufgaben.
  • Verwendung des Telnet-Protokolls.
  • Verwendung unsicherer XML-Parser.

Zusätzlich kann festgestellt werden, dass im PyPI-Katalog acht bösartige Pakete entdeckt wurden. Vor der Löschung hatten die problematischen Pakete über 30.000 Downloads erreicht. Um bösartige Aktivitäten zu verbergen und Warnungen einfacher statischer Analysatoren zu umgehen, wurde in den Paketen eine Kodierung von Codeblöcken mithilfe von Base64 angewendet, gefolgt von der Ausführung nach der Dekodierung über den Aufruf von eval.

In den Paketen noblesse, genesisbot, are, suffer, noblesse2 und noblessev2 wurde Code gefunden, der dazu dient, Kreditkartennummern und Passwörter, die in den Browsern Chrome und Edge gespeichert sind, abzufangen sowie Token von Benutzerkonten aus der Discord-App zu übertragen und Systemdaten, einschließlich Screenshots des Bildschirminhalts, zu senden. In den Paketen pytagora und pytagora2 bestand die Möglichkeit, externe ausführbare Codes herunterzuladen und auszuführen.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster