CVE-2026-22257CVE-2026-22257是Salvo Rust Web框架中的一个高危跨站脚本(XSS)漏洞。Salvo是一个用Rust语言编写的高性能Web后端框架,广泛应用于构建现代Web应用程序和API服务。该漏洞存在于list_html函数中,该函数负责生成目录文件列表视图。在0.88.1版本之前,该函数在生成HTML文件视图时,未对文件或文件夹名称进行充分的输入清理和输出编码。当网站允许通过此功能访问公共文件,并且攻击者能够上传文件时,恶意构造的文件名可以被注入到页面中执行,从而实现跨站脚本攻击。攻击者可以利用此漏洞窃取用户会话Cookie、劫持用户账户、进行钓鱼攻击或传播恶意内容。由于该漏洞的CVSS评分为8.8,属于高危级别,对系统机密性、完整性和可用性都造成较大影响。建议受影响的用户尽快升级到0.88.1或更高版本以修复此安全漏洞。
该漏洞的根本原因在于Salvo框架的list_html函数(在crates/serve-static/src/dir.rs第581行附近)在处理目录文件列表时,直接将文件名输出到HTML页面而未进行适当的转义或过滤。具体来说,当用户请求一个目录路径时,list_html函数会遍历目录中的所有文件和子文件夹,并将其名称嵌入到生成的HTML响应中。攻击者可以通过上传包含恶意JavaScript代码的文件名(如<img src=x onerror=alert(document.cookie)>test.txt)来触发XSS漏洞。当其他用户通过Web浏览器访问该目录列表时,浏览器会解析HTML并执行注入的恶意脚本代码。由于该功能通常用于文件浏览和共享场景,攻击面较大。此外,该漏洞的利用不需要任何认证(PR:N),攻击者只需要能够上传文件或创建特定名称的文件夹即可实施攻击。用户交互要求为需要点击或访问相关页面(UI:R),这在文件共享场景中是很常见的操作。