CVE-2026-23942Erlang OTP的ssh_sftpd模块存在路径遍历漏洞。该漏洞源于SFTP服务器在检查路径是否在配置的根目录内时,使用了字符串前缀匹配函数lists:prefix/2,而非正确的路径组件验证方式。由于字符串前缀匹配的逻辑缺陷,攻击者可以访问与配置根目录共享公共名称前缀的同级目录。例如,如果根目录设置为/home/user1,攻击者可以通过访问/home/user10或/home/user1_backup等路径来绕过目录限制,访问本应被禁止访问的目录内容。该漏洞需要低权限认证用户方可利用,CVSS评分5.4,影响OTP 17.0至28.4.1等多个版本。
漏洞根源在于ssh_sftpd:is_within_root/2函数使用lists:prefix/2进行路径校验。lists:prefix/2是列表前缀匹配函数,它仅检查目标路径是否以根目录字符串开头,而不验证路径的各个组件是否真正位于根目录之下。攻击示例:设根目录为/home/user1,使用lists:prefix/2时,/home/user10和/home/user1_backup都会被错误地判定为在根目录内,因为它们都以/home/user1开头。正确做法应使用filename:split/1将路径分解为组件,再逐一验证每个组件均未跳出根目录范围。攻击者利用此漏洞可读取或操作SFTP服务器上根目录的兄弟目录中的文件,前提是目标目录名与根目录存在共同前缀且攻击者具有有效的SFTP认证凭据。