我在 Discourse(一个开源论坛平台)中发现了一个存储型跨站脚本(XSS)漏洞。攻击者可以通过在上传图片的文件名中注入恶意载荷,在受害者的浏览器中执行任意 JavaScript。此漏洞影响多种用户交互场景,包括公开话题、评论和私信。
当上传图片时,文件名在前端渲染时未经过适当的清理。如果文件名包含 JavaScript 载荷,例如:
<script>alert(document.domain)</script>
...当用户点击该图片时,该载荷将被执行。这适用于:
存在漏洞的逻辑未能对 img 标签的 alt 属性或周边标记中的 script 标签进行编码或剥离。
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 |
该问题已通过正确清理用户提供的文件名,并在图片渲染组件中转义所有动态内容得到解决。
| 日期 | 事件 |
|---|---|
| 2024-11-18 | 通过 Hackerone 报告漏洞 |
| 2024-12-19 | 分配 CVE:CVE-2024-52794 |
| 2024-12-19 | Discourse 发布公开公告 |