Path-Traversal-Schwachstellen in Java mit Snyk Code beheben
6. März 2023
0 Min. LesezeitPath Traversal ist eine Art von Sicherheitslücke, die auftreten kann, wenn eine Webanwendung oder ein Dienst Angreifern den Zugriff auf Serverdateien oder -verzeichnisse außerhalb der vorgesehenen Verzeichnisstruktur ermöglicht. Dadurch können sensible Daten unbefugt gelesen oder verändert werden. Beim Hochladen von Dateien kann eine Path-Traversal-Schwachstelle entstehen, wenn eine Anwendung den vom Benutzer angegebenen Dateipfad nicht ordnungsgemäß überprüft. Angreifer können dann eine schädliche Datei mit einem Dateinamen hochladen, der ihnen Zugriff auf geschützte Dateien auf dem Server ermöglicht.
Path Traversal beim Hochladen von Dateien zu verhindern, ist für die Sicherheit von Java-Anwendungen entscheidend. So lassen sich sensible Daten schützen und unbefugte Zugriffe auf geschützte Dateien und Verzeichnisse verhindern. In diesem Blogbeitrag sehen wir uns Path Traversal beim Datei-Upload genauer an und zeigen Ihnen, wie Sie diese Schwachstelle in Java-Anwendungen mit Snyk Code verhindern.
Ob Sie Entwickler sind oder einfach mehr über Sicherheit in Java erfahren möchten: Dieser Beitrag bietet Ihnen Informationen und Einblicke, mit denen Sie Ihre Java-Anwendungen schützen können.
Path Traversal beim Datei-Upload verstehen
Stellen Sie sich eine Anwendung vor, mit der Benutzer Profilbilder hochladen können. Die Anwendung speichert die Profilbilder in einem Verzeichnis auf dem Server, etwa /images/profiles/. Wenn die Anwendung den vom Benutzer angegebenen Dateinamen nicht ordnungsgemäß überprüft, könnte ein Angreifer eine schädliche Datei mit einem Dateinamen wie ../../etc/passwd hochladen. Dadurch könnte der Angreifer auf sensible Systemdateien außerhalb der vorgesehenen Verzeichnisstruktur zugreifen.
Sehen Sie sich das folgende Beispiel aus einer Spring-Boot-Anwendung mit Thymeleaf an.
Webformulare werden häufig zum Hochladen von Bildern verwendet. Beim Hochladen verwenden wir originalFilename aus der eingehenden MultipartFile. Wenn wir den HTTP-POST-Aufruf abfangen und untersuchen, sehen wir, dass filename lediglich Metadaten in dieser HTTP-Anfrage sind, wie in Zeile 24 dargestellt.

Mit den richtigen Tools lässt sich der Dateiname ganz einfach beliebig ändern! Ändern wir ihn in ../../../../../../../etc/passwd, lädt unser Code die Datei unter images/profiles/../../../../../../../etc/passwd hoch. Der Pfad führt bis zum Stammverzeichnis, und die Datei überschreibt /etc/passwd.
So erkennt Snyk Code Path Traversal.
Snyk Code ist ein SAST-Tool in Echtzeit, mit dem Java-Entwickler Schwachstellen in ihren Anwendungen erkennen können – darunter Path Traversal beim Hochladen von Dateien. Das Tool scannt Ihren Code mithilfe einer statischen Analyse auf Basis eines fortschrittlichen Machine-Learning-Modells und erkennt potenzielle Sicherheitsrisiken.
Bei Path Traversal hilft Ihnen Snyk Code dabei, Stellen in Ihrem Code zu finden, an denen vom Benutzer angegebene Dateipfade verwendet werden, ohne sie ordnungsgemäß zu überprüfen. Als ich beispielsweise mein GitHub-Repository mit Snyk verbunden habe, fand Snyk Code das Path-Traversal-Problem für mich in der Web-UI.

Als Nächstes verwende ich das Snyk-Plugin für IntelliJ IDEA mit aktiviertem Snyk Code. Ein Scan auf meinem lokalen Rechner während der Entwicklung hat das Path-Traversal-Problem beim Datei-Upload bereits aufgedeckt. Außerdem erhielt ich Vorschläge für mögliche Gegenmaßnahmen.

