内容提要
OpenSSH存在隐藏约10年的高危漏洞CVE-2026-123158:在musl libc系统(如Alpine Linux)上,攻击者无需密码或私钥,仅输入257~1024字节超长密码,即可利用crypt()与shadow中“*”被误判为验证成功,绕过认证甚至获取root权限。Ubuntu、Debian等glibc系统不受影响。OpenSSH已发布10.6p2修复,Alpine也已提供补丁,建议尽快升级或关闭密码登录。
延伸解读
漏洞触发条件严格,但 Alpine 环境需特别警惕
该漏洞需同时满足多个条件:使用 musl libc、OpenSSH 未使用 PAM、开启密码登录、存在密码字段为 * 的账户,且至少有一个本地账户使用有效密码哈希。Alpine Linux 常作为 Docker 容器和云服务器基础镜像,其 OpenSSH 默认不使用 PAM,因此风险较高。普通 Ubuntu、Debian 等 glibc 系统不受影响,使用 Dropbear SSH 的设备也不受影响。
超长密码绕过认证的根源:两个“*”被误判为成功
Linux 的 /etc/shadow 用 * 表示账户无有效密码哈希,而 musl libc 的 crypt() 在处理超过 256 字节的密码时也返回 *。OpenSSH 在特定组合下将这两个 * 误判为密码验证成功,导致攻击者输入 257~1024 字节的任意密码即可绕过认证。该逻辑可追溯至 2016 年,隐藏约 10 年,说明多组件交互中的边界条件容易被长期忽视。
修复与缓解:升级优先,关闭密码登录可临时降低风险
OpenSSH 已发布 10.6p2 修复该问题,Alpine Linux 也为多个版本分支提供补丁,包括部分已结束常规支持的旧版本。Alpine 用户可执行 apk update、apk upgrade 并重启 sshd。若暂时无法更新,应确认 SSH 密钥登录正常后,在服务端配置中设置 PasswordAuthentication no 关闭密码验证。截至 11 月 6 日尚无确认的公开利用案例,但漏洞细节已公开,暴露在公网的 SSH 服务应尽快处理。
Q&A
OpenSSH 最近爆出的 CVE-2026-123158 漏洞具体是什么?
这是一个隐藏约10年的高危漏洞,攻击者无需密码或私钥,只需输入257~1024字节的超长密码,就能绕过认证登录系统,甚至获取root权限。漏洞源于OpenSSH与musl libc的crypt()函数交互错误,将shadow中的'*'误判为验证成功。
哪些系统会受到这个 SSH 漏洞的影响?
主要影响使用musl libc的系统(如Alpine Linux、OpenWrt、嵌入式Linux),且需同时满足:OpenSSH未使用PAM、开启密码登录、存在密码字段为'*'的账户、至少有一个本地账户使用有效密码哈希。Ubuntu、Debian等glibc系统不受影响。
为什么输入超长密码就能绕过 SSH 登录验证?
Linux的/etc/shadow用'*'表示账户无有效密码哈希,而musl libc的crypt()遇到超过256字节的密码时也返回'*'。OpenSSH在特定情况下将这两个'*'误判为密码验证成功,导致攻击者输入257~1024字节的任意密码即可通过认证。
如何修复或缓解这个 OpenSSH 漏洞?
OpenSSH已发布10.6p2修复,Alpine Linux也为多个版本提供补丁。Alpine用户可执行:apk update、apk upgrade、rc-service sshd restart。若无法立即更新,可关闭密码登录(PasswordAuthentication no),改用密钥认证。
目前这个漏洞有被实际利用吗?
截至11月6日,尚未发现经过确认的公开利用案例。但漏洞技术细节已公开,满足攻击条件的服务器应尽快修复,尤其是直接暴露在公网的SSH服务。
Alpine Linux 上这个漏洞有什么特殊风险?
Alpine Linux默认使用musl libc且OpenSSH服务端通常不使用PAM,因此容易满足漏洞条件。此外,部分Alpine官方云镜像的默认账户具有免密码执行doas的权限,攻击者一旦登录可能进一步获取root权限。