
Хранимый XSS в Discourse через имя файла изображения - CVE-2024-52794
Я обнаружил уязвимость межсайтового скриптинга (XSS) с сохранением в Discourse — платформе форумов с открытым исходным кодом. Уязвимость позволяет атакующему выполнить произвольный JavaScript в браузере жертвы путём внедрения вредоносной нагрузки в имя загружаемого файла изображения. Это затрагивает несколько векторов взаимодействия пользователей, включая публичные темы, комментарии и личные сообщения.
При загрузке изображения имя файла отображается без надлежащей санитизации на стороне клиента. Если имя файла содержит полезную нагрузку JavaScript, например:
<script>alert(document.domain)</script>
...она будет выполнена при клике пользователя на изображение. Это распространяется на:
Уязвимая логика не кодировала и не удаляла тэги script из атрибутов alt изображения или окружающей разметки.
document.cookie)| Канал | Подверженные версии |
|---|---|
| Stable | ≤ 3.3.2 |
| Beta | ≤ 3.4.0.beta3 |
| Tests-passed | ≤ 3.4.0.beta3 |
| Канал | Исправлено в версии |
|---|---|
| Stable | ≥ 3.3.3 |
| Beta | ≥ 3.4.0.beta4 |
| Tests-passed | ≥ 3.4.0.beta4 |
Проблема была решена путём правильной санитизации имён файлов, предоставленных пользователем, и экранирования всего динамического содержимого в компонентах отображения изображений.
| Дата | Событие |
|---|---|
| 18.11.2024 | Уязвимость сообщена через HackerOne |
| 19.12.2024 | Присвоен CVE: CVE-2024-52794 |
| 19.12.2024 | Опубликовано публичное уведомление Discourse |