Mit Snyk Code können Sie diese Path-Traversal-Schwachstellen proaktiv erkennen und beheben, bevor sie ausgenutzt werden. So tragen Sie dazu bei, die Sicherheit Ihrer Anwendung und der von ihr verarbeiteten Daten zu gewährleisten.
Zusammengefasst hilft Snyk Code Java-Entwicklern, Path-Traversal-Schwachstellen beim Hochladen von Dateien zu erkennen, indem der Code gescannt und Stellen identifiziert werden, an denen eine ordnungsgemäße Überprüfung fehlt. So können Sie die Sicherheit Ihrer Anwendung gewährleisten und sie vor möglichen Angriffen schützen.
Path Traversal beim Datei-Upload beheben
Am einfachsten beheben Sie eine Path-Traversal-Schwachstelle, indem Sie file.getOriginalFilename() nicht verwenden. Wenn Sie selbst einen Namen generieren, haben Sie die volle Kontrolle darüber, wo die Datei gespeichert wird, denn dieser Speicherort wird dann nicht durch Benutzereingaben beeinflusst.
Wenn Sie den ursprünglichen Dateinamen beibehalten möchten, müssen wir jedoch überprüfen, ob die Datei am gewünschten Speicherort abgelegt wird. Snyk Code hat bereits darauf hingewiesen (siehe das Beispiel mit dem IDE-Plugin), dass wir den Pfad mit normalize normalisieren können.
Ändern wir unser vorheriges Beispiel so, dass geprüft wird, ob der normalisierte Pfad zumindest mit unserem vorgesehenen Upload-Ordner beginnt. So verhindern wir Path-Traversal-Probleme.
Anmerkung der Redaktion: 31. März 2023
Dieser Codeblock wurde aktualisiert.
Path-Traversal-Schwachstellen zu verhindern, ist unerlässlich.
Path-Traversal-Schwachstellen stellen eine ernste Bedrohung für die Sicherheit von Java-Webanwendungen dar und gehören derzeit zu den häufigsten Sicherheitsproblemen, die Snyk in Java-Code findet.
Entwickler müssen sich dieser Schwachstellen bewusst sein und verstehen, wie sie sich verhindern lassen. Durch die Umsetzung geeigneter Prüfungen und den Einsatz von Tools wie Snyk Code zur Erkennung potenzieller Schwachstellen können Entwickler dazu beitragen, ihre Anwendungen zu schützen und Risiken durch Path-Traversal-Angriffe abzuwehren. Sicherheit ist ein fortlaufender Prozess. Wachsam zu bleiben und Schwachstellen proaktiv zu erkennen und zu beheben, ist entscheidend, um die Sicherheit Ihrer Java-Anwendungen zu gewährleisten.
Beheben Sie Ihre Path-Traversal-Schwachstellen und gewinnen Sie tolle Fanartikel
Snyks Schwachstellen-Fixathon The Big Fix läuft derzeit vom 14. Februar bis zum 14. März. Nehmen Sie am Wettbewerb teil und beheben Sie Schwachstellen in Ihren persönlichen Projekten oder in einem Open-Source-Projekt, das Sie häufig verwenden. Haben Sie gerade eine Path-Traversal-Schwachstelle in Ihrer Anwendung entdeckt? Dann nehmen Sie Ihr Projekt bei TheBig Fix auf. Für die Behebung einer einzigen Schwachstelle erhalten Sie ein T-Shirt in limitierter Auflage zu The Big Fix 2023. Die erfolgreichsten Teilnehmer dieses Jahres können sich außerdem auf weitere tolle Preise freuen.
Worauf warten Sie noch? Nehmen Sie an The Big Fix teil und schützen Sie Ihre Anwendung noch heute.

Starten Sie mit Capture the Flag
Erfahren Sie in unserem virtuellen On-Demand-Workshop für Einsteiger, wie Sie Capture-the-Flag-Herausforderungen lösen.
