漏洞概述 | |||
漏洞名称 | OpenSSH/musl 密码认证绕过漏洞 | ||
漏洞编号 | QVD-2026-104595 | ||
公开时间 | 2026-11-05 | 影响量级 | 千万级 |
奇安信评级 | 高危 | CVSS 3.1分数 | 9.8 |
威胁类型 | 认证绕过 | 利用可能性 | 高 |
POC状态 | 已公开 | 在野利用状态 | 未发现 |
EXP状态 | 已公开 | 技术细节状态 | 已公开 |
危害描述:攻击者可利用 musl crypt() 失败返回 "*" 的特性,伪造有效密码认证,绕过仅密钥/锁定账户的访问控制,获得该账户的登录会话;若该账户具备免密 sudo/doas 权限或为 root(PermitRootLogin yes),可直接获取 root 权限,造成主机完全失陷。 | |||
01
漏洞详情
>>>>
影响组件
OpenSSH 是 OpenBSD 项目维护的广泛使用的开源 SSH 远程登录与加密传输服务组件,被广泛应用于 Linux、Unix 及嵌入式系统。musl libc 是面向嵌入式与容器场景的轻量级 C 标准库,被 Alpine Linux、OpenWrt、Buildroot、Yocto 及大量 Docker 镜像采用。
>>>>
漏洞描述
近日,奇安信CERT监测到官方修复OpenSSH/musl 密码认证绕过漏洞(QVD-2026-104595),该漏洞源于 musl libc 的 crypt() 函数在失败时返回单字符 "*"(而非 POSIX 规定的NULL),而 OpenSSH 在未启用 PAM 的认证路径中,对密码字段为 "*" 的账户借用其他账户的真实盐值执行 crypt() 校验。当攻击者提交 257~1024 字节的超长密码时,musl 的 crypt() 因 KEY_MAX(256) 长度限制返回 "*",与影子密码字段 "*" 比较相等,strcmp 判定通过,导致攻击者无需任何有效凭据即可通过 SSH 密码认证登录仅允许密钥登录或已锁定密码的账户。成功绕过认证后,若目标账户具备免密 sudo/doas 权限(如 Alpine 云镜像默认 alpine 用户),攻击者可直接提权至 root 实现完全控制。目前该漏洞PoC和技术细节已公开。鉴于该漏洞影响范围较大,建议客户尽快做好自查及防护。
>>>>
利用条件
1. sshd 运行于 musl libc 且未启用 PAM;
2. 开启密码认证(默认开启);
3. 存在 /etc/shadow 密码字段为单个 "*" 的账户;
4. 系统中另有至少一个拥有真实密码哈希的账户。
02
影响范围
>>>>
影响版本
2016 年以来至 10.6p2 之前,运行于 musl libc 且未启用 PAM 的 OpenSSH sshd(Alpine、OpenWrt、Buildroot、Yocto 及 musl Docker 镜像)
>>>>
其他受影响组件
无
03
复现情况
目前,奇安信CERT已成功复现OpenSSH/musl 密码认证绕过漏洞(QVD-2026-104595),截图如下:

04
处置建议
>>>>
安全更新
官方已发布安全补丁,请及时更新至最新版本:
OpenSSH >= 10.6p2
下载地址:
https://www.openssh.org/portable.html
Alpine 等 musl 发行版可执行 apk upgrade openssh 并重启 sshd;源码部署需升级到 10.6p2 后重新编译安装。
临时缓解措施:
1. 关闭密码认证并重启 sshd:在 /etc/ssh/sshd_config.d/00-no-passwords.conf 写入 PasswordAuthentication no(Alpine 执行 rc-service sshd restart);
2. 将 PermitRootLogin 设置为 prohibit-password 或 no;
3. 注意:在未启用 PAM 的 Alpine 等 musl 系统上,不要将 /etc/shadow 中的 "*" 改为 "!",否则会导致合法用户无法使用 SSH 密钥登录;
4. 若已暴露,应检查 sshd 日志中本应无密码的账户是否出现 Accepted password 记录。
05
参考资料
[1]https://www.openssh.org/releasenotes.html#10.6p2
声明:本文来自奇安信 CERT,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。