CVE-2026-23625OpenProject是一款开源的Web项目管理软件。OpenProject 16.3.0至16.6.4版本存在一处存储型跨站脚本(XSS)漏洞,存在于Roadmap视图中。该漏洞源于Roadmap视图在渲染版本的“相关工作包”列表时,link_to_work_package辅助函数会将package.project.to_s拼接到链接中,并使用.html_safe返回整个字符串。由于项目名称由用户控制,且在调用.html_safe之前没有进行任何转义处理,攻击者可以在子项目名称中注入任意HTML代码,这些代码将被原样注入到页面中执行。此漏洞的根源在于OpenProject 16.3.0版本重构时将X-Content-Type-Options: nosniff头从Rails标准内容安全策略中移除,导致原有的安全防护失效。攻击者可以利用此漏洞窃取用户会话、劫持用户账户或进行其他恶意操作。
漏洞存在于OpenProject的Roadmap视图组件中。当版本包含来自不同项目(如子项目)的工作包时,系统会调用link_to_work_package辅助函数渲染相关链接。该函数执行package.project.to_s操作获取项目名称字符串,然后通过.html_safe方法标记为安全HTML后输出。问题在于:1) 项目名称由用户可控输入设置;2) 在调用.html_safe前缺少HTML转义处理;3) X-Content-Type-Options: nosniff头的缺失使得浏览器不会强制执行MIME类型嗅探,从而允许嵌入的脚本被执行。攻击者只需在子项目名称字段中插入恶意HTML/JavaScript代码,如<img src=x onerror=alert(document.cookie)>,当其他用户访问包含该子项目工作包的Roadmap页面时,恶意代码即会执行。