Path Traversal, auch bekannt als Directory Traversal, tritt auf, wenn ein böswilliger Benutzer die vom Benutzer bereitgestellten Daten manipuliert, um unbefugten Zugriff auf Dateien und Verzeichnisse zu erhalten. In der Regel versucht der Angreifer, auf Protokolle und Anmeldedaten zuzugreifen, die sich in verschiedenen Verzeichnissen befinden. Path Traversal ist keine neue Schwachstelle und wird seit den 90er Jahren aktiv ausgenutzt, als Webserver an Popularität gewannen, von denen viele auf CGI-Skripte (Common Gateway Interface) zur Ausführung dynamischer serverseitiger Inhalte angewiesen waren.
Ist Path Traversal mit einer so langen Geschichte heute noch populär? Wir haben eine Studie über Open-Source- und Closed-Source-Projekte durchgeführt, um Daten zu sammeln und herauszufinden, wie verbreitet Path Traversal im Jahr 2024 ist und ob wir uns verbessern, Spoiler wirnicht.
Beispiel für eine Pfadüberquerung
Wie genau funktioniert nun die Pfadüberquerung? Schauen wir uns ein einfaches Beispiel an.
In dieser einfachen Anwendung wird einem Benutzer über eine Variable in der URL eine Datei zum Herunterladen gegeben.

Es gibt einen einfachen Python-Code im Hintergrund, der die Anfrage bearbeitet.
import os
def download_file(file):
base_directory = "/var/www/files"
file_path = os.path.join(base_directory, file)
if os.path.exists(file_path):
with open(file_path, 'rb') as f:
return f.read()
else:
return "Datei nicht gefunden"
Da die Variable in der URL enthalten ist, können wir sie in etwas wie dieses ändern file=../../../../etc/passwd

In diesem Fall verwendet der Angreifer das ../../, um die Verzeichnisstruktur bis zur Stammebene des Systems zu durchlaufen und auf die übergebene Datei zuzugreifen, wodurch er möglicherweise Zugriff auf sensible Informationen erhält.
Wenn Sie sehen möchten, wie diese Methode gesichert werden kann, scrollen Sie nach unten zum Bonusinhalt.
In komplexeren Szenarien mit mehreren Ebenen von Verzeichnissen oder kodierten Zeichen (z. B., %2e%2e%2f
), können Angreifer grundlegende Filter umgehen und tieferen Zugriff auf das Dateisystem erlangen.
Pfadüberquerung nach Zahlen
- 2,7 % aller im Jahr 2024 in Open-Source-Projekten gefundenen Schwachstellen waren Pfadüberwindungen
- 3,5 % für Closed-Source-Projekte !
- Ein Anstieg der Gesamtzahl der Sicherheitslücken in Open-Source-Projekten von 742 (2023 ) auf voraussichtlich 1.000 (2024).
- Der prozentuale Anteil von Path Traversal an der Gesamtzahl der Schwachstellen nimmt mit einem massiven Anstieg der Closed-Source-Projekte um 85 % zu.

Unsere Forschung konzentrierte sich darauf, sowohl Open-Source- als auch Closed-Source-Projekte zu untersuchen, um herauszufinden, in wie vielen davon sich Schwachstellen für Path Traversals verbergen.
Insgesamt ist die Zahl der Path-Traversal-Schwachstellen geringer als bei anderen von uns untersuchten Schwachstellen wie Command Injections oder SQL Injections. Wenn man jedoch bedenkt, dass diese Schwachstelle sehr gefährlich sein kann und dass es gut dokumentierte Lösungen gibt, um sie zu verhindern, ist es alarmierend, dass die Zahlen so hoch sind wie sie sind. Noch beunruhigender ist die Tatsache, dass der Trend bei dieser Sicherheitslücke in die falsche Richtung geht. f
Open-Source-Projekte
Bei Open-Source-Projekten machten Pfadüberquerungen 2,6 % aller gemeldeten Schwachstellen im Jahr 2023 aus. Diese Zahl stieg 2024 leicht auf 2,75 % an. Dieser Anstieg mag auf den ersten Blick marginal erscheinen, unterstreicht aber die anhaltenden Herausforderungen bei der Absicherung von Open-Source-Software selbst gegen einfache Sicherheitslücken.
Closed-Source-Projekte
Der auffälligste Trend wurde bei Closed-Source-Projekten beobachtet, bei denen Path-Traversal-Vorfälle von 1,9 % im Jahr 2023 auf 3,5 % im Jahr 2024 anstiegen - ein erheblicher Anstieg von 85 %, der einen alarmierenden Trend bei dieser Art von Schwachstelle aufzeigt.
Die schlechten Nachrichten reißen leider nicht ab. Die Gesamtzahl der in Open-Source-Projekten gemeldeten Sicherheitslücken steigt weiter an. Die Gesamtzahl der in Open-Source-Projekten gemeldeten Injektionsschwachstellen stieg von 742 im Jahr 2023 auf 917 im Jahr 2024 (und wird voraussichtlich 1.000 erreichen)

