15 Jahre alter Python-Fehler in „über 350.000“ Projekten gefunden • The Register

Es wird angenommen, dass mindestens 350.000 Open-Source-Projekte potenziell anfällig für Exploits über einen Python-Modul-Fehler sind, der seit 15 Jahren nicht gepatcht wurde.

Am Dienstag teilte die Sicherheitsfirma Trellix mit, dass ihre Bedrohungsforscher eine Schwachstelle in Python gefunden hätten. tarfile -Modul, das eine Möglichkeit bietet, komprimierte Dateipakete zu lesen und zu schreiben, die als tar-Archive bekannt sind. Anfangs dachten die Käferjäger, sie wären auf einen Zero Day gestoßen.

Es stellte sich heraus, dass es ein Problem von etwa 5500 Tagen war: Das Insekt lebte in den letzten anderthalb Jahrzehnten sein bestes Leben, während es auf das Aussterben wartete.

Die als CVE-2007-4559 verfolgte Schwachstelle tauchte am 24. August 2007 in einem Post auf einer Python-Mailingliste von Jan Matejek auf, der zu dieser Zeit der Betreuer des Python-Pakets für SUSE war. Es kann ausgenutzt werden, um Dateien auf dem Computer eines Opfers zu überschreiben und zu entführen, wenn eine böswillige tar-Datei von einer anfälligen Anwendung über geöffnet wird tarfile.

“Die Schwachstelle ist im Grunde so: Wenn Sie eine Datei mit dem Namen "../../../../../etc/passwd" und dann den admin machen untar /etc/passwd wird überschrieben”, erklärte Matejek damals.

Der Fehler beim Traversieren des Tarfile-Verzeichnisses wurde am 29. August 2007 von Tomas Hoger, einem Red Hat-Softwareingenieur, gemeldet.

Aber es war bereits mehr oder weniger angesprochen worden. Einen Tag zuvor hat Lars Gustäbel, Betreuer des tarfile-Moduls, eine Codeänderung vorgenommen, die den Standardwert true hinzufügt. check_paths Parameter und eine Hilfsfunktion für die TarFile.extractall() Methode, die einen Fehler ausgibt, wenn der Pfad einer tar-Datei nicht sicher ist.

Aber die Lösung ging nicht auf das ein TarFile.extract() Methode, die laut Gustäbel “überhaupt nicht verwendet werden sollte” und die Möglichkeit offen ließ, dass das Extrahieren von Daten aus nicht vertrauenswürdigen Dateien Probleme verursachen könnte.

In einem Kommentar-Thread erklärte Gustäbel, dass er dies nicht mehr als Sicherheitsproblem betrachte. „tarfile.py macht nichts falsch, sein Verhalten entspricht der Pax-Definition und den Richtlinien zur Auflösung von Pfadnamen in POSIX“, schrieb er.

„Es ist keine praktische Leistung bekannt oder möglich. I [updated] die Dokumentation mit einer Warnung, dass es gefährlich sein könnte, Dateien aus nicht vertrauenswürdigen Quellen zu extrahieren. Das ist meiner Meinung nach das einzige, was zu tun ist.”

Tatsächlich beschreibt die Dokumentation diese Waffe:

Warnung: Extrahieren Sie niemals Dateien aus nicht vertrauenswürdigen Quellen ohne vorherige Überprüfung. Dateien können außerhalb erstellt werden WegB. Mitglieder, die absolute Dateinamen haben, die mit beginnen "/" oder Dateinamen mit einem Doppelpunkt "..".

Und doch sind wir hier, bei uns beiden extract() Y extractall() weiterhin die Gefahr einer willkürlichen Traversierung von Routen.

„Die Schwachstelle ist ein Cross-Path-Angriff auf die extract Y extractall Funktionen im tarfile-Modul, die es einem Angreifer ermöglichen, beliebige Dateien zu überschreiben, indem er die ‘..’-Sequenz an Dateinamen in einem tar-Archiv anhängt”, erklärte Kasimir Schulz, Schwachstellenforscher bei Trellix, in einem Blogbeitrag.

Die Sequenz “..” ändert den aktuellen Arbeitspfad in das übergeordnete Verzeichnis. Wenn Sie also Code wie den sechszeiligen Codeausschnitt unten verwenden, sagt Schulz, der tarfile Das Modul kann angewiesen werden, die Metadaten der Datei zu lesen und zu ändern, bevor es sie dem tar-Archiv hinzufügt. Und das Ergebnis ist ein Exploit.

import tarfile

def change_name(tarinfo):
    tarinfo.name = "../" + tarinfo.name
    return tarinfo

with tarfile.open("exploit.tar", "w:xz") as tar:
    tar.add("malicious_file", filter=change_name)

Laut Schulz hat Trellix ein kostenloses Tool namens Creosote entwickelt, um nach CVE-2007-4559 zu suchen. Die Software hat den Fehler bereits in Apps wie Spyder IDE, einer für Python geschriebenen wissenschaftlichen Open-Source-Umgebung, und Polemarch, einem IT-Infrastrukturverwaltungsdienst für Linux und Docker, gefunden.

Das Unternehmen schätzt die tarfile Der Fehler findet sich “in mehr als 350.000 Open-Source-Projekten und ist weit verbreitet in Closed-Source-Projekten”. Darauf weist er auch hin tarfile Es ist ein Standardmodul in jedem Python-Projekt und ist in Frameworks vorhanden, die von AWS, Facebook, Google und Intel erstellt wurden, sowie in Anwendungen für maschinelles Lernen, Automatisierung und Docker-Container.

Trellix sagt, dass es daran arbeite, den festen Code für betroffene Projekte verfügbar zu machen.

„Mit unseren Tools haben wir derzeit Patches für 11.005 Repositories, bereit für Pull-Requests“, erklärte Charles McFarland, Schwachstellenforscher bei Trellix, in einem Blogbeitrag. “Jeder Patch wird einem Fork-Repository hinzugefügt und im Laufe der Zeit wird eine Pull-Anfrage gestellt. Dies wird Menschen und Organisationen helfen, sich des Problems bewusst zu werden, und ihnen eine Ein-Klick-Lösung geben.

„Aufgrund der Größe der anfälligen Projekte erwarten wir, diesen Prozess in den nächsten Wochen fortzusetzen. Es wird erwartet, dass er 12,06 % aller anfälligen Projekte erreicht, etwas mehr als 70.000 Projekte zum Zeitpunkt der Fertigstellung.“

Die verbleibenden 87,94 Prozent der betroffenen Projekte möchten möglicherweise andere mögliche Optionen in Betracht ziehen. ®

Leave a Reply

Your email address will not be published.