漏洞概述

漏洞名称

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。