OpenSSH 10.6p2 has been released with a workaround for a critical vulnerability
186 points • 7 days ago • Article Link

OpenSSH 已发布 10.6p2 版本,用于修复一个关键安全漏洞。该缺陷主要影响那些使用 musl libc 、且在密码认证环节不使用 PAM(可插拔认证模块)的 Linux 系统。 Alpine Linux 是这类系统配置的典型代表。该漏洞不影响非 Linux 系统、运行 glibc 的 Linux 系统,以及依赖 PAM 来管理密码认证的 Linux 环境。

强烈建议运行受影响配置的系统管理员立即采取行动。推荐的缓解方案是将配置项 PasswordAuthentication 设置为 no,或在系统尚未完成更新前,直接禁用这些特定系统上的 SSH 。尽管开发人员认为该漏洞的根本原因不在 OpenSSH 之内,但他们仍优先发布迅速的修复版本,以尽量降低潜在被利用的风险。

OpenSSH 团队决定在此次发布中跳过传统的较长保密期。其依据是观察到:AI 代理在漏洞披露后越来越能很快"重新发现"问题,往往只需要数小时。出于这种考虑,维护人员现在认为长期保密期是一种高风险做法,更多是帮助攻击者而非保护用户。

从整体来看,这个安全问题主要是针对负责管理 Linux 系统远程访问的服务器管理员的高关注事件。对于不亲自运维服务器、也不使用远程访问工具的普通个人而言,目前没有必要立即担忧或采取行动。该漏洞高度特定于某一套软件组合,虽然对该领域内的用户风险很高,但对一般终端用户并不构成威胁。

237 comments • Comments Link

OpenSSH 在编译时若使用 musl libc,存在一个关键安全漏洞:它没有正确校验身份,从而导致绕过。该漏洞需要特定且非标准的环境配置才能被利用:使用 musl libc 、禁用 PAM 、启用密码验证,并且在 shadow 文件中至少要有一个用户的条目包含 `'*'` 作为占位符。

漏洞的根源在于 musl libc 的 `crypt()` 实现违反 POSIX 标准:失败时它返回一个字符而不是 NULL 。这会误导 OpenSSH,让其把该返回值当成"成功"而非"错误"。

尽管问题本质上出在 musl 库,但 OpenSSH 在尝试缓解计时攻击的过程中又进一步放大了这一缺陷。它在验证阶段向函数传入不同用户的哈希值,无意间让 musl 的错误返回值能够与有效哈希进行比较,从而形成绕过场景。

尽管外界担心该漏洞的严重性,但在很多常见环境中(例如使用 glibc 、 PAM 或 OpenBSD 的场景)本质上并不受影响。像 Dropbear 这样的流行轻量级替代方案也已被证实对这一特定漏洞免疫。

更有效的最终缓解方案是禁用基于密码的身份验证,改用 Public Key Infrastructure 。该做法被普遍视为安全最佳实践,能够显著缩小未经授权访问的攻击面。

WireGuard 也常被推荐作为保护 SSH 访问的更优替代。它在更低的网络层运行,并对未经身份验证的流量进行静默拒绝,从而隐藏服务器存在,降低与 PAM 或传统密码处理等复杂、可配置的身份验证方式相关的风险。

业界仍在努力权衡:一方面是企业对基于密码的 SFTP 访问的传统需求,另一方面是现代要求的"仅限密钥身份验证"的安全要求。这种拉扯往往会让商业环境的安全态势变差,因为客户诉求常常高于内部安全策略。

同时,人们对 Alpine Linux 等特定发行版的可靠性也存在疑虑。批评者指出,过去在处理基础权限配置以及补丁延迟方面出现过问题,反映出部分维护者在基础安全实践上不如更成熟、更严谨的项目。

漏洞之所以能够被快速披露,是因为 AI agents 能在公开报告后的数小时内重新发现漏洞。业内预计,这种变化会重塑行业惯例,可能终结以往为修复准备而设置的长期禁运期。

此次事件凸显了分层软件依赖关系的脆弱性:即便底层库中存在极小的 POSIX 标准偏差,也可能在像 OpenSSH 这样复杂的应用中引发灾难性的安全故障。

社区普遍认为,尽管 musl libc 中的底层错误代表了对标准合规性的重大失误,但依靠成熟的加固与最佳实践,这个漏洞在很大程度上是可以避免的。讨论也反复强调了传统身份验证方法的便利性与受限密钥模型所需安全之间的持续矛盾。最终,这一事件提醒我们:处理身份验证逻辑的复杂依赖关系,尤其需要经过严格测试并遵守既定的 API 契约,才能防止系统性故障。