
XSS persistente in Discourse tramite nome file immagine - CVE-2024-52794
Ho scoperto una vulnerabilità di cross-site scripting (XSS) memorizzato in Discourse, una piattaforma di forum open-source. La vulnerabilità permette a un attaccante di eseguire JavaScript arbitrario nel browser della vittima iniettando un payload malevolo nel nome del file di un'immagine caricata. Ciò interessa diversi vettori di interazione utente, inclusi argomenti pubblici, commenti e messaggi privati.
Quando si carica un'immagine, il nome del file viene renderizzato senza una corretta sanificazione nel frontend. Se il nome del file include un payload JavaScript, ad esempio:
<script>alert(document.domain)</script>
...verrà eseguito quando un utente fa clic sull'immagine. Questo si applica a:
La logica vulnerabile non è riuscita a codificare o rimuovere i tag script dagli attributi alt dell'immagine o dal markup circostante.
document.cookie)| Canale | Versioni Affette |
|---|---|
| Stable | ≤ 3.3.2 |
| Beta | ≤ 3.4.0.beta3 |
| Tests-passed | ≤ 3.4.0.beta3 |
| Canale | Corretta nella Versione |
|---|---|
| Stable | ≥ 3.3.3 |
| Beta | ≥ 3.4.0.beta4 |
| Tests-passed | ≥ 3.4.0.beta4 |
Il problema è stato risolto sanificando correttamente i nomi dei file forniti dall'utente e sfuggendo tutto il contenuto dinamico nei componenti di rendering delle immagini.
| Data | Evento |
|---|---|
| 18 nov 2024 | Vulnerabilità segnalata tramite hackerone |
| 19 dic 2024 | CVE assegnato: CVE-2024-52794 |
| 19 dic 2024 | Advisory pubblico pubblicato da Discourse |