OpenSSH 10.6 关闭 LZ77 压缩字典,修掉 GSSAPI 跨认证状态泄漏(CVE-2026-106555)
OpenSSH 10.6 已发布,来源为 openssh.org release notes 与安全公告。
一、关闭 LZ77 压缩字典
sshd(8) 与 ssh(1) 禁用了 LZ77 字典编码器(dictionary coder),用于缓解 "Crossing the Streams: SSH Plaintext Recovery via a Common Compression Context in Multiplexed Channels"(Fabian Bäumer、Marcus Brinkmann,arXiv:2609.07709,2026)描述的侧信道泄漏。
这里的攻击模型是选择明文攻击:攻击者借助基于字典的压缩,在另一条信道上与同一个 SSH 会话共享的压缩字典交互,从而在一条信道上恢复另一条信道里的秘密。问题根源在于压缩字典的编码器 search buffer 在同一 SSH 会话的多路复用信道之间共享。
代价是 Compression 选项的压缩效果下降。官方建议把压缩挪到 SSH 协议之上,改用应用层压缩,通常更有效,而且对这类攻击免疫。
二、GSSAPIAuthentication 状态跨认证泄漏(CVE-2026-106555)
sshd(8) 在使用 GSSAPIAuthentication 时,认证状态可能在多次认证尝试之间被错误保留,对应 CWE-669(Incorrect Resource Transfer Between Spheres)与 CWE-488(Exposure of Data Element to Wrong Session)。也就是说,一次失败认证的状态可能残留下来,被后续另一次认证不当利用。
修复做法:
- 只有在认证成功时才存储 GSSAPI 凭据;
- 在认证前重置 GSSAPIAuthentication,避免一次尝试的状态与后续尝试混淆。
CVSS 3.1 评分 2.2(Low),EPSS < 1%,属于信息泄漏类问题。GSSAPIAuthentication 默认关闭,受影响范围是 10.6 之前的版本。
处理方式:升级到 10.6 或更高版本并重启 SSH 服务;不需要 GSSAPI 的,可以在 sshd_config 中关闭 GSSAPIAuthentication。
三、新增 WarnWeakCrypto
sshd(8) 新增 WarnWeakCrypto 选项,此前只有客户端侧有对应能力。该选项默认启用,当客户端使用非后量子安全的密钥协商方案时会记日志。
四、平台相关的权限与转发限制
在不支持文件描述符传递、又需要 root 权限分配 PTY 的平台上,认证后的 sshd-session 进程会保留 root 权限;其他平台上该进程以登录用户权限运行。
当 sshd-session 以高权限运行时,可以执行一些 root 操作,绕过本应作用于用户的控制,例如建立 unix domain socket 连接,或通过 -R 转发绑定低位 TCP 端口。
为此,本版在这些平台上强制禁用 GatewayPorts 与 StreamLocalForwarding。如果社区拿不出替代方案,未来将移除对下列平台的支持:
- QNX 6
- SCO OpenServer 5
- 使用
--disable-fd-passing构建的版本
--disable-fd-passing 配置选项已被移除。
五、其他不兼容与变化
- 配置 dump 模式(
ssh -G/sshd -G)现在以混合大小写输出指令名,例如PubkeyAuthentication,此前是全小写。解析该输出的脚本可能受影响。 - 在启用 seccomp sandbox 的 Linux 上,SECCOMP 或 NO_NEW_PRIVS 启用失败现在视为致命错误。此前只是记录日志并继续运行。缺少这些特性的系统应在编译时禁用 sandbox。
- scp(1) 开始弃用
-R(远程到远程复制)标志。10.6 起该标志仍可用,但会向 stderr 打弃用告警;未来版本会被忽略,转而采用「经本地主机复制」的默认行为。原因是-R需要在远端主机上有凭据,且远端 shell 引用规则与客户端不一致时存在安全风险。
官方 release notes:https://www.openssh.org/releasenotes.html