FlawOpen

flawopen.com/XSS/SVG-Upload

Ist ein SVG-Upload ein XSS-Risiko?

Referenzseite
Kurzantwort

Ein hochgeladenes SVG ist ein Dokument, nicht nur Pixel: Es kann aktive Elemente wie Skripte und Event-Handler enthalten. Ob sie ausgeführt werden, hängt vom Browserkontext ab. In <img> gelten Einschränkungen; Inline-SVG, direkte Navigation und Einbettung als Dokument können aktiv sein.

Was SVG von anderen Bildformaten unterscheidet

Im Gegensatz zu PNG oder JPEG ist SVG XML und kann aktive Inhalte enthalten. Browser deaktivieren Skripte in eingeschränkten Bildkontexten wie <img>, aber nicht beim direkten Öffnen, bei der Einbettung als Dokument über <object>, <iframe> oder <embed>, oder bei Inline-Markup. Ein hochgeladenes Profilbild kann zu Stored XSS werden, wenn die Anwendung es im aktiven Kontext unter ihrer eigenen Origin ausliefert. Das Verhalten hängt vom Kontext ab; Erweiterung und MIME-Typ bereinigen keine Inhalte.

Uploads sicher behandeln

Häufige Fragen

Reicht es, Dateiendung oder MIME-Typ zu prüfen?

['Reicht es, Dateiendung oder MIME-Typ zu prüfen?', 'Nein. Endung und angegebener MIME-Typ sind Metadaten, keine Prüfung aktiver Dokumentinhalte. Prüfen Sie das tatsächliche Format und nutzen Sie anschließend eine SVG-spezifische Allowlist-Bereinigung oder konvertieren Sie in Raster, wenn SVG-Funktionen unnötig sind.']

Quellen

Siehe auch Cross-Site-Scripting (XSS, CWE-79): Funktionsweise und Schutz in jeder Sprache — flawopen.com XSS-Risiko durch Vue v-html WKWebView: Nicht vertrauenswürdiges HTML? Reflected, Stored und DOM-basiertes XSS: Wo liegt der Unterschied? Sicherheitsrisiken von addJavascriptInterface unter Android Angular-XSS-Schutz: sichere Standards und Bypass-APIs XSS durch MIME-Sniffing: Content-Type und nosniff