CVE-2026-32703OpenProject是一款开源的Web项目管理系统。2026年3月披露的安全漏洞影响OpenProject多个版本,该漏洞存在于仓库(Repositories)模块中。攻击者利用该漏洞可以在文件名字段中注入恶意HTML或JavaScript代码,由于系统未对仓库中显示的文件名进行充分的安全过滤和转义处理,导致注入的恶意代码被持久化存储在系统中。当项目成员访问仓库页面并查看包含恶意文件的提交记录时,恶意代码将在受害者浏览器中执行,从而实现持久化的跨站脚本攻击(Stored XSS)。此漏洞的危险性在于攻击者只需拥有仓库的推送权限即可实施攻击,且恶意代码会持久存在于系统中,影响所有访问该仓库页面的用户。攻击成功后,攻击者可窃取用户会话cookie、劫持用户账户、执行任意操作或在受害者浏览器中进行钓鱼攻击。
漏洞根源在于OpenProject的Repositories模块在展示仓库文件列表时,直接将文件名输出到HTML页面而未进行适当的HTML转义处理。攻击者利用Git的提交功能,可以创建一个文件名包含恶意HTML/JavaScript代码的提交。例如,当攻击者执行类似「git commit -m 'Initial commit' --allow-empty -o '<script>alert(document.cookie)</script>.txt」这样的命令时,恶意文件名会被提交到仓库中。系统在渲染仓库变更页面时,会将这个文件名未经转义地输出到HTML中,从而导致恶意脚本在用户访问页面时执行。由于该文件名被存储在Git历史中,因此这种攻击是持久化的,只要文件历史存在,恶意代码就会持续生效。攻击者利用此漏洞可以窃取受害者的认证凭证、模拟用户操作或进行进一步的攻击。修复版本(16.6.9、17.0.6、17.1.3、17.2.1)通过在输出文件名时进行HTML实体转义来消除此漏洞。