安全 · 比 256 个字符更长的密码,是一把从 1980 年配到 2026 年的钥匙

先补两个号,帖子里没有,读者却最需要:CVE-2026-123158,MITRE 11 月 5 日发;CVSS 3.1 基础分 8.1 HIGH,向量 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H,CWE-394。Alpine 通告发布那一刻还写着 No CVE identifier had…

一把长钥匙穿过四个年份环,才够到门

先补两个号,帖子里没有,读者却最需要:CVE-2026-123158,MITRE 11 月 5 日发;CVSS 3.1 基础分 8.1 HIGH,向量 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H,CWE-394。Alpine 通告发布那一刻还写着 No CVE identifier had been assigned at the time of writing,编号是当天晚些时候才下来的,NVD 状态 Received、自己没给分。受影响的是 Alpine 3.16 到 3.24 加 edge,修复的 point release 是 3.21.10、3.22.8、3.23.8、3.24.4。升级完记得 rc-service sshd restart,光 apk upgrade 不够。

链条本身讲得漂亮,四段代码咬合的比喻我愿意抄下来。只是有几处得往回收。1980 年 Bill Joy 在 /etc/passwd 里引入星号,那是文件里的一个字段值,不算一段代码;帖子 timeline 自己又列了 2022 年这一环,跟「四段」的计数对不上。「四十六年没人踩响的雷」也是修辞。星号标记自 1980 就在,可真正可被利用的组合要等 2016 年 CVE-2016-6210 的时序侧信道修复借盐算哈希才成立,再等 2022 年 Alpine 3.16 把 root 的口令字段改成星号才中招。披露页自己用的是 ten quiet years,从 2016 到 2026,还反复加 as far as anyone knows。

长度单位是字节,算不得字符。有效区间 257 到 1024 bytes:musl 的 sha512crypt 给密码设了 256 字节上限,sshd 自己还有 1024 字节的坎,超长的那一段让 crypt 失败,而 musl 在 2012 年那次改动里把失败返回值定成了星号。CVE 记录里写的是 between 256 and 1024 characters,混着用容易让人以为是 257 个汉字。

「这一扇门开出来,直接是 root」说得急了。默认 PermitRootLogin prohibit-password 挡着直接 root,真实路径是默认用户 alpine 登进去,再靠免密 doas 提权。AWS 与 Azure 官方镜像恰好给这个用户配了免密 doas,这才是运气最坏的地方。触发条件也得四个全齐:musl 系统、不开 PAM、PasswordAuthentication yes、存在一个只挂星号的账号外加至少一个设了真密码的账号好借盐。glibc、开了 PAM、Dropbear、没跑 sshd 的容器,都不在射程里。帖子列的第六个条件「一次错误的登录尝试把比对逻辑唤醒」不在 Alpine 官方四条件里,只见于披露页那句 needs a wrong try first。

信源那行有句话得公开更正:帖子写 1980 到 2026 的时间线「均由披露页时间线给出并经发布注记与通告交叉印证」。原句留着,更正写在这里。Alpine 通告与 OpenSSH 10.6p2 发布注记只包含机理主干,crypt 返回星号、借盐、修复、条件与版本;完全没有 1980、Bill Joy、2012 两个 musl commit、2013 Debian bug 714219、2019 libxcrypt、2024 年 musl 邮件列表、10 月 30 日 pick_salt 那四行、17,600 次尝试、agent swarms、无已知利用。这些统统出自 sshhole.com 一份披露页,以及它引用的原始史料。它们是单源叙述,交叉印证这四个字站不住。同理,帖尾那个检测仓库 oz9un/sshole 没查到;能查到的复现与审计仓库是 leonjza/sshhole-lab、predkambrij/sshhole-repro、schappim/sshole-audit。HN 那个 2296 分也没给 item id,抓取时主帖 50378228 是 2869 分、698 条评论,2296 大约是早期快照。

真正有分量的还是发布注记里那段。10.6p2 写明:最近收到的安全报告里大量来自 AI 模型或 AI 辅助,多数在真实威胁模型下不构成安全问题;团队欢迎这类报告,前提是配上人工甄别、分析和测试用例。紧跟着更重的一句,已经多次出现「AI 工具标记的漏洞随后被另一位研究者独立发现」,这说明不向开源项目报告的对手方 are likely to be able to 找到同样的洞。原文是「很可能」,帖子写成「同样找得到」,把概率说成了事实。于是 OpenSSH 决定暂时改为更频繁地发布,不再攒到下一个计划版本。

一个开源项目公开承认:漏洞被发现的速度,已经超过自己原定的发布节奏。这次是 agent 集群拿 17,600 次登录尝试替全世界先踩了一脚,下次未必有人踩给你看。有句老话在这儿最合适,第一原则是你别骗自己,而自己最容易骗。攻防双方现在共享同一台加速器,谁也别假装节奏还在自己手里。

门已经装回去了。钥匙曾经在别人手里配过一把,这件事值得记久一点。

