OpenSSH/musl密码认证绕过漏洞(CVE-2026-123158)通告
内容提要
绿盟科技通告OpenSSH/musl密码认证绕过漏洞(CVE-2026-123158):musl libc的crypt()失败时返回“*”,若目标账户密码字段为“*”且启用SSH密码认证,攻击者可提交超长密码绕过认证登录,若账户有sudo权限还可提权至root。影响7.3p1至10.6p2版本中使用musl且未启用PAM的Linux系统(如Alpine Linux)。建议升级至10.6p2或禁用密码认证。
延伸解读
漏洞触发条件:三个条件缺一不可
该漏洞并非所有OpenSSH用户都受影响。根据通告,攻击需同时满足:目标账户密码字段为“*”、系统使用musl libc且未启用PAM、SSH启用了密码认证。其中密码字段为“*”通常表示账户被锁定或密码不可用,但musl的crypt()失败时也返回“*”,导致超长密码可错误匹配。因此,使用glibc或启用PAM的系统不受此漏洞影响。
实际风险:从登录绕过到root提权
攻击者无需有效凭据即可绕过密码认证登录目标账户。若该账户具有sudo或doas权限,攻击者可进一步获取root权限,风险显著升级。通告给出CVSS评分8.1,且漏洞细节与PoC已公开,意味着利用门槛较低。对于暴露SSH服务的Alpine Linux等系统,应优先排查并修复。
排查与缓解:先确认环境再动手
用户可通过ssh -V查看OpenSSH版本,用ldd /usr/sbin/sshd判断是否链接musl libc,并检查sshd_config中PasswordAuthentication和UsePAM配置。若版本在7.3p1至10.6p2之间、使用musl且未启用PAM、密码认证为yes,则存在风险。临时缓解可禁用密码认证或将PermitRootLogin设为prohibit-password或no,但根本措施仍是升级至10.6p2及以上。
Q&A
CVE-2026-123158 漏洞影响哪些 OpenSSH 版本和系统环境?
影响 OpenSSH 7.3p1 至 10.6p2 之前版本,且系统使用 musl libc 并禁用 PAM 进行密码认证的 Linux 环境,如 Alpine Linux、OpenWrt、Buildroot、Yocto 系统及 Docker 镜像。
攻击者如何利用这个漏洞绕过 SSH 密码认证?
musl libc 的 crypt() 失败时返回“*”,若目标账户密码字段为“*”且启用 SSH 密码认证,攻击者提交超长密码使错误返回值与密码字段匹配,从而绕过认证登录。
如何检测我的系统是否存在该漏洞风险?
检查 OpenSSH 版本(ssh -V)、确认是否使用 musl libc(ldd /usr/sbin/sshd),并检查 SSH 配置中 PasswordAuthentication 是否为 yes 且未启用 PAM。若版本在受影响范围且满足条件,则存在风险。
这个漏洞的严重程度如何?是否已有公开的利用代码?
CVSS 评分为 8.1,属于高危漏洞。目前漏洞细节与 PoC 已公开,绿盟科技天机实验室已成功复现。
如果暂时无法升级 OpenSSH,有哪些临时缓解措施?
在 /etc/ssh/sshd_config 中设置 PasswordAuthentication no 并重启 sshd 以禁用密码认证;同时将 PermitRootLogin 设置为 prohibit-password 或 no。
成功绕过认证后攻击者能进一步做什么?
若被登录账户具备 sudo/doas 权限,攻击者可进一步获取系统 root 权限。