Skip to content
KitploitKITPLOIT
ToolsBlog
Log in
Einreichen
ToolsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

··Feeds·Kontakt·Datenschutz·© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
CVE-2026-38360 — Sicherheitshinweis: CVE-2026-38360 Pfad-Traversal (CWE-22) in dash-uploader (Python/PyPI) | Kitploit
Tools/GitHubGitHub/a1ohadance/cve-2026-38360
SchwachstellenanalyseCode-AnalyseExploitationWebsicherheitPenetrationstestsLernen & Bildung
GitHuba1ohadance/cve-2026-38360

CVE-2026-38360

Sicherheitshinweis: CVE-2026-38360 Pfad-Traversal (CWE-22) in dash-uploader (Python/PyPI)

Repository anzeigen
210vor 4 MonatenNoch nicht geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

CVE-2026-38360: Path Traversal in dash-uploader

CVE NVD CWE Severity Patch Auth Version PyPI Downloads Total Downloads License

Unauthentifizierte Path-Traversal-Schwachstelle in fohrloop/dash-uploader (Python, PyPI), die das Schreiben beliebiger Dateien ermöglicht und unter anderem zu Remote Code Execution (RCE), Überschreiben von Anwendungsquellcode, gespeichertem XSS und der Installation persistenter Backdoors führt.

⚠️ Kein Patch verfügbar, und es wird niemals einen geben

Das Repository wurde am 2025-07-19 archiviert und hat keinen aktiven Maintainer. Jede veröffentlichte Version (0.1.0 bis 0.7.0a2) ist betroffen und wird es bleiben. Das Paket verzeichnet weiterhin etwa 28.000 monatliche Downloads.

Jeder, der dash-uploader in Produktion betreibt, muss selbst eine Gegenmaßnahme umsetzen. Die empfohlene Lösung ist die Migration auf die in Plotly Dash integrierte Komponente dcc.Upload. Alle Optionen finden Sie unter Mitigation.

