
Stored XSS in Discourse via image filename - CVE-2024-52794
Ich habe eine persistente Cross-Site Scripting (XSS)-Schwachstelle in Discourse entdeckt, einer Open-Source-Forum-Plattform. Die Schwachstelle ermöglicht es einem Angreifer, beliebiges JavaScript im Browser des Opfers auszuführen, indem ein bösartiger Payload in den Dateinamen eines hochgeladenen Bildes eingefügt wird. Dies betrifft mehrere Benutzerinteraktionsvektoren, darunter öffentliche Themen, Kommentare und private Nachrichten.
Beim Hochladen eines Bildes wird der Dateiname im Frontend ohne ordnungsgemäße Bereinigung gerendert. Wenn der Dateiname einen JavaScript-Payload enthält, z. B.:
<script>alert(document.domain)</script>
...wird dieser ausgeführt, sobald ein Benutzer auf das Bild klickt. Dies betrifft:
Die anfällige Logik hat es versäumt, Script-Tags aus img-alt-Attributen oder dem umgebenden Markup zu kodieren oder zu entfernen.
document.cookie)| Kanal | Betroffene Versionen |
|---|---|
| Stable | ≤ 3.3.2 |
| Beta | ≤ 3.4.0.beta3 |
| Tests-passed | ≤ 3.4.0.beta3 |
| Kanal | Korrigiert in Version |
|---|---|
| Stable | ≥ 3.3.3 |
| Beta | ≥ 3.4.0.beta4 |
| Tests-passed | ≥ 3.4.0.beta4 |
Das Problem wurde behoben, indem vom Benutzer bereitgestellte Dateinamen ordnungsgemäß bereinigt und alle dynamischen Inhalte in den Bild-Rendering-Komponenten escaped wurden.
| Datum | Ereignis |
|---|---|
| 18. Nov. 2024 | Schwachstelle über Hackerone gemeldet |
| 19. Dez. 2024 | CVE zugewiesen: CVE-2024-52794 |
| 19. Dez. 2024 | Öffentliche Advisory von Discourse veröffentlicht |