OpenSSH 紧急修复已有10年的高危漏洞,可用于登录禁用密码的 Linux 账户
Lawrence Abrams 2026-11-06 15:51 北京

速修复
聚焦源代码安全,网罗国内外最新资讯!
安全研究员 Ozgun Kultekin 发现了一个影响OpenSSH 和 musl 的高危漏洞CVE-2026-123158(CVSS评分8.1)。该漏洞被命名为“*sshole”,允许攻击者仅通过输入一个超长密码,就能登录某些 Alpine Linux 和其它基于 musl 的 Linux 上被配置为阻止密码认证的账户。
该漏洞仅影响在使用 musl C 库的 Linux 发行版上运行的 OpenSSH 服务器,包括 Alpine Linux、OpenWrt、Buildroot 和 Yocto,且需满足特定认证配置。Kultekin 在公布了该漏洞的细节时表示该漏洞自 2016 年起就存在,源于 OpenSSH 在使用 musl C 库的系统上处理密码验证错误的方式。
Linux 账户可通过在 /etc/shadow 文件中将其密码哈希替换为星号(*)来配置为禁止密码登录。由于它并非有效的密码哈希,因此任何密码都不应允许访问这些账户。然而,OpenSSH 在 2016 年引入的一个补丁改变了 OpenSSH 处理没有可用密码哈希的账户的方式。该补丁用于修复用户名枚举漏洞 CVE-2016-6210。
为了防止攻击者通过不同的响应时间识别有效用户名,OpenSSH 被修改为即使账户没有可用密码哈希也会执行密码哈希运算,包括那些配置为用 * 阻止密码登录的账户。问题在于,musl C 库的 crypt() 函数在密码哈希失败时也会返回 *,包括提交的密码超过其 256 字节限制时。这意味着攻击者可以提交一个超长密码,使 OpenSSH 将返回的 * 与账户中存储的 * 进行比较,从而导致登录成功。
需要澄清的是,该漏洞不允许攻击者绕过具有有效密码哈希的账户的密码。Kultekin 表示,利用该漏洞需要满足以下条件:
OpenSSH 运行在基于 musl 的 Linux 系统上,例如 Alpine Linux、OpenWrt、Buildroot 或 Yocto。
PAM 认证被禁用,而Alpine Linux 的 openssh-server 软件包默认就是如此。
SSH 密码认证已启用。
至少有一个账户的密码哈希为星号(*)。
另一个账户具有有效的密码哈希。
该研究员警告称,Alpine Linux 官方的 AWS 和 Azure 云镜像中有一个受影响的默认“alpine”账户,该账户具有无需密码的“doas”权限,可能允许攻击者获得 root 访问权限。使用 glibc 的系统(包括 Debian、Ubuntu 和 Fedora)以及使用 PAM 认证的系统不受此攻击影响。
Kultekin 表示,他使用 AI 代理发现了该漏洞,这些代理针对不同的 OpenSSH 配置、畸形密码哈希和超长密码运行了约 17600 次认证测试。该漏洞已在 OpenSSH 10.6p2 中修复,建议 Alpine Linux 管理员使用 apk upgrade openssh 更新 OpenSSH 软件包。
无法立即安装更新的管理员可以通过在 SSH 服务器配置中设置 PasswordAuthentication no 来关闭 SSH 密码认证,并重启 SSH,从而缓解该问题。Kultekin 表示,管理员还可以通过检查 SSH 认证日志中那些本不应允许密码登录的账户是否出现基于密码的登录,来查找利用迹象。
在 Alpine Linux 上,以下命令可以显示成功的 SSH 密码登录:
grep "Accepted password" /var/log/messages如果日志显示 alpine 账户成功进行了密码登录,管理员可以检查该账户是否已禁用密码认证:
grep '^alpine:' /etc/shadow如果该账户的密码字段包含 *,但 SSH 日志显示成功进行了密码登录,则可能表明该漏洞已被利用。
代码卫士试用地址:https://sast.qianxin.com/
开源卫士试用地址:https://oss.qianxin.com/
原文链接
题图:Pixabay License
本文由奇安信编译,不代表奇安信观点。转载请注明“转自奇安信代码卫士 https://codesafe.qianxin.com”。


奇安信代码卫士 (codesafe)
国内首个专注于软件开发安全的产品线。

觉得不错,就点个 “在看” 或 "赞”
本文转载自微信公众号「代码卫士」,查看原文。版权归原作者所有,如有侵权请联系删除。