CVE-2026-40876Goshs (Go编写的SimpleHTTPServer) 在2.0.0-beta.6之前的版本中存在SFTP根目录逃逸漏洞。由于基于前缀的路径验证缺陷,经过身份认证的SFTP用户可以绕过预期的安全边界,读写服务器文件系统上配置的SFTP根目录之外的任意文件。该漏洞可能导致敏感信息泄露或恶意修改服务器文件,安全性影响较高。
该漏洞源于 `sftpserver/helper.go` 中的 `sanitizePath()` 函数使用了不安全的原始字符串前缀比较,而非严格的目录边界检查。漏洞触发点位于SFTP子系统处理请求时,通过 `sftpserver/sftpserver.go` 路由至 `DefaultHandler.GetHandler()`,进而调用 `readFile`、`writeFile` 等操作。例如,若配置的SFTP根目录为 `/tmp/goshsroot`,攻击者构造路径 `/tmp/goshsroot_evil/secret.txt` 时,该路径以 `/tmp/goshsroot` 开头,因此能通过 `sanitizePath()` 的验证。实际上,由于缺少对路径分隔符(如 `/`)的边界检查,攻击者成功逃逸出限制目录,实现了对父级目录或同级目录文件的读写操作,破坏了沙箱机制。这种前缀匹配逻辑的缺陷使得攻击者无需特殊权限即可突破文件访问限制,对系统安全构成严重威胁。