我们运营着一个 Discourse 论坛,并收到了一份外部报告,声称通过 onebox / allowed_onebox_iframes 机制存在存储型代码注入漏洞。在采取行动之前,我想请社区/团队协助确认当前版本的 Discourse 是否真的可能出现报告中描述的行为。
报告声称:
- Discourse 会自动对单独一行的裸 URL 进行 onebox 处理,并为所有观众嵌入页面的
twitter:player作为 iframe。 - iframe 白名单的源匹配仅基于“前缀”,因此像
www.youtube.com.attacker.example这样的主机名会被接受为合法的 YouTube 嵌入,同时提供攻击者控制的 HTML。 - 默认的
allowed_onebox_iframes实际上是一个通配符。
我的理解是:(a) Discourse 基于域名边界(而非裸前缀)来匹配白名单中的 iframe 主机名;(b) 默认的 onebox iframe 白名单是经过筛选的提供商列表,而非 *。能否有人确认当前版本中 allowed_onebox_iframes 的主机名匹配机制是如何工作的,以及报告中描述的这种子域名后缀技巧是否真的能通过验证?
我们使用的是 Discourse v2026.8.0-latest 版本。如果有帮助,我很乐意私下与安团队分享原始报告。
谢谢。