OpenSSH 发布 10.6p2 紧急更新,修复超长密码绕过认证漏洞
OpenSSH 项目于 11 月 5 日发布 10.6p2 紧急更新,修复一个允许攻击者用 257 至 1024 字节长密码绕过 SSH 认证的漏洞。Alpine Linux 默认构建受直接影响,OpenWrt、Buildroot 等基于 musl 的系统也需排查,该问题或自 2016 年起存在。
OpenSSH 项目于 11 月 5 日发布 10.6p2 紧急更新,针对一个可绕过 SSH 认证的漏洞进行修补。据 The Hacker News 报道,攻击者只要能够访问目标服务器的 SSH 端口,在知晓一个未设置密码的账户名的前提下,提交长度介于 257 至 1024 字节的密码,便可在不掌握真实密码的情况下登录该账户。
该漏洞的触发条件较为特定:服务器需运行未启用 PAM 的 openssh-server、开启密码登录、存在密码字段为 * 的无密码账户,并且系统中至少还有一个使用 $5$ 或 $6$ 哈希的已设密码账户。Alpine Linux 默认构建的 OpenSSH 恰好满足前两项条件,因而风险相对突出。
漏洞根源在于 sshd 与 musl 库 crypt() 函数的交互逻辑。当无密码账户的存储字段过短、无法提供盐值时,sshd 会转而借用其他账户的盐值;而 musl 对超过 256 字节的密码返回 *,这一返回值恰好与无密码账户的存储值匹配,导致认证被错误放行。OpenSSH 项目表示,该问题可能自 2016 年起就已存在。
受影响范围并不限于 Alpine Linux。安全研究人员指出,OpenWrt、Buildroot 和 Yocto 等同样基于 musl 的系统也需要进行排查。对于运行相关发行版的运维人员而言,尽快升级至 10.6p2 并核查无密码账户配置,是当前较为稳妥的处置方式。