CVE-2026-123158
- 受影响产品
- OpenSSH sshd (Linux with musl, without PAM)
- 受影响版本
- 10.6p2 之前的 OpenSSH,运行在使用 musl libc 且未启用 PAM 的 Linux 上,例如 Alpine Linux;使用 glibc 或 PAM 的系统不受影响
- 修复版本
- OpenSSH 10.6p2;Alpine 软件包如 10.3_p1-r2(3.24)、10.2_p1-r1(3.23)、10.0_p1-r11(3.22)和 9.9_p2-r1(3.21)
- 严重程度
- CVSS 3.1 评分 8.1,评分方:MITRE (CNA)
- 利用情况
- 已观察到攻击(包括针对诱饵系统的攻击),尚无真实系统被入侵的确认
- CVE 发布日期
漏洞的作用
Alpine 和其他一些小型 Linux 发行版使用 musl一个精简的 C 库,为程序提供基本函数;大多数大型发行版使用的是 glibc,并在编译 OpenSSH 时不启用 PAMLinux 中负责登录的框架;启用后,sshd 会把密码检查交给单独的模块。在这种配置下,sshd 自己检查密码:它对用户输入的内容计算哈希,再与账号保存的哈希比较。
没有密码的账号,例如新版 Alpine 镜像中的 root,或只用 SSH 密钥登录的用户,在该字段中只保存一个 *。根据安全公司 Ostorlab 的技术分析,musl 遇到超过 256 字节的密码会放弃计算,并返回文本 * 作为错误信号。sshd 随后把这个 * 与保存的 * 比较,发现相同,于是放行。CVE 记录对同一问题的描述更简短,说是错误判断了“某个字符串是否应被视为密码哈希”。
OpenSSH 表示,它认为根本原因“在 OpenSSH 之外”,但可以在 sshd 中堵住这一绕过。修复让 sshd 拒绝少于四个字符的已保存哈希,因此单独的 * 再也无法匹配。
哪些系统受影响
Alpine 的公告列出了必须同时满足的四个条件:
- sshd 未使用 PAM:即
openssh-server软件包,或设置了UsePAM no的openssh-server-pam。 PasswordAuthentication为yes,这是 OpenSSH 的默认值。- 机器上有密码字段为
*的账号。在 Alpine 上包括root(大约从 3.16 起的基础镜像)、只用密钥登录的用户、来自 sssd 或 winbind 等目录服务的用户,以及 tiny-cloud 镜像中的alpine用户。 - 至少有一个本地账号拥有
$5$或$6$类型的真实密码哈希。
直接以 root 登录还需要 PermitRootLogin yes,但 Alpine 提醒,doas 可能提供通往 root 的另一条路径。已锁定的账号(密码字段为 !)不受影响,不运行 sshd 的 Docker 容器也不受影响。
严重程度
CVE 记录由作为 CNACVE 编号机构,有权分配 CVE 编号并撰写官方描述的组织 的 MITRE 撰写,CVSS 3.1 评分为 8.1(高),向量为 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H。OpenSSH 将其定为严重问题。Alpine 的说法更直接:只要能连到 SSH 端口,攻击者只需一次连接和一个超长密码,在条件满足时“每次都能成功”。
目前的攻击情况
版本发布后不久,GitHub 上就出现了演示代码,CISA 在 CVE 记录中的评估也标注为存在公开的概念验证。截至 11 月 8 日,该漏洞尚未列入 CISA 的已遭利用漏洞目录。
两家在互联网上部署传感器的公司公布了观察结果。GreyNoise 在 11 月 5 日 18:34(UTC)标记了第一次尝试,并表示从 11 月 7 日起确认其故意设置为易受攻击的诱饵被成功利用,记录到来自四个地址的 14 次登录后操作。Previdian 截至 11 月 8 日统计到来自 8 个国家、12 个地址的 19 次尝试,但指出其数据无法说明是否有尝试成功。两家公司都没有报告真实机构受害。
OpenSSH 开发者 Damien Miller 写道,团队在发布前一天才得知这个问题,之所以动作这么快,是因为如今 AI 智能体会在“几小时内”重新发现已公开的漏洞。
现在该怎么做
- 在 Alpine 上运行
apk upgrade -U -a,然后运行rc-service sshd restart。Alpine 特别强调,仅升级并不会替换已经在运行的 sshd。3.21.10、3.22.8、3.23.8 和 3.24.4 版本已包含修复。 - 在其他使用 musl 且未启用 PAM 的 Linux 系统上,升级到 OpenSSH 10.6p2 或发行版提供的修复软件包。
- 如果暂时无法升级,请设置
PasswordAuthentication no。修改前先确认 SSH 密钥登录可用,修改过程中保持一个会话不断开,并用sshd -T | grep -i passwordauthentication确认结果。我们的改用 SSH 密钥登录的分步指南介绍了如何在不把自己锁在门外的情况下完成这一步。 - 检查入侵迹象。Alpine 建议在
/var/log/messages中搜索没有密码的账号(如root、alpine或只用密钥的用户)出现的 “Accepted password for” 记录,并检查doas的使用情况、新建用户以及authorized_keys文件。如果无法排除有人登录过,请把这台机器当作已被攻破。 - 如果你构建的容器镜像中运行 sshd,请基于更新后的 Alpine 基础镜像重新构建,并重新创建容器。
这是本周第二个登录绕过漏洞:在 SonicWall 防火墙上,一个 VPN 漏洞让攻击者可以绕过 SAML 和多因素认证。
信息来源
本文核对过的一手来源: