SourceHut 因 XSS 漏洞导致账户被接管
Sourcehut account takeover via build logs (XSS in ansi2html)
我在研究 SourceHut 的 builds.sr.ht 服务时,发现了一个严重的 XSS 漏洞。问题出在 ansi2html.py 处理 ANSI 转义序列的逻辑上,攻击者只需向公开邮件列表发送补丁,就能在构建日志中注入恶意代码。一旦管理员访问该日志页面,攻击者即可窃取 CSRF 令牌,甚至利用部署密钥接管账户。我立即联系了 ~sircmpwn 和上游维护者 Sebastian Pipping,最终通过输出自动清洗和代码重构修复了问题。这次经历让我深刻意识到,即使是看似无害的日志渲染,也可能成为高危攻击面。
如果我是黑帽黑客,只要让 Drew 在开启 JavaScript 的情况下访问受影响的构建日志,我就能以他的名义提交构建任务,并获取 SourceHut 的部署密钥。
HN 评论区
28- nsagent
所以,如果你恰好能让 ␛]8;;https://example.com/"/...␇ 出现在作业日志中——而这你确实能做到,甚至不需要拥有账户,只需向开启了持续集成的公共邮件列表发送一个补丁即可。
这件事竟然能被如此轻易地触发——仅仅是向邮件列表发送一个恶意补丁——简直令人难以置信。
- JamesCoyne
非常值得称赞的是修复上游 Python 项目的工作。我认为在这个时间线上没有任何值得感到尴尬的地方。
- Joker_vD
天哪,又是 OSC 8。因为从终端窗口复制粘贴 URI 已经是 2003 年的做法了,而天哪,居然还要看实际的 URL,而不是它那个任意不准确的描述?那简直像是 1993 年。当我编写我的 ansi2html 变体时,我激进地剥离了所有 C0 和 C1 控制字符,以及所有可能的 APC/DCS/OSC/PM 序列。
与此同时,手册页不同部分之间的内部链接仍然不存在(除非你使用 GNU Info,但说真的,我宁愿在 HTML 文件文件夹上使用 lynx)。