CVE-IDCVE-2026-38360 (NVD)
SchwachstellePath Traversal (CWE-22)
CVSS 3.19.8 / Kritisch (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Produktdash-uploader
Betroffene Versionen0.1.0 bis 0.7.0a2 (alle 18 Releases)
Behobene Versionkeine (Projekt am 2025-07-19 archiviert)
AngriffsvektorRemote, ohne Authentifizierung
EntdeckerMuhammad Fitri Bin Mohd Sultan
Vergeben vonMITRE, 2026-05-07
Verwandte CVEsCVE-2026-38361 (DoS in derselben Bibliothek)

Beschreibung

Drei benutzerkontrollierte Parameter aus request.form.get() in dash_uploader/httprequesthandler.py werden ohne Bereinigung oder Validierung direkt an os.path.join() und os.makedirs() übergeben:

  1. upload_id (Zeile 57 → Zeile 161, BaseHttpRequestHandler.get_temp_root): steuert das Zielverzeichnis. Ein Angreifer kann upload_id=../../../../usr/local/lib/python3.10/site-packages senden; die Dateien werden dann in das Paketverzeichnis von Python geschrieben.

  2. resumableFilename (Zeile 51 → Zeile 108, BaseHttpRequestHandler._post): steuert den endgültigen Dateinamen. Ein Angreifer kann selbst mit einer legitimen upload_id über den Dateinamen aus dem Upload-Verzeichnis ausbrechen.

  3. resumableIdentifier (Zeile 54 → Zeile 64, BaseHttpRequestHandler._post): wird zusammen mit os.makedirs() verwendet, um das temporäre Verzeichnis zu erstellen. Ein Angreifer kann an beliebiger Stelle im Dateisystem beliebige Verzeichnisse anlegen.

Der Upload-Endpunkt (standardmäßig /API/dash-uploader) erfordert keine Authentifizierung. Der in v0.5.0 hinzugefügte Hook http_request_handler ermöglicht Vorabprüfungen über post_before(), aber die verwundbare Methode _post() liest alle Parameter direkt aus request.form, nachdem der Hook zurückgekehrt ist. Der Hook kann Parameter nicht bereinigen, bevor die Bibliothek sie verarbeitet. Ein Entwickler, der über den Hook eine Authentifizierung hinzufügt, bleibt gegenüber Path Traversal durch einen authentifizierten Benutzer verwundbar.

Verwundbarer Code

# dash_uploader/httprequesthandler.py
def _post(self):
    resumableFilename = request.form.get("resumableFilename", default="error", type=str)
    resumableIdentifier = request.form.get("resumableIdentifier", default="error", type=str)
    upload_id = request.form.get("upload_id", default="", type=str)
    ...
    temp_root = self.get_temp_root(upload_id)                          # upload_id flows in here
    temp_dir = os.path.join(temp_root, resumableIdentifier)            # raw user input -> os.path.join
    if not os.path.isdir(temp_dir):
        os.makedirs(temp_dir)                                          # raw user input -> os.makedirs

def get_temp_root(self, upload_id):
    return os.path.join(self.upload_folder, upload_id)                 # no sanitization: ../../ escapes upload_folder

Drei unabhängige Traversal-Senken haben dieselbe Grundursache: Formularwerte erreichen os.path.join und os.makedirs ohne Validierung.

Attack vectors

Ein nicht authentifizierter Remote-Angreifer sendet eine HTTP-POST-Multipart-Anfrage an den Upload-Endpunkt. Durch das Injizieren von Path-Traversal-Sequenzen (../) in den Formularparameter upload_id kontrolliert der Angreifer das Zielverzeichnis für die hochgeladene Datei. Beispielsweise schreibt upload_id=../../../../usr/local/lib/python3.10/site-packages Dateien in das Paketverzeichnis von Python und ermöglicht so beim nächsten Interpreterstart RCE durch die automatische Ausführung von .pth-Dateien.

Es sind keine Authentifizierung, kein Sitzungstoken und kein CSRF-Token erforderlich. Zwei weitere Parameter (resumableFilename und resumableIdentifier) bieten unabhängige Traversal-Vektoren über denselben Endpunkt. Die Standardkonfiguration der Bibliothek, wie sie in der offiziellen Quickstart-Dokumentation gezeigt wird, ist mit einem einzigen curl-Befehl ausnutzbar.

Auswirkungen

Beliebiges Schreiben von Dateien in jedes Verzeichnis, das für den Serverprozess beschreibbar ist. Dies führt über mehrere bekannte Primitive zu Remote Code Execution (RCE):

RCE-Primitive

  • Ablegen einer Python-.pth-Datei in site-packages. Führt beim nächsten Interpreterstart vom Angreifer bereitgestellten Code aus.
  • Injektion von sitecustomize.py oder usercustomize.py. Wird bei jedem Python-Start ausgeführt.
  • Überschreiben eines importierbaren Python-Moduls im Paketverzeichnis der Anwendung. Wird beim nächsten Import oder Worker-Recycle ausgeführt.
  • Überschreiben des WSGI/ASGI-Einstiegspunkts (z. B. app.wsgi, wsgi.py). Wird beim nächsten Worker-Reload ausgeführt.
  • Cron-Drop-in (/etc/cron.d/, /etc/cron.hourly/, User-Crontab-Spool), wenn der Prozess die erforderlichen Privilegien besitzt. Zeitgesteuerte Ausführung.
  • Systemd-Unit- oder User-Unit-Drop-in (/etc/systemd/system/, ~/.config/systemd/user/). Wird beim nächsten Dienststart oder Neustart ausgeführt.
  • Injektion in /etc/ld.so.preload, wenn der Prozess als Root läuft. Lädt Angreifercode in jede nachfolgende Ausführung von Binärdateien vor.
  • Überschreiben von Shell-Startdateien (~/.bashrc, ~/.profile, ~/.bash_profile). Wird beim nächsten interaktiven Login des Anwendungsbenutzers ausgeführt.
  • Anhängen an ~/.ssh/authorized_keys. Gewährt persistenten SSH-Zugriff auf den Host als Anwendungsbenutzer.

Auswirkungen auf die Web-Ebene

Tool herunterladen