CVE-2026-41180PsiTransfer是一个开源的自托管文件共享解决方案。在2.4.3版本之前,其`/files/:uploadId`接口的上传PATCH流程存在严重的路径验证绕过漏洞。系统仅对编码后的`req.path`进行挂载路径验证,但底层的tus处理器却使用解码后的`req.params.uploadId`进行文件写入操作。在特定的部署环境下,未经身份认证的攻击者可利用此差异绕过安全检查,在应用程序根目录下创建恶意的`config.<NODE_ENV>.js`配置文件。该文件将在下一次进程重启时被自动加载并执行,从而导致远程代码执行(RCE)。
该漏洞的成因在于PsiTransfer在处理文件上传请求时,对路径参数的处理逻辑存在不一致性。具体而言,验证逻辑检查的是`req.path`(即包含URL编码字符的原始请求路径),而实际执行文件写入操作的tus处理器使用的是`req.params.uploadId`(即已被URL解码的参数)。这种差异使得攻击者可以构造包含路径遍历字符(如`../`)并进行URL编码的Payload。在验证阶段,系统识别的是编码后的安全路径;而在写入阶段,解码后的路径跳转到了上层目录。利用该漏洞需要满足一定条件:目标环境需配置了自定义的`PSITRANSFER_UPLOAD_DIR`,且该目录的basename前缀必须能够覆盖到应用启动时加载的JavaScript路径(例如`conf`目录)。成功利用后,攻击者可以向应用根目录写入任意内容的`config.<NODE_ENV>.js`文件。由于Node.js应用在启动时会加载此类配置文件,攻击者注入的恶意JavaScript代码将在服务重启时获得执行权限,进而完全控制服务器。