Den Pfadüberquerungsfehler im tarfile-Modul von Python verstehen
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.


Kürzlich gab ein Team von Sicherheitsforschern bekannt, dass sie einen fünfzehn Jahre alten Fehler in der Python-Funktion zur Extraktion von tar-Dateien gefunden haben. Die Schwachstelle wurde erstmals im Jahr 2007 bekannt gegeben und als CVE-2007-4559 verfolgt. Der offiziellen Python-Dokumentation wurde ein Hinweis hinzugefügt, aber der Fehler selbst wurde nicht behoben.
Diese Sicherheitslücke könnte sich auf Tausende von Softwareprojekten auswirken, doch viele Menschen sind mit der Situation nicht vertraut und wissen nicht, wie sie damit umgehen sollen. Aus diesem Grund bieten wir hier bei Secure Code Warriordie Möglichkeit, die Ausnutzung dieser Schwachstelle selbst zu simulieren, um die Auswirkungen aus erster Hand zu erfahren und praktische Erfahrungen mit den Mechanismen dieses hartnäckigen Fehlers zu sammeln, damit Sie Ihre Anwendung besser schützen können!
Probieren Sie die simulierte Mission jetzt aus.
Die Schwachstelle: Pfadüberwindung beim Extrahieren von tar-Dateien
Pfad- oder Verzeichnisüberquerungen treten auf, wenn unüberprüfte Benutzereingaben verwendet werden, um einen Dateipfad zu konstruieren, was es einem Angreifer ermöglicht, Zugriff auf Dateien zu erhalten und diese zu überschreiben und sogar beliebigen Code auszuführen.
Die Sicherheitslücke besteht im tarfile-Modul von Python. Eine tar-Datei (Bandarchiv) ist eine einzelne Datei, ein sogenanntes Archiv. Sie packt mehrere Dateien mit ihren Metadaten zusammen und ist normalerweise an der Erweiterung .tar.gz oder .tgz zu erkennen. Jedes Mitglied des Archivs kann durch ein TarInfo-Objekt dargestellt werden, das Metadaten wie Dateiname, Änderungszeit, Eigentümer und mehr enthält.
Das Risiko besteht darin, dass die Archive wieder extrahiert werden können.
Beim Extrahieren benötigt jedes Mitglied einen Pfad, in den es geschrieben wird. Dieser Pfad wird erstellt, indem der Basispfad mit dem Dateinamen verbunden wird:

Sobald dieser Pfad erstellt ist, wird er an die Funktion tarfile.extract oder tarfile.extractall Funktionen weitergegeben, um die Extraktion durchzuführen:

Das Problem ist hier die fehlende Bereinigung des Dateinamens. Ein Angreifer könnte Dateien so umbenennen, dass sie Pfad-Traversal-Zeichen enthalten, wie z.B. Punkt-Punkt-Schrägstrich (../), was dazu führen würde, dass die Datei das Verzeichnis verlässt, in dem sie eigentlich sein sollte, und beliebige Dateien überschreibt. Dies könnte schließlich zu einer entfernten Codeausführung führen, die für eine Ausnutzung reif ist.
Die Schwachstelle tritt auch in anderen Szenarien auf, wenn man weiß, wie sie zu erkennen ist. Neben dem Umgang von Python mit tar-Dateien besteht die Schwachstelle auch bei der Extraktion von zip-Dateien. Vielleicht kennen Sie sie auch unter einem anderen Namen, wie z. B. die Zip-Slip-Schwachstelle, die sich auch in anderen Sprachen als Python manifestiert hat!
Wie können Sie das Risiko mindern?
Obwohl die Schwachstelle seit Jahren bekannt ist, sind die Python-Betreuer der Ansicht, dass die Extraktionsfunktion genau das tut , was sie tun soll. In diesem Fall mögen manche sagen: "Es ist ein Feature, kein Bug". Leider können Entwickler nicht immer vermeiden, tar- oder zip-Dateien aus einer unbekannten Quelle zu extrahieren. Es liegt an ihnen, die nicht vertrauenswürdigen Eingaben zu bereinigen, um Schwachstellen durch Pfadüberquerung als Teil der sicheren Entwicklungspraktiken zu verhindern.
Möchten Sie mehr darüber erfahren, wie Sie mit Python sicheren Code schreiben und Risiken minimieren können?
Probieren Sie unsere Python-Herausforderung kostenlos aus.
Wenn Sie an weiteren kostenlosen Codierungsrichtlinien interessiert sind, besuchen Sie Secure Code Coach, damit Sie immer auf dem neuesten Stand der sicheren Codierungspraktiken sind.
Tauchen Sie ein in unsere neuesten Erkenntnisse über sichere Kodierung im Blog.
Unsere umfangreiche Ressourcenbibliothek zielt darauf ab, die menschliche Herangehensweise an eine sichere Weiterbildung im Bereich der Programmierung zu stärken.
Holen Sie sich die neuesten Forschungsergebnisse zur entwicklergesteuerten Sicherheit
Unsere umfangreiche Ressourcenbibliothek ist voll von hilfreichen Ressourcen, von Whitepapers bis hin zu Webinaren, die Ihnen den Einstieg in die entwicklungsorientierte sichere Programmierung erleichtern. Erforschen Sie sie jetzt.
Den Pfadüberquerungsfehler im tarfile-Modul von Python verstehen

