
XSS armazenado no Discourse através do nome do arquivo de imagem - CVE-2024-52794
Descobri uma vulnerabilidade de cross-site scripting armazenado (XSS) no Discourse, uma plataforma de fórum de código aberto. A vulnerabilidade permite que um invasor execute JavaScript arbitrário no navegador da vítima ao injetar um payload malicioso no nome do arquivo de uma imagem enviada. Isso afeta vários vetores de interação do usuário, incluindo tópicos públicos, comentários e mensagens privadas.
Ao enviar uma imagem, o nome do arquivo é renderizado sem a devida sanitização no frontend. Se o nome do arquivo incluir um payload JavaScript, por exemplo:
<script>alert(document.domain)</script>
...ele será executado quando o usuário clicar na imagem. Isso se aplica a:
A lógica vulnerável falhou ao codificar ou remover tags de script dos atributos alt de imagens ou da marcação ao redor.
document.cookie)| Canal | Versões Afetadas |
|---|---|
| Stable | ≤ 3.3.2 |
| Beta | ≤ 3.4.0.beta3 |
| Tests-passed | ≤ 3.4.0.beta3 |
| Canal | Corrigido na Versão |
|---|---|
| Stable | ≥ 3.3.3 |
| Beta | ≥ 3.4.0.beta4 |
| Tests-passed | ≥ 3.4.0.beta4 |
O problema foi resolvido sanitizando adequadamente os nomes de arquivo fornecidos pelo usuário e escapando todo o conteúdo dinâmico nos componentes de renderização de imagens.
| Data | Evento |
|---|---|
| 18/11/2024 | Vulnerabilidade reportada via hackerone |
| 19/12/2024 | CVE atribuído: CVE-2024-52794 |
| 19/12/2024 | Aviso público publicado pelo Discourse |