11 月 5 日,Alpine Linux 发了一条安全通告,OpenSSH 跟着出了 10.6p2。两件事指向同一个洞:在 musl 世界里,一个被标成"永远不许密码登录"的账号,会被一串足够长的密码放进来。长度门槛是 257 个字符。Alpine 官方的 AWS 和 Azure 镜像,默认用户恰好配了免密 doas——这一扇门开出来,直接是 root。

Discoverer 是 Ozgun Kultekin,Wakefield 的安全研究员。他的自述里有句话值得抄下来:i had agent swarms. a lot of them。他把 sshd 用能想到的所有组合编译了一遍——glibc 和 musl、带 PAM 和不带、有 shadow 和没有——然后让 agent 集群对着这些版本打了约 17,600 次不怀好意的登录尝试。四十六年没人踩响的雷,只有 musl 加无 PAM 那个组合回应了他。

链条上的每一环单看都无辜。1980 年 Bill Joy 在 /etc/passwd 里引入星号,本意是给守护进程留个"此路不通"的标记——星号不是任何密码的哈希,所以谁都匹配不上。2012 年 8 月,musl 的第一处改动让 crypt 失败时不再返回 NULL,免得粗心的调用方直接崩溃,改回一个星号当错误值;二十天后第二处改动跟上,sha512crypt 给密码设了 256 字节上限,防止超长密码把 CPU 拖垮。超长密码于是必然"失败",而失败的返回值,恰好是那个星号。还差最后一环:星号账号本来根本不会去算哈希,2016 年的时序侧信道修复(CVE-2016-6210)为了不暴露账号存在与否,让这类账号也借别人的盐把提交上来的密码算一遍。算出来的结果和存着的星号一比——通过。

四段代码,分别写于 1980、2012、2012 和 2016 年,咬合在 2026 年。触发条件清单也不短:musl 系统、不开 PAM、允许密码登录、存在一个只挂着星号的账号、旁边还得有一个设了真密码的账号(好借盐),外加一次错误的登录尝试把比对逻辑唤醒。全新的空机器反而安全。Alpine 3.16 起 root 恰好就是那个星号账号,AWS/Azure 镜像的默认用户又恰好握着免密 doas。运气排布得严丝合缝。

旁证一并给足。2013 年有 Debian 开发者在 bug #714219 里提议让 glibc 学 musl 这个行为——学成了今天就是另一个世界;2019 年 Debian 迁去 libxcrypt,失败返回值用的是"星号零",一个字符之差。2024 年 12 月 musl 邮件列表还在讨论 busybox 的 passwd 在 257 字符处折断,没人提 sshd。十年安静,没有已知利用记录。还有个让人后背发凉的时间点:10 月 30 日 OpenSSH 自己的安全审查刚修掉 pick_salt 附近的一处问题——这个洞离那次修复只隔四行。

真正的转折在发布注记里。10.6p2 的说明写得很清楚:最近收到的安全报告里大量来自 AI 模型或 AI 辅助,多数在真实威胁模型下不构成安全问题,但团队欢迎这类报告——前提是配上人工甄别、分析和测试用例。紧跟着是更重的一段:已经多次出现"AI 工具标记的漏洞随后被另一位研究者独立发现"的情况,这说明不向开源项目报告的对手方同样找得到这些洞。所以 OpenSSH 决定,暂时改为更频繁地发布,不再攒到下一个计划版本。

最后一段才是这件事真正的分量。一个开源项目公开承认:AI 把漏洞的发现速度提到了自己原定发布节奏之上,攻防双方现在共享同一台加速器。这次是 agent 集群打了一万七千六百次尝试替全世界先踩了一脚,下次未必有人踩给你看。自己那台 Alpine 容器,今天就可以把 PasswordAuthentication 关掉——修复版是 10.6p2,检测脚本在 oz9un/sshole。门已经装回去了,钥匙还在别人手里配过一把。


信源与限定:sshhole.com 披露页(Ozgun Kultekin,Wakefield;17,600 次登录测试、agent swarm 自述、四行距离等细节出自该页);OpenSSH 10.6p2 官方发布注记(2026-11-05,musl 无 PAM 关键 workaround 与 AI 报告节奏声明原文);Alpine Linux 2026-11-05 安全通告;musl commit b3c4cc12 与 88bf5a8a、CVE-2016-6210、CVE-2019-5021、Alpine 3.16 aports fbe926af、Debian bug #714219、libxcrypt 星号零,均由披露页时间线给出并经发布注记与通告交叉印证;HN 2296 分为发布当日讨论热度;"无已知利用"为披露页口径,覆盖范围以其声明为准。

#信息安全 #OpenSSH #AI辅助安全 #musl

暂无表态

想参与讨论或点赞?登录后使用完整功能

讨论回复(0)

暂无回复,登录后可参与讨论
合作

智谱 GLM-5 已上线

在智谱开放平台 BigModel.cn 打造 AI 应用。新一代旗舰模型 GLM-5 在推理、代码、智能体综合能力达到开源模型 SOTA。

领取 2000万 Tokens