Kürzlich gab ein Team von Sicherheitsforschern bekannt, dass sie einen fünfzehn Jahre alten Fehler in der Python-Funktion zur Extraktion von tar-Dateien gefunden haben. Die Schwachstelle wurde erstmals im Jahr 2007 bekannt gegeben und als CVE-2007-4559 verfolgt. Der offiziellen Python-Dokumentation wurde ein Hinweis hinzugefügt, aber der Fehler selbst wurde nicht behoben.
Diese Sicherheitslücke könnte sich auf Tausende von Softwareprojekten auswirken, doch viele Menschen sind mit der Situation nicht vertraut und wissen nicht, wie sie damit umgehen sollen. Aus diesem Grund bieten wir hier bei Secure Code Warriordie Möglichkeit, die Ausnutzung dieser Schwachstelle selbst zu simulieren, um die Auswirkungen aus erster Hand zu erfahren und praktische Erfahrungen mit den Mechanismen dieses hartnäckigen Fehlers zu sammeln, damit Sie Ihre Anwendung besser schützen können!
Probieren Sie die simulierte Mission jetzt aus.
Die Schwachstelle: Pfadüberwindung beim Extrahieren von tar-Dateien
Pfad- oder Verzeichnisüberquerungen treten auf, wenn unüberprüfte Benutzereingaben verwendet werden, um einen Dateipfad zu konstruieren, was es einem Angreifer ermöglicht, Zugriff auf Dateien zu erhalten und diese zu überschreiben und sogar beliebigen Code auszuführen.
Die Sicherheitslücke besteht im tarfile-Modul von Python. Eine tar-Datei (Bandarchiv) ist eine einzelne Datei, ein sogenanntes Archiv. Sie packt mehrere Dateien mit ihren Metadaten zusammen und ist normalerweise an der Erweiterung .tar.gz oder .tgz zu erkennen. Jedes Mitglied des Archivs kann durch ein TarInfo-Objekt dargestellt werden, das Metadaten wie Dateiname, Änderungszeit, Eigentümer und mehr enthält.
Das Risiko besteht darin, dass die Archive wieder extrahiert werden können.
Beim Extrahieren benötigt jedes Mitglied einen Pfad, in den es geschrieben wird. Dieser Pfad wird erstellt, indem der Basispfad mit dem Dateinamen verbunden wird:

Sobald dieser Pfad erstellt ist, wird er an die Funktion tarfile.extract oder tarfile.extractall Funktionen weitergegeben, um die Extraktion durchzuführen:

Das Problem ist hier die fehlende Bereinigung des Dateinamens. Ein Angreifer könnte Dateien so umbenennen, dass sie Pfad-Traversal-Zeichen enthalten, wie z.B. Punkt-Punkt-Schrägstrich (../), was dazu führen würde, dass die Datei das Verzeichnis verlässt, in dem sie eigentlich sein sollte, und beliebige Dateien überschreibt. Dies könnte schließlich zu einer entfernten Codeausführung führen, die für eine Ausnutzung reif ist.
Die Schwachstelle tritt auch in anderen Szenarien auf, wenn man weiß, wie sie zu erkennen ist. Neben dem Umgang von Python mit tar-Dateien besteht die Schwachstelle auch bei der Extraktion von zip-Dateien. Vielleicht kennen Sie sie auch unter einem anderen Namen, wie z. B. die Zip-Slip-Schwachstelle, die sich auch in anderen Sprachen als Python manifestiert hat!
Wie können Sie das Risiko mindern?
Obwohl die Schwachstelle seit Jahren bekannt ist, sind die Python-Betreuer der Ansicht, dass die Extraktionsfunktion genau das tut , was sie tun soll. In diesem Fall mögen manche sagen: "Es ist ein Feature, kein Bug". Leider können Entwickler nicht immer vermeiden, tar- oder zip-Dateien aus einer unbekannten Quelle zu extrahieren. Es liegt an ihnen, die nicht vertrauenswürdigen Eingaben zu bereinigen, um Schwachstellen durch Pfadüberquerung als Teil der sicheren Entwicklungspraktiken zu verhindern.
Möchten Sie mehr darüber erfahren, wie Sie mit Python sicheren Code schreiben und Risiken minimieren können?
Probieren Sie unsere Python-Herausforderung kostenlos aus.
Wenn Sie an weiteren kostenlosen Codierungsrichtlinien interessiert sind, besuchen Sie Secure Code Coach, damit Sie immer auf dem neuesten Stand der sicheren Codierungspraktiken sind.