Newshot

OpenSSH 曝出存在十年的漏洞,可绕过密码认证登录

AI summary

新披露的 OpenSSH 与 musl 相关漏洞被命名为“*sshole”,已潜伏在代码中长达十年。攻击者只需输入超过 256 字节的超长密码,就能登录部分 Alpine Linux 及其他基于 musl、且配置为禁止密码认证的账户。

Translation(model translation, not the source's own text)

New OpenSSH Vulnerability

这是个严重的漏洞,而且已经在代码中存在了十年:

一个新披露的、涉及 OpenSSH 与 musl 的漏洞,被戏称为“*sshole”,它允许攻击者仅通过输入一个超长密码,就能登录到某些 Alpine Linux 及其他基于 musl、且配置为禁止密码认证的 Linux 账户。

“超长”指的是超过 256 字节。详情。

Slashdot 讨论帖。还有另一篇新闻报道。

标签:Linux、密码、SSH、漏洞

发布于 2026 年 11 月 10 日上午 7:02 • 13 条评论

评论

Clive Robinson • 2026 年 11 月 10 日上午 11:22

这个漏洞被命名为“*sshole”并不应被视为“粗鲁”。

“sshole”实际上是“SSH hole”的缩写。开头的“”是让该漏洞得以生效的一部分。它源自 nix 密码文件,在其中“*”被放在密码字段中,用来表示某个账户不允许通过 login 程序登录。

开头使用“*”的原因是,它在密码字段中不是有效字符,因此可以被用作“带内信令”。

你们中有些人可能年纪足够大,还记得关于“C 字符串还是 Pascal 字符串”哪个更好的争论。

C 字符串使用带内信令,字符串可以是任意长度,但它总是以 ASCII NUL 字符结尾(自 1962 年起,该字符在基于更早的 Baudot 和 ITU 2 的“一次性纸带”的“超级加密”设备中有重要用途)。

Pascal 字符串使用带外信令,简单说就是首字节用于存储字符串的长度。

两者各有优缺点。一个优点是字符串运算更快,字符串的第一个字符不在位置零,而是在某个位置,这对很多人来说更容易理解,更重要的是所有字符都有效。缺点是字符串长度必须为 255 个字符或更少。起初这似乎不算什么大缺点,但深入研究会很快发现,使用无限长度字符串的代码更容易做得更通用,速度更快,占用的程序“代码”存储/内存更少,并且便于使用机器码技巧……

当时的另一个问题是函数的“返回值”。最初它是一个类型 int,大小等于机器数据字。由于原因太长不便细说,这后来被证明是个坏主意……

于是在 *nix 下“带内信令”成为常态,用一个整数保存返回/错误码。实际数据通常通过调用代码传入函数的指针所指向的内存数组返回。

从安全角度看,这是一种糟糕的做法,尽管它可能相当高效。

Celos • 2026 年 11 月 10 日下午 12:52

而这正是我们需要冗余、有弹性的安全机制的原因。在本例中,本应有一个独立于 C 库的长度限制,并强制执行正确行为。思维方式需要是:如果至少没有两个独立机制来强制保障每一项安全属性,那么它很可能应被视为已损坏。而且,显然,这必须成为任何可从互联网访问的东西的绝对最低标准。

freedom • 2026 年 11 月 10 日下午 2:39

配置为用 阻止密码登录的 ssh 账户。musl C 库的 crypt() 函数在密码哈希失败时返回 ,攻击者可以提交超长密码,导致 OpenSSH 将返回的 与账户中存储的 进行比较,从而成功登录。

配置为用 * 阻止密码登录的 ssh 账户。

musl C 库的 crypt() 函数在密码哈希失败时返回 *

攻击者可以提交超长密码,导致 OpenSSH 将返回的 与账户中存储的 进行比较,从而成功登录。

哈哈。“计算机安全”这个领域根本不严肃……

anonymouse random • 2026 年 11 月 10 日下午 3:36

musl C 库的 crypt() 函数在密码哈希失败时返回 *

文章标题:新的 OpenSSH 漏洞

正文: 最初并非如此,但开发者改变了 crypt() 函数的约定(这对库函数来说可是个大忌),这才使得漏洞利用成为可能:

“crypt() 函数用于生成密码哈希,以便与存储的值进行比较;如果无法计算哈希,它可以返回 NULL。未能检查该结果的应用程序可能会崩溃。而 Musl libc 的开发者却选择在某些失败情况下返回单个字符,他们选的是星号。”(摘自 The Register ;搜索“musl”。链接已省略,因为自动审核不喜欢它。有人能修一下自动审核吗?)

lurker • 2026年11月10日 下午3:42

我隐约记得上世纪80年代的某个时候,我在某种 nix 系统上获得了一个 shell 账户,并被告知我的密码最大长度是55(还是56?)个字符。所以显然那种 nix 系统在40年前就已经把这个问题搞清楚了。人们从不吸取历史教训,永远在重蹈覆辙……

当没有人负责时,就没有监督,那些点或者 * 号,就不会被连起来。

Blinky • 2026年11月10日 下午3:47

我认为这很可能是个“双关语”。

Uh, Mike • 2026年11月10日 下午5:50

SSH 已经变得太复杂了。把那些遗留的破烂砍掉吧。缩小攻击面。

anonymouse random • 2026年11月10日 下午6:54

SSH 已经变得太复杂了。把那些遗留的破烂砍掉吧。缩小攻击面。 <

SSH 是被极其广泛使用的遗留代码。我相信自大约2006年以来它就没怎么变过。

这个 bug 源于少数几个 SSH 实现所使用的一个库的约定变更。不用说,库的发布者不应该以任何破坏向后兼容性的方式更改其库的约定。

Smooth Operator • 2026年11月10日 下午11:00

@Scott • 2026年11月10日 下午1:24,

如果他哪怕对这些圈子的文化有一丁点了解,他就会知道黑客社区文化会优先使用这类术语,无论何时何地,只要有可能就用,而且这方面的例子在到处都多得是。你只要 google 一下“deep throat”或“back orifice”(这还只是众多例子中的几个)就知道了。

他当然知道这一点。就看着他跟我们耍聪明吧。他无所不知。他就是那个他妈的 clive robinson——呃,我刚才在想什么???

Anonymous • 2026年11月10日 下午11:08

@Smooth Operator,

正是如此。我记得 Deep Throat https://threats.kaspersky.com/en/threat/Backdoor.Win32.DeepThroat/

Clive Robinson • 2026年11月11日 上午2:08

“是什么光从那边的窗户透进来……”

关于你的说法,

“*sshole 当然就是为了让人联想到指屁股的那个脏话。当然是。你在开玩笑吗?”

针对我的这条评论,

“给这个漏洞起的名字‘*sshole’不应该被视为‘粗鲁’。”

这就是为什么我随后给出了那个你可以板着脸对老板等人说的解释……但我想有些人没听懂。

停下来想一想,这两句话怎么会同时成立,又为什么成立?

你现在明白了吗?

但对其他后续跟帖、显然没听懂也从来没听懂、还让别人看了笑话的人,给个线索,

这是一个至少从英格兰女王伊丽莎白一世时代、以及她对大法官禁演戏剧的审查时期就开始玩的游戏。这也是为什么莎士比亚的作品在原文中有几处有点古怪。

哦,还有为什么在编辑被设立后不久,你依然能在已出版的文字世界里看到它……

不妨听听这个,

https://m.youtube.com/watch?v=bPduoU826ew

它可以追溯到20世纪50年代初,展示了其中的一小部分。

如果你搜索这个网站,你会发现我已经叫某些人

“温习一下你的莎士比亚”

好几年了,但他们就是一直往坑里跳。

再搜索一下“Yellow Card”,你会发现 @Wael 和我多年来一直在这个博客的“星期五鱿鱼”栏目里做着同样的事。

Clive Robinson • 2026年11月11日 上午2:19

但我上面给出的那个歌曲版本差不多只是“适合工作时听”的,因为它被“砍掉”了不少。

如果你不是在工作,那么,

https://m.youtube.com/watch?v=EUthszWDgRo

是的,过去我曾在伦敦西南边缘的一家酒吧里,为了“免费啤酒”唱过它……

cls • November 11, 2026 3:41 PM

心态必须是,如果至少没有两个独立的机制来强制执行每一项安全属性,

呃,不。就是不。

拥有两个时钟的人永远无法确定时间。

最近我们看到了相当多严重缺陷,它们是由这里的一个长度和那里的另一个长度(通常是未检查的用户数据)以及随后的缓冲区下溢或溢出造成的。

或者,由于在不止一个地方保留长度而加剧的 ToC/ToU 间隙所导致的漏洞。

你帖子的第一部分方向是对的:纵深防御、分层、每一层中简单可靠的代码。不要瑞士奶酪式的漏洞。

订阅此条目的评论

Atom Feed
Atom Feed

发表评论 取消回复

博客审核政策

Bruce Schneier 的侧栏照片,由 Joe MacInnis 拍摄。

由 WordPress 提供支持 由 Pressable 托管

The translation is machine-generated and individual terms may be off. Nothing is rewritten or cut; the original is authoritative.

Published by Schneier on Security
This site only summarises and aggregates; copyright stays with the original author. Headlines and summaries follow the source — where they differ, the original wins.
Read the original ↗