OpenSSH 中的一个高严重性漏洞使未经身份验证的远程攻击者可以通过提交过长的密码绕过某些 Linux 系统上的密码验证。追踪为 CVE-2026-123158,称为 SSHhole,该漏洞的 CVSS 3.1 评分为 8.1,主要影响与 musl libc 链接且在没有 PAM 的情况下运行 sshd 的 Linux 环境。Alpine Linux 是受影响最显著的平台,因为其标准的 openssh-server 包默认使用此配置。
该漏洞是由于 OpenSSH 密码验证与 musl libc 的 crypt() 实现之间的意外交互造成的。当提供过长的密码时,crypt() 可以返回字符串 * 来指示错误。某些未设置常规密码的 Linux 帐户的 /etc/shadow 密码字段中也存储有 *。在易受攻击的条件下,sshd 可能错误地将匹配的值解读为成功的身份验证。
攻击者无需知道目标用户的密码。如果暴露的 SSH 服务满足必要条件,能够访问该服务的攻击者可以使用易受攻击的长度范围内的密码验证某些账户。影响取决于受损账户的权限。访问特权服务账户或能够使用 doas 等特权提升机制的账户可能导致整个系统被破坏。
OpenSSH 在 2026 年 11 月 5 日发布了 Portable OpenSSH 10.6p2 来解决此问题。Alpine Linux 同时为所有支持的分支及多个较旧的分支发布了补丁的 OpenSSH 包。OpenSSH 团队将此次发布描述为针对使用 musl libc 且禁用 PAM 的 Linux 系统的重要安全变通方案。
公共再现环境和概念验证资料已可用。然而,截至 2026 年 11 月 6 日,审核的来源未报告实际攻击中已确认的漏洞利用,并且该漏洞尚未添加到 CISA 的已知漏洞目录中。
组织可以利用 SOC Prime 的 AI 原生检测智能平台加强针对新出现的身份验证绕过漏洞的防御,加速在 SIEM、EDR、XDR 和数据湖环境中的威胁狩猎和检测工程。
安全团队还可以使用 Prime Architect 将漏洞情报转化为狩猎查询和定制到他们可用的 SSH、身份验证、端点和网络遥测的检测逻辑。
通过监控账户的成功基于密码的 SSH 登录(这些账户通常仅使用密钥身份验证),包含异常长密码的异常验证尝试,意外的服务账户远程访问,以及与账户正常行为不一致的后验证活动来检测 CVE-2026-123158。
可能不是每个 CVE 都具备检测内容。检查 SOC Prime 平台以获取当前覆盖范围。如果尚未提供相关检测,请继续检查,因为新的威胁情报和检测内容会不断添加。
CVE-2026-123158 分析
CVE-2026-123158 影响运行在 Linux 上移植性 OpenSSH 10.6p2 之前未经 PAM 的密码验证的 OpenSSH sshd。当其与 musl libc 链接时会发生此漏洞。该 CVE 的 CVSS 3.1 评分为 8.1,其矢量为 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H,反映了无需之前的特权或用户交互即可进行远程利用,但需要特定的系统和账户配置。
根本原因在于 OpenSSH 与 musl libc 提供的密码哈希函数之间的互动。
在关闭 PAM 的系统中,sshd 使用系统的 crypt() 功能进行密码验证。对于典型的账户,/etc/shadow 包含加密的密码哈希值,并将用户提交的密码生成的值与该存储哈希值进行比较。
当提供的密码超过其支持的输入长度时,musl libc 的行为有所不同。对于超过 256 字节的密码,crypt() 返回 * 作为错误值,而不是正常的密码哈希。
问题出在于 * 也常常用于 /etc/shadow 中未配置传统密码的账户。
如果易受攻击的 sshd 为这些账户之一收到超长密码,认证流程可以有效地将 crypt() 返回的 * 与账户影子条目中存储的 * 进行比较。这些值匹配,认证可能错误地成功。
CVE 描述指出,对于受影响的账户配置,介于 256 和 1024 个字符之间的密码都可能导致成功认证。独立再现介绍了超过正常 256 字节边界的密码足以触发易受攻击的条件。
因此,该漏洞并不是影响所有 OpenSSH 部署的通用密码绕过。
必须有几个特定条件同时满足。
首先,服务器必须使用 musl libc。Alpine Linux 是主要的主流例子,虽然其他嵌入式或最小化的 Linux 环境也可能使用 musl。
其次,sshd 必须在没有 PAM 的情况下认证用户。Alpine 的标准 openssh-server 包在没有 PAM 的配置下构建,而当启用 UsePAM yes 时,替代的 openssh-server-pam 配置受到保护。
第三,密码认证必须启用。PasswordAuthentication yes 是相关的配置。配置为仅公钥验证身份的系统 PasswordAuthentication no 不会暴露在已知攻击路径下。
最后,攻击者需要一个密码字段包含 * 的账户。这些可以包括仅密钥用户、没有密码创建的账户、通过目录服务提供的某些身份以及某些云镜像用户。
Alpine 还指出了一个额外条件:至少一个本地账户必须包含 $5$ 或 $6$ 样式的密码哈希,以便易受攻击的验证路径按照描述工作。
root 帐号值得特别注意。Alpine 通常存储 root:*,但 OpenSSH 的默认 PermitRootLogin prohibit-password 阻止了对 root 的直接密码验证。因此,标准的 Alpine 安装不会自动通过此漏洞暴露直接 root 登录。
这项保护不会消除更广泛的风险。如果另一个密码字段中包含 * 的账户可以远程访问,并且通过 doas、sudo、容器能力或其他特权机制拥有管理权限,成功认证仍然可以提供完全系统被破坏的路径。
Alpine 的官方 tiny-cloud 镜像尤其相关。安全研究确定版本中 alpine 账户可以满足易受攻击的条件,并且可以使用 doas 获取提升的权限。这说明防御者应该评估账户权限,而不是假定漏洞提供了无害的用户访问或在每个环境中自动 root 访问。
基于 glibc 的 Linux 发行版如 Debian、Ubuntu 和 RHEL 并不受此特定漏洞影响,因为易受攻击的行为依赖于 musl libc 的密码哈希实现。使用 PAM 进行 SSH 密码验证的系统同样不在文件记录的易受攻击配置中。
容器需要类似的资格。Alpine 被广泛用作容器基础镜像,但普通容器不运行 sshd 不会通过此攻击路径受到漏洞影响。主要顾虑是容器、设备、开发环境或显式安装和暴露 SSH 服务器的旧负载。
CVE-2026-123158 概念验证景观已经迅速发展。公共再现实验室直接由漏洞记录引用,这表明防御者应假定身份验证绕过可以在不访问私人漏洞研究的情况下被重现。即便至今还没有报告已确认的恶意利用,这大幅增加了缓解的紧迫性。
该漏洞由 Wakefield 的 Özgün Kültekin 报告。OpenSSH 于 2026 年 11 月 5 日公开发布了版本 10.6p2 及该安全变通方案。审阅的主要来源未指定研究人员最初发现或私下报告此问题的确切日期。
OpenSSH 修复添加了验证,旨在防止错误值和无效短密码哈希在密码验证过程中被接受。OpenSSH 指出它认为根本原因在于 sshd 外部,但由于该条件可以被通过 SSH 服务器利用,项目在 OpenSSH 本身中实施了防御变通。
Alpine Linux 已经在多个分支中回溯了更正:
| Alpine 分支 | 修正后的 OpenSSH 包 |
| edge | 10.6_p2-r0 |
| 3.24 | 10.3_p1-r2 |
| 3.23 | 10.2_p1-r1 |
| 3.22 | 10.0_p1-r11 |
| 3.21 | 9.9_p2-r1 |
| 3.20 | 9.7_p1-r6 |
| 3.19 | 9.6_p1-r3 |
| 3.18 | 9.3_p2-r4 |
| 3.17 | 9.1_p1-r7 |
| 3.16 | 9.0_p1-r6 |
管理员应依赖发行版的包状态,而不是仅凭 SSH 版本横幅。Linux 发行版经常回溯安全补丁,而不改变在 SSH 握手期间显示的上游 OpenSSH 版本。因此,显示旧版本字符串的服务器可能已经包含供应商修复。
在 CVE-2026-123158 检测方面,防御者应优先考虑 SSH 认证遥测。一个特别强的狩猎信号是成功的密码登录到一个仅希望使用公钥认证的账户或没有可用密码配置的账户。
在 Alpine 系统上,管理员可以查看 /var/log/messages、集中认证日志、SIEM 记录或等效遥测,以寻找涉及意外服务、仅密钥或管理账户的 Accepted password 事件。
防御者应将成功认证与源 IP 地址、登录时间、会话持续时间、登录后执行的命令、权限提升、authorized_keys 变更、账户创建、预定作业以及意外的出站网络连接进行关联。
网络遥测也可以帮助识别暴露的系统。外部可达的 SSH 服务宣传密码或键盘交互身份验证应优先进行补救,尤其是当基础系统是 Alpine 或其他基于 musl 的发行版时。
目前,没有特定于活动的 CVE-2026-123158 IOCs 例如已确认的攻击者 IP 地址、域、恶意软件哈希或指挥和控制基础设施。缺乏静态指标使 SSH 认证和后续会话活动的行为监控尤为重要。
CVE-2026-123158 缓解措施
主要缓解措施是安装 OpenSSH 10.6p2 或 Linux 发行版提供的修正包。Alpine 管理员应使用当前的包存储库更新整个系统,并在随后重启 sshd。仅更新包并不能替换已经在运行的 SSH 守护进程。
运行基于 Alpine 的容器的组织应重建和重新部署任何安装了 openssh-server 的镜像。简单地更新主机操作系统并不能修补嵌入在容器镜像中的易受攻击的 OpenSSH 包。
管理员还应在假定每个 Alpine 主机都易受攻击之前识别暴露情况。关键检查包括:
- 确定主机是否使用 musl libc。
- 验证 sshd 是否在禁用 PAM 的条件下运行。
- 检查密码身份验证是否启用。
- 确认 /etc/shadow 密码字段为 * 的登录能力账户。
- 审查分配给这些账户的权限。
- 确认已安装的 OpenSSH 包与发行版的修正包版本相符。
如果无法立刻打补丁,组织应禁用 SSH 密码验证。
配置:
PasswordAuthentication no
并且,如果适用:
KbdInteractiveAuthentication no
管理员应确保公钥认证有效,然后再应用此配置以避免丧失合法的管理访问。
然后应验证 SSH 配置并重新加载或重启守护进程。之后,外部验证应确认服务器仅提供公钥认证。
限制网络可及性提供了额外的深度防御。SSH 通常应仅可从可信的管理网络、VPN 基础设施、堡垒主机或明确的源 IP 白名单访问,而不是普遍暴露给互联网。
组织还应重新考虑是否在容器中需要 SSH。现代编排环境通常提供替代方案,如 docker exec 或 kubectl exec,消除了不必要的远程可达认证服务。
对于可能暴露的系统,回顾补救前历史成功密码登录。特别注意那些配置没有密码的账户和通常预期完全用 SSH 密钥身份验证的身份。
如果发现意外的成功登录,应将账户视为潜在被入侵。查看可用的 shell 历史,进程执行,权限提升,新建或修改的 authorized_keys 条目,用户和组更改,cron 任务,启动脚本,软件包安装和出站网络连接。
可以访问被入侵账户的凭证和密钥应被视为潜在暴露并根据调查结果进行更换。如果账户拥有管理权限,防御者应将调查范围扩大到整个主机和任何可使用存储在那里的凭证访问的系统。
公共概念验证资料意味着组织不应等待广泛攻击的证据后才应用修复。漏洞利用的前提条件缩小了易受攻击的人群,但满足这些条件的系统可以在无需有效密码的情况下远程访问。
FAQ
CVE-2026-123158 是什么以及它如何工作?
CVE-2026-123158 是一种密码验证绕过漏洞,影响在 Linux 系统上使用 musl libc 且未启用 PAM 的 OpenSSH sshd。当一个过长的密码传递给 musl 的 crypt() 函数时,它可以返回 * 作为错误值。如果目标账户在 /etc/shadow 中也存储有 *,易受攻击的 sshd 配置可能错误地认为这些值匹配并允许身份验证。
CVE-2026-123158 何时被首次发现?
该漏洞由 Wakefield 的 Özgün Kültekin 报告。OpenSSH 于 2026 年 11 月 5 日在 Portable OpenSSH 10.6p2 中发布了安全修复,并且 CVE 在同日公开。当前审查的主要建议并未披露研究者最初私人发现的确切日期。
CVE-2026-123158 对系统有什么影响?
成功利用允许未经身份验证的远程攻击者在不知道合格账户密码的情况下登录到该账户。结果影响取决于该账户的权限。服务或标准账户的损害可能会暴露数据和应用资源,而对具有 doas、sudo 或等效权限的账户的访问可能会导致整个系统受损。
在 2026 年 CVE-2026-123158 仍会影响我吗?
会。在打补丁或禁用密码验证之前,易受攻击的 OpenSSH 安装仍然暴露。风险最高的系统是基于 musl 的 Linux 环境,如运行未启用 PAM 的 sshd 并包含合格无密码账户的 Alpine Linux。已存在公共再现资料,尽管截至 2026 年 11 月 6 日,尚未报告实际利用。
我如何保护自己免受 CVE-2026-123158?
升级到 OpenSSH 10.6p2 或您的发行版的修补包并重启 sshd。如果无法立即完成补丁,请禁用密码和键盘交互身份验证,限制 SSH 曝露到可信网络,并检查成功的密码登录是否存在可疑活动。管理员应继续监控供应商公告以获取 CVE-2026-123158 的详细更新信息,随时掌握漏洞利用情报的变化。