„`html
Zusammenfassung
Eine Stored Cross-Site-Scripting (XSS)-Schwachstelle in ComfyUI vor Version 0.28.0 ermöglicht es Angreifern, beliebige JavaScript-Code im Browser-Kontext von Benutzern auszuführen. Der Exploit zielt auf den GET /userdata/{file}-Endpunkt ab, der hochgeladene HTML- und SVG-Dateien mit falschen Content-Type-Headern bereitstellt. Dies ermöglicht Zugriff auf sensible API-Token, Einstellungen und Workflows.
Betroffene Systeme
ComfyUI-Installationen vor Version 0.28.0 sind anfällig. Die Schwachstelle betrifft alle Bereitstellungen, bei denen der /userdata-Endpunkt für Dateispeicherung und -abruf konfiguriert ist. Der Angriffsvektor ist netzwerkbasiert und erfordert keine Authentifizierung für die initiale Dateispeicherung.
Technische Details
Der POST /userdata-Endpunkt speichert beliebige Request-Bodies ohne Content-Type-Validierung. Der GET /userdata/{file}-Handler nutzt web.FileResponse(path) und leitet Content-Types aus Dateierweiterungen ab. HTML- und SVG-Dateien werden als text/html bzw. image/svg+xml bereitgestellt. Browser interpretieren diese Dateien als vertrauenswürdige Same-Origin-Ressourcen und führen enthaltene Skripte aus.
Der Angreifer kann auf folgende Daten zugreifen: Browser-gespeicherte API-Token, Benutzereinstellungen, Workflow-Definitionen und authentifizierte API-Aufrufe durchführen. Der /view-Endpunkt hatte bereits Schutzmechanismen gegen gefährliche MIME-Types implementiert, diese wurden jedoch nicht auf /userdata angewendet.
Empfohlene Massnahmen
- Sofortiges Update: Upgrade auf ComfyUI 0.28.0 oder höher
- Content-Type Erzwingung: Alle Dateitypen mit Download-Header bereitstellen
- Validierung: Dateiupload auf sichere Typen beschränken
- Browser-Token-Überprüfung: Gespeicherte API-Token auf Kompromittierung prüfen
- Workflow-Audit: UnauthoÂrisierte Workflow-Änderungen überprüfen
Bewertung
CVSS 8.2 (High): Kritischer Severity für vertrauliche Datenabfange und unbefugte API-Nutzung. Einzige Limitation ist die Erfordernis einer bestehenden ComfyUI-Instanz und Benutzeraktion zum Anklicken des Exploit-Links.
„`