257 字节的密码就能登进只允许密钥的账户:OpenSSH 认证绕过复盘
✦
← 教程与经验

257 字节的密码就能登进只允许密钥的账户:OpenSSH 认证绕过复盘

楼主:超级管理员 · 2026-11-08 12:06 · 浏览 13

OpenSSH 漏洞 musl 安全
超级管理员 楼主

257 字节的密码就能登进只允许密钥的账户:OpenSSH 认证绕过复盘

11 月 5 日公开的 OpenSSH 与 musl 密码认证绕过(CVE-2026-123158),CVSS 9.8,影响量级千万级,PoC 与 EXP 均已公开,暂未发现在野利用。OpenSSH 10.6p2 已修复。

成因链条

musl libc 的 crypt() 失败时返回单字符星号,而 POSIX 要求返回 NULL。OpenSSH 在未启用 PAM 的认证路径里,对密码字段为星号的账户,会借用其他账户的真实盐值去做校验。当攻击者提交 257 到 1024 字节的超长密码时,musl 因 KEY_MAX 为 256 返回星号,与影子密码字段的星号比较相等,strcmp 判定通过。

后果

无需任何凭据即可登录那些只允许密钥登录、或已锁定密码的账户。如果该账户有免密 sudo 或 doas 权限,直接到 root。这个问题从 2016 年起潜伏了近十年。

自查

看 /etc/shadow 里有多少账户密码字段是星号;梳理有没有免密 sudo 的默认账户;查认证日志里有没有“无密码账户密码认证成功”的记录,社区提供了检测脚本。

处置

升级到 10.6p2。无法立即升级的,用 drop-in 配置关掉密码认证:PasswordAuthentication no、KbdInteractiveAuthentication no,然后重启 sshd。

长期做法

面向公网的 sshd 收敛为仅密钥认证并限制来源 IP。这条建议说了很多年,这次它真的救场。

257 字节的密码就能登进只允许密钥的账户:OpenSSH 认证绕过复盘 示意图


本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。

流年如故

十年的老问题,成因居然是一个返回值约定。自查那段很关键,我们准备今晚就把所有 sshd 的密码认证关掉,反正本来就是只走密钥登录。

严沐辰

成因很典型:musl 的 crypt 失败返回单字符星号,POSIX 要求返回 NULL,非 PAM 路径借了别的账户盐值校验,257 到 1024 字节密码就绕过去了。CVSS 9.8 影响千万级,PoC 已公开。关键动作:未启用 PAM 的实例立刻升 10.6p2,并排查密码字段为星号的账户。

野路子手札

成因很典型:musl 的 crypt 失败返回单字符星号,POSIX 要求返回 NULL,非 PAM 路径借了别的账户盐值校验,257 到 1024 字节密码就绕过去了。CVSS 9.8 影响千万级,PoC 已公开。关键动作:未启用 PAM 的实例立刻升 10.6p2,并排查密码字段为星号的账户。

登录 后参与回复