zurück zum Artikel

Python: 15 Jahre alte Schwachstelle betrifft potenziell 350.000 Projekte

Rainald Menge-Sonnentag

(Bild: Shutterstock)

Das Issue zu der Directory-Traversal-Schwachstelle in dem Modul tarfile existiert seit 2007. Geschlossen wurde es mit einem Hinweis in der Dokumentation.

Das Cybersecurity-Unternehmen Trellix hat eine fünfzehn Jahre alte Schwachstelle in einem Python-Modul entdeckt. Das auf die Verarbeitung von tar-Dateien ausgelegte tarfile-Modul ist in den Methoden zum Entpacken für Directory-Traversal-Attacken anfällig.

Laut den Angaben von Trellix, das Anfang 2022 aus der Zusammenführung [1] von McAfee und FireEye entstanden ist, glaubten die Security-Forscher zunächst, auf eine Zero-Day-Lücke gestoßen zu sein. Sie haben die Schwachstelle offenbar zufällig entdeckt, als sie eine davon unabhängige Vulnerability untersucht haben. Die vermeintlich neue Schwachstelle hat allerdings einen CVE-Eintrag (Common Vulnerabilities and Exposures), der auf das Jahr 2007 zurück geht.

Die Directory-Traversal-Schwachstelle ist beim National Institute of Standards and Technology (NIST) als CVE-2007-4559 aufgeführt [2]. Betroffen sind die Funktionen extract und extractall in dem Modul tarfile.

Das Modul nutzt die Klasse Tarinfo, um die Metadaten wie die Dateinamen, Größe und Checksums abzulegen. Ein Angriff kann die Metadaten modifizieren, um mit vorangestellten "/" oder "../" das aktuelle Verzeichnis zu verlassen und beispielsweise mit "../../../etc/passwd" die Passwort-Datei zu überschreiben. Eine Prüfung auf entsprechende Konstrukte bietet das Modul nicht.

Der einfache Codeausschnitt ist ein Beispiel, wie ein Angriff die Schwachstelle auszunutzen kann, um einer Datei in einem tar-Archiv "../" voranzustellen.

(Bild: Trellix)

Das Issue zu der Schwachstelle [3] existiert seit August 2007, nachdem ein Entwickler in einer Mail darauf aufmerksam gemacht hatte [4]. Allerdings kamen die verantwortlichen Developer bereits nach zwei Tagen zu dem Schluss, dass es sich um kein Security-relevantes Problem handle:

"Nach reiflicher Überlegung und einer privaten Diskussion mit Martin glaube ich nicht mehr, dass wir ein Sicherheitsproblem haben. tarfile.py macht nichts verkehrt, sondern verhält sich entsprechend der pax-Definition und den Richtlinien zur Auflösung von Pfadnamen in POSIX. Ein bekannter oder möglicher praktischer Exploit existiert nicht."

Daraufhin schlossen sie den Bug, ohne den Code zu ändern, fügten aber eine zusätzliche Warnung in die Dokumentation ein.

Die Dokumentation warnt, dass die Methode zum Entpacken die Pfadnamen nicht prüft.

(Bild: Python.org [5])

Wie viele Projekte tatsächlich betroffen sind, lässt sich nur schätzen. Trellix gibt als eigene Schätzung in der Pressemitteilung als Hausnummer gut 350.000 Open-Source-Projekte [6] an, und darüber hinaus sind Closed-Source-Projekte betroffen. tarfile ist Bestandteil der Standardmodule von Python, und Trellix hat deren Einsatz in Frameworks von Netflix, AWS, Intel, Facebook und Google sowie in Anwendungen für Machine Learning und Docker-Containerisierung gefunden.

Kurz nach der Bekanntmachung der Schwachstelle fanden sich frische Kommentare zum zugehörigen Issue. Damit ist gut möglich, dass sich jemand des alten Problems annimmt.

Weitere Details zur Vulnerability, der Suche nach potenziell betroffenen Projekten und eine Demonstration zum Ausnutzen der Schwachstelle in der IDE Spyder finden sich in einem Blogbeitrag [7].

(rme [8])


URL dieses Artikels:
https://www.heise.de/-7272186

Links in diesem Artikel:
[1] https://www.heise.de/news/McAfee-und-FireEye-fusionieren-unter-der-Marke-Trellix-6334316.html
[2] https://nvd.nist.gov/vuln/detail/CVE-2007-4559
[3] https://github.com/python/cpython/issues/45385
[4] https://mail.python.org/pipermail/python-dev/2007-August/074290.html
[5] https://docs.python.org/3/library/tarfile.html
[6] https://www.trellix.com/en-us/about/newsroom/news/news-detail.html?news_id=10cb07fa-6837-48b8-8e99-d58a7526eff3
[7] https://www.trellix.com/en-us/about/newsroom/stories/threat-labs/tarfile-exploiting-the-world.html
[8] mailto:rme@ix.de