CVE-2026-22256CVE-2026-22256是Salvo Rust Web框架中的一个高危反射型跨站脚本(XSS)漏洞。该漏洞存在于list_html函数中,该函数负责生成目录文件视图。在0.88.1版本之前,程序在生成HTML页面时直接将当前路径(current.path)插入到页面中而未进行适当的安全消毒处理。由于请求路径在路由匹配阶段会被解码和规范化,但直接插入HTML时缺少转义机制,攻击者可以通过构造特殊的URL路径注入恶意JavaScript代码。此漏洞的利用条件相对宽松,攻击者只需确保目标根路径下存在子目录(如styles、scripts等常见目录结构),使路由能够匹配到list_html页面而非返回404错误页面。成功利用此漏洞可导致攻击者在受害者浏览器中执行任意JavaScript代码,窃取敏感会话信息、劫持用户账户或进行钓鱼攻击。该漏洞CVSS评分8.8,属于高危级别,无需认证即可通过网络发起攻击,但需要诱导用户点击恶意链接。
Salvo框架的list_html函数(位于crates/serve-static/src/dir.rs)在处理静态文件目录列表时存在安全漏洞。漏洞产生的根本原因是程序在渲染目录列表HTML模板时,直接将用户可控的请求路径(current.path)字段输出到HTML中而未进行HTML实体编码转义。当用户请求类似/files/<script>alert(1)</script>/的URL时,该路径在Salvo的路由匹配阶段会被自动解码规范化,然后直接拼接到生成的HTML页面源代码中。浏览器在解析该HTML时会将<script>标签作为有效脚本执行,从而触发XSS攻击。攻击成功的关键条件是目标应用必须存在一个可访问的根路由(如/files),且该路由下至少包含一个子目录,这样请求才会被list_html函数处理并返回目录列表页面,而非返回404 Not Found页面。攻击者利用此漏洞可以窃取用户Cookie、会话令牌,执行任意客户端操作,或进行中间人攻击。Salvo官方已在0.88.1版本中通过添加HTML转义修复了该漏洞。