
XSS almacenado en Discourse a través del nombre de archivo de imagen - CVE-2024-52794
Descubrí una vulnerabilidad de cross-site scripting (XSS) almacenado en Discourse, una plataforma de foros de código abierto. La vulnerabilidad permite a un atacante ejecutar JavaScript arbitrario en el navegador de la víctima inyectando una carga maliciosa en el nombre de archivo de una imagen subida. Esto afecta a varios vectores de interacción de usuario, incluidos temas públicos, comentarios y mensajes privados.
Al subir una imagen, el nombre de archivo se renderiza sin la debida sanitización en el frontend. Si el nombre de archivo incluye una carga JavaScript, por ejemplo:
<script>alert(document.domain)</script>
...se ejecutará cuando un usuario haga clic en la imagen. Esto aplica a:
La lógica vulnerable no logró codificar ni eliminar las etiquetas script de los atributos alt de las imágenes ni del marcado circundante.
document.cookie)| Canal | Versiones Afectadas |
|---|---|
| Estable | ≤ 3.3.2 |
| Beta | ≤ 3.4.0.beta3 |
| Tests-passed | ≤ 3.4.0.beta3 |
| Canal | Versión Parcheada |
|---|---|
| Estable | ≥ 3.3.3 |
| Beta | ≥ 3.4.0.beta4 |
| Tests-passed | ≥ 3.4.0.beta4 |
El problema se solucionó sanitizando adecuadamente los nombres de archivo proporcionados por el usuario y escapando todo el contenido dinámico en los componentes de renderizado de imágenes.
| Fecha | Evento |
|---|---|
| 18 nov 2024 | Vulnerabilidad reportada a través de hackerone |
| 19 dic 2024 | CVE asignado: CVE-2024-52794 |
| 19 dic 2024 | Aviso público publicado por Discourse |