
Pädagogische Reproduktion der CVE-2026-14628 Path-Traversal-Schwachstelle mit angreifbaren und sicheren Codebeispielen, Fehlerbehebungserklärung und ausführbaren Demos zum Studium von CWE-22.
Eine minimale, ausführbare Demonstration der Path Traversal (CWE-22) Schwachstellenklasse, die die kürzlich offengelegte CVE-2026-14628 als realen Referenzpunkt verwendet.
CVE-2026-14628 betrifft 'NousResearch/hermes-agent' (< 2026.5.16).
Die Funktion extract_media in gateway/platforms/base.py erstellt einen Dateisystempfad aus eingehenden Webhook-Payloads ohne Validierung, was einem entfernten, nicht authentifizierten Angreifer ermöglicht, Dateien außerhalb des beabsichtigten Medienverzeichnisses zu lesen.
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:Nhermes-agent-Codebasis ab und nutzt sie nicht aus. Stattdessen reproduziert es das genaue Schwachstellenmuster in einem kleinen, in sich geschlossenen Beispiel, damit der Fehler und seine Behebung leicht zu studieren und als Referenz bei der Überprüfung anderem Code wiederverwendbar sind.| Datei | Zweck |
|---|---|
vulnerable_example.py | Reproduziert die fehlerhafte Logik: erstellt einen Pfad durch naive String-Verkettung, keine Validierung |
secure_example.py | Behobene Version: validiert, dass der aufgelöste absolute Pfad innerhalb des vorgesehenen Stammverzeichnisses bleibt |
python3 vulnerable_example.py
Die Ausgabe zeigt, wie der 'Angreifer' erfolgreich eine Datei (secret_outside_media_root.txt) liest, die außerhalb des vorgesehenen Verzeichnisses media_storage/ liegt, und zwar mithilfe einer Eingabe wie ../secret_outside_media_root.txt.
python3 secure_example.py
Die gleiche bösartige Eingabe wird mit einer klaren PathTraversalError-Meldung abgelehnt.
In secure_example.py werden zwei komplementäre Abwehrmaßnahmen angewendet:
.. oder Pfadtrennzeichen enthalten, werden abgelehnt, bevor überhaupt auf das Dateisystem zugegriffen wird (schnelles Scheitern, klarer Fehler für legitime Aufrufer).candidate_path = os.path.abspath(os.path.join(MEDIA_ROOT, filename))
if not candidate_path.startswith(MEDIA_ROOT + os.sep):
raise PathTraversalError(...)
Path Traversal ist eine der häufigsten und am meisten vermeidbaren Schwachstellenklassen in Software, die Datei-Uploads, Downloads oder benutzergesteuerte Dateinamen verarbeitet — Webhook-Handler, Medienprozessoren, Log-Viewer, Template-Engines und dateiausliefernde APIs sind häufige Ziele. Die Behebung ist günstig (ein paar Zeilen); die Kosten des Überspringens sind eine beliebige Dateioffenlegung und in schlimmeren Fällen (in Kombination mit Schreibzugriff) Remote-Code-Ausführung.
Dieses Projekt dient nur zu Bildungszwecken. Es ist eine generische Reproduktion einer bekannten Schwachstellenklasse, kein funktionierender Exploit gegen eine bestimmte live oder ungepatchte Software. Verwenden Sie diese Techniken nicht gegen Systeme, die Sie nicht besitzen oder für die Sie keine ausdrückliche Testgenehmigung haben.