Verhinderung der Pfadumgehung
Die Verhinderung von Schwachstellen durch Befehlsinjektion erfordert einen vielschichtigen Ansatz:
Validierung der Eingaben
- Benutzereingaben säubern: Entfernen oder kodieren Sie gefährliche Zeichen wie z.B.
../
,..\
,..%2f
, oder andere Varianten. - Erlaubt-Liste-Ansatz: Definieren Sie einen strengen Satz zulässiger Eingaben (z. B. Dateinamen oder Pfade) und lehnen Sie alles ab, was außerhalb dieser Liste liegt.
Dateizugriff einschränken
- Verwenden Sie ein Chroot-Gefängnis oder eine Sandbox: Beschränken Sie den Dateizugriff der Anwendung auf ein eingeschränktes Verzeichnis, um sicherzustellen, dass die Anwendung nicht über den vorgesehenen Verzeichnisbaum hinausgehen kann.
- Stammverzeichnisse festlegen: Definieren Sie Basisverzeichnisse und stellen Sie sicher, dass alle Pfade relativ zu ihnen sind. Verwenden Sie APIs oder Frameworks, die dies erzwingen, wie z. B.:
java.nio.file.Paths.get("baseDir").resolve(userInput).normalize()
in Java.os.path.realpath()
undos.path.commonpath()
in Python.
Sichere Dateizugriffs-APIs
- Verwenden Sie sichere Dateizugriffsmethoden, die von modernen Bibliotheken oder Frameworks bereitgestellt werden: In Javaverwenden
Files.newInputStream()
oderFiles.newBufferedReader()
für den sicheren Umgang mit Dateien.
Unter Pythonstellen Sie sicher, dass Sie die Dateipfade vor dem Zugriff auf die Dateien überprüfen.
Beschränkungen der Nutzungsumgebung
- Restriktiv festlegen Dateisystem-Berechtigungen:Vergewissern Sie sich, dass die Anwendung nur über die erforderlichen Mindestberechtigungen verfügt.
Verweigern Sie den Zugriff auf sensible Verzeichnisse (z. B.,/etc
,/var
,/usr
und Benutzer-Home-Verzeichnisse). - Deaktivieren Sie unnötige Funktionen in Webservern oder Frameworks (z. B. die Verfolgung symbolischer Links).
Automatisierte Prüfung
- Verwenden Sie Tools wie Aikido, um Ihren Quellcode und Ihre Anwendung zu scannen und diese Schwachstellen zu entdecken.
- Sowohl SAST- als auch DAST-Tools sollten zusammen mit Domänen-Scans und Cloud-Sicherheit eingesetzt werden, um sicherzustellen, dass keine versteckten Path-Traversal-Schwachstellen vorhanden sind.
Verwenden Sie eine App-interne Firewall
- Eine der besten Abwehrmaßnahmen gegen Injektionsangriffe ist eine In-App-Firewall , die bösartige Befehle abfangen und blockieren kann.
Der Weg nach vorn
Path Traversal ist eine Schwachstelle, die es seit den Anfängen von Webanwendungen gibt, und obwohl sie oft recht einfach ist, kann sie auch eine sehr verheerende Schwachstelle sein. Das macht es so besorgniserregend, dass ein so großer Prozentsatz der Projekte immer noch mit solchen Problemen zu kämpfen hat. Auch wenn 3,5 % keine hohe Zahl zu sein scheint, ist es doch bemerkenswert, dass diese Zahl trotz der eindeutig fortbestehenden und gut dokumentierten Bedrohung immer noch zunimmt.
Path Traversal ist keine Schwachstelle, die verschwinden wird, aber die gute Nachricht ist, dass es klare Möglichkeiten gibt, diese Schwachstellen in unserer Anwendung zu finden und alle gefundenen Probleme zu beheben.
Bonus-Inhalt
Vorfälle aus der realen Welt
In den letzten Jahren gab es mehrere aufsehenerregende Sicherheitsverletzungen oder Schwachstellen, bei denen die Umgehung von Pfaden entweder der Haupteinstiegspunkt oder Teil einer Kette von Schwachstellen war
Microsoft IIS Unicode-Sicherheitslücke (2001)
Eines der ersten bekannten Path-Traversal-Exploits, das auf Microsoft IIS-Server abzielt. Angreifer verwendeten verschlüsselte Pfade, um Validierungsmechanismen zu umgehen (z. B. mit %c0%af
zu vertreten /
). Dadurch konnten sie auf Dateien außerhalb des Web-Root-Verzeichnisses zugreifen und diese ausführen.
Dies ermöglichte die Verbreitung von Malware und die Verunstaltung zahlreicher Websites.
Fortinet VPN Path Traversal (2019)
In Fortinets SSL-VPN wurde eine Schwachstelle für Directory Traversal gefunden (CVE-2018-13379). Angreifer nutzten diese Schwachstelle aus, um auf sensible Systemdateien zuzugreifen, z. B. auf Klartextpasswörter für VPN-Benutzer.
Tausende von VPN-Zugangsdaten wurden im Internet veröffentlicht, wodurch Unternehmen unbefugtem Zugriff und weiteren Angriffen ausgesetzt waren.
Capital One Sicherheitslücke (2019)
Was geschah: Die Hauptursache war eine SSRF-Schwachstelle, aber der Angreifer nutzte auch Directory Traversal beim Zugriff auf AWS S3 Bucket-Metadaten. Der Angreifer nutzte Fehlkonfigurationen aus, um Konfigurationsdateien abzurufen, auf die eigentlich kein Zugriff möglich sein sollte.
Dadurch wurden die persönlichen Daten von 106 Millionen Kreditkartenantragstellern offengelegt.
Pfadüberquerung im Kubernetes Dashboard (2020)
Das Kubernetes-Dashboard wies einen Fehler bei der Verzeichnisumgehung auf (CVE-2020-8563). Angreifer nutzten dies aus, um sensible Dateien im Container zu lesen, einschließlich Geheimnisse, die in /etc
.