Sicherheitslücke in Shopware
Durch ein Codereview wurden Lisa-Maria Schedlberger und ich auf eine mögliche Sicherheitslücke in Shopware 6 aufmerksam. Der Editor erlaubt die Eingabe von JavaScript und filtert diese nicht automatisch. Man spricht daher von Persisted XSS.
tl;dr
Durch die Angabe von FEATURE_NEXT_15172=1 in der .env kann das Filtern aktiviert werden und die Lücke vermieden werden.
Werden Sicherheitslücken gefunden, sollte man Verantwortlichen die Zeit geben, um darauf adäquat reagieren zu können. Ein schnell verfasster Rant oder Artikel verunsichert Kunden und hilft niemanden.
Wie auch bei TYPO3 gibt es bei Shopware ein Security Team das sich um diese Meldungen kümmert und das man bei solchen Themen kontaktieren sollte.
Ablauf
Dieser Artikel zeigt den Ablauf von der Meldung bis zur Erstellung dieses Artikels.
- 2.5. Meldung an das Shopware Security Team mit der Bitte um Feedback
- 2.5. 14:03: Feedback erhalten, Ticket wird geschlossen, da "Wir haben Ihr Ticket geschlossen, da ein Zugang zum Backend / Admin erforderlich ist, um diese XSS-Sicherheitslücke ausnutzen zu können."
- 2.5. 14:14: Es folgt eine Antwort meinerseits ob das wirklich ernst gemeint ist und Shopware den Redakteur:innen immer vertraue. Immnerhin gibt es aus guten Gründen auch Rollen und nicht jeder Editor sollte als Admin handeln
- 2.5. 15:20: Ich bin immer noch überrascht und versuche andere Kontakte zu finden und frage auf Twitter mal nach ob da wer jemanden kennt (der vielleicht dann anderer Meinung ist)
- 2.5. 16:11: Shopware reagiert mit "Genau, wir vertrauen allen Benutzern mit validen Backend / Admin-Zugriff."
- 2.5. 16:21: In einer Antwort weise ich auf die Definition von Cross-Site Scripting (XSS) hin, die auszugsweise lautet: "An application is vulnerable to attack when: User-supplied data is not validated, filtered, or sanitized by the application." Ich kündige eine Public Full Disclosure nach 21 Tagen an.
- 3.5. 00:33: Auf Twitter meldet sich Ben Marks - Director Global Market Development - und bietet seine Hilfe an.
- 3.5. 00:42: Eine detailierte Mail geht an Ben Marks raus
- 3.5. 10:22: Ich bekomme wieder Post: Es gibt bereits ein Feature Flag, das die Filterung aktiviert. Mit dem nächsten Sicherheitsrelease soll das Flag default on sein.
- 3.5. 14:45: Wir testen das Flag und geben Feedback dass das wunderbar funktionieren würde und fragen aus Freundlichkeit ob ein Blogpost ok wäre.
- 3.5. 15:44: Shopware wünscht sich die Veröffentlichung erst 2 Wochen nach dem Release. Das geht vollkommen in Ordnung.
- 30.6. 9:26: Ich frage nach wie es denn mit Releases aussieht.
- 1.7. 10:05: Shopware hat sich intern abgesprochen und das Flag wird erst mit der nächsten Major Version aktiviert und gibt das OK für den Artikel.
Fazit
Die Einstellung FEATURE_NEXT_15172=1 sollte in der .env-Datei unbedingt gesetzt werden. Ungewollte Auswirkungen sind mir aktuell nicht bekannt.
Breaking Changes können beim Aktivieren des Feature Flags entstehen und somit sollte das Aktivieren bei jedem Shop gut getestet werden. Deswegen wird die Änderung bei uns erst per Default im [nächsten] Major Release veröffentlicht.Zitat von: Consulting Services Lead, Shopware
Ich bedanke mich bei allen Beteiligten für die professionelle Arbeit und die rasche Kommunikation!