OpenSSH sshole 密码认证绕过漏洞(CVE-2026-123158)风险通告

· 2026-11-06 14:26 · 7 阅读

云鼎实验室 2026-11-06 14:26 广东

OpenSSH(musl libc 环境)披露 sshole 密码认证绕过漏洞(CVE-2026-123158),远程攻击者可借超长密码绕过认证。

概述

OpenSSH 是一款基于 SSH 协议的连接工具。

腾讯云安全中心监测到,OpenSSH(运行于 musl libc 环境)被披露存在密码认证绕过漏洞,漏洞编号 CVE-2026-123158,代号"sshole"。未经身份验证的远程攻击者可通过向本应禁止密码登录的账户(如 root、仅密钥登录的账户等)提交长度超过 256 个字符的任意密码,成功通过身份验证并获取系统访问权限。为避免业务受影响,建议及时开展安全自查,如在受影响范围请及时更新修复。

漏洞详情

字段

内容

漏洞名称

OpenSSH sshole 密码认证绕过漏洞

漏洞编号

CVE-2026-123158

危害等级

高危

漏洞类型

服务漏洞

影响范围

OpenSSH < 10.6p2

参考链接

https://www.openssh.org/releasenotes.html#10.6p2

在基于 musl libc 的 Linux 系统(如 Alpine、OpenWrt、Buildroot、Yocto 及大量 Docker 镜像)中,由于 musl 的 crypt() 函数在 2012 年的提交(b3c4cc12)中将密码哈希失败时的返回值从 NULL 改为了 "*",而随后加入的 SHA512 加密实现(提交 88bf5a8a)为防御拒绝服务攻击,将密码长度上限设为 256 字节,超过该长度的密码会触发 crypt() 返回 "*"。OpenSSH 在未使用 PAM 且处理密码认证时,若账户在 /etc/shadow 中的密码字段本身为 "*"(表示禁止密码登录),且系统中存在另一个拥有真实密码的账户以借用其 salt,此时攻击者提交长度在 257 至 1024 字节之间的任意密码,crypt() 会因长度超限返回 "*",恰好与 /etc/shadow 中的 "*" 字段匹配,从而绕过身份验证。在 Alpine 官方的 AWS 和 Azure 镜像中,默认的 alpine 用户即为此类账户且拥有免密 doas 权限,攻击者可借此直接获取 root 权限。

攻击者要成功利用该漏洞,必须满足以下所有条件:

  • 目标 OpenSSH 运行在 musl libc 环境(如 Alpine、OpenWrt、Buildroot、Yocto 等);

  • 目标未使用 PAM(如 Alpine 的 openssh-server 默认不使用 PAM);

  • 目标系统中存在一个在 /etc/shadow 中密码字段仅为 "*" 的账户(如仅密钥登录的用户、LDAP 用户、Alpine 的 root 或默认 alpine 用户);

  • 目标系统中同时存在另一个拥有真实密码哈希的账户(用于借用 salt)。

TencentOS、Redhat、CentOS、Debian、Ubuntu、Fedora、AlmaLinux、RockyLinux 等主流发行版不受该漏洞影响。

目前该漏洞的漏洞细节、POC 已公开。

漏洞风险

未经身份验证的远程攻击者利用该漏洞可绕过密码认证,以本应禁止密码登录的账户身份登录系统,在 Alpine 云镜像默认配置下可直接获取 root 权限,导致系统完全失陷等危害。

影响版本

受影响版本:

  • OpenSSH < 10.6p2

安全版本:

  • OpenSSH >= 10.6p2

处置建议

官方修复方案

官方已发布漏洞补丁及修复版本,请评估业务是否受影响后,升级至安全版本:https://www.openssh.org/releasenotes.html#10.6p2

缓解措施

在 SSH 配置中关闭密码登录:在 /etc/ssh/sshd_config.d/00-no-passwords.conf 中添加 PasswordAuthentication no,并重启 sshd 服务:

$ echo "PasswordAuthentication no" > /etc/ssh/sshd_config.d/00-no-passwords.conf
$ rc-service sshd restart

备注:建议您在升级前做好数据备份工作,避免出现意外。

参考链接

-END-

——关注云鼎实验室,获取更多安全情报——

跳转微信打开

本文转载自微信公众号「云鼎实验室」,查看原文。版权归原作者所有,如有侵权请联系删除。