跳转到内容

OpenSSH 10.6 修复十个漏洞:在 Debian 更新之前,Root 服务器运维者该怎么做

更新与新闻  ·   ·   ·  5 分钟 阅读时间

简要说明
  • OpenSSH 10.6 于 2026 年 10 月 6 日发布,修复了十一个与安全相关的缺陷。Debian Security Tracker 为此列出了十个 CVE 编号,从 CVE-2026-106552 到 CVE-2026-106589。
  • 对于 Debian 12 和 Debian 13,这十个目前全部标记为“vulnerable”,那里还没有修复后的软件包。到目前为止只有 Debian unstable 已修复。
  • 这十条描述中没有一条提到登录前的远程代码执行。在更新之前,sshd_config 中的三项设置可以釜底抽薪,让服务器端的漏洞失去成立的前提。

在几乎每台 Linux 服务器上,SSH 都是唯一的入口。当 OpenSSH 项目发布了一个包含整批安全修复的版本,而你所用的发行版还没有对应的软件包时,就会出现一个很实际的问题:哪些事你今天就能做,哪些必须等?

问题是什么

OpenSSH 10.6 的发行说明在“Security”下列出了十一项。项目方写道,最近收到了非常多的缺陷报告,其中许多是借助 AI 工具发现的。由于同样的缺陷往往很快又被独立地发现第二次,团队打算暂时更频繁地发布较小的版本,而不是把修复攒到下一个大版本。对运维者来说,这意味着:短期内还会有更多安全版本。

软件包的状态我们于 2026 年 10 月 7 日在 Debian Security Tracker 上查看过。那里登记了十个 CVE,对于 bookworm(Debian 12)和 trixie(Debian 13),全部标记为“vulnerable”。

组件缺陷影响对象
sshd失败的 GSSAPI 尝试所产生的凭据会被保留,并在另一次成功登录之后可被使用(CVE-2026-106553、CVE-2026-106555)设置了 GSSAPIAuthentication yes 的服务器,通常即使用 Kerberos 的服务器
sshd 和 ssh共用压缩造成的旁路:如果有人能在一个会话中注入自己的数据,就可以通过加密数据包的长度,猜出同一会话中另一个通道里的机密(CVE-2026-106582)启用了压缩、且混合传输可信数据与外来数据的连接
sshdauthorized_keys 中的关键字 restrict 对隧道转发不起作用(CVE-2026-106586)PermitTunnel 不为 no 的服务器
sshd在 Match 块中,对 AuthorizedPrincipalsFile 等部分选项,值“none”被当作文件名读取(CVE-2026-106587)含有此类 Match 规则的服务器
sshd 和 ssh压缩后的数据包没有被限制在最大数据包大小之内(CVE-2026-106585)使用压缩的连接
sftp恶意服务器在递归复制时可以把文件写到目标文件夹之外(CVE-2026-106552)你作为客户端,从陌生服务器下载时
ssh命令行用户名中的 $ 和 \ 可能经由 ProxyCommand 或 Match exec 进入 shell(CVE-2026-106583)把来自外部来源的用户名传给 ssh 的脚本
ssh-keygen夏令时换算错误,证书最多会提前或推迟一小时过期(CVE-2026-106584)签发 SSH 证书的人

第十个 CVE(CVE-2026-106589)涉及 QNX 6 之类的平台,在这些平台上会话进程会继续以 root 权限运行。对 Linux 服务器来说,它无关紧要。

我们检查了什么

关键在于,这些前提条件在一台正常配置的服务器上是否根本就满足。为此,我们查阅了手册页中的默认值,并在一台未经改动、使用 OpenSSH 9.6 的 Ubuntu 24.04 上读取了这些设置:

  • 服务器端的 GSSAPIAuthentication 默认是 no。如果你不使用 Kerberos,这两个 GSSAPI 缺陷就与你无关。
  • PermitTunnel 默认是 no。只有当你有意允许了隧道,restrict 缺陷才会生效。
  • Compression 在服务器端默认是 yes,在客户端是 no。也就是说,只有客户端提出请求时才会压缩,例如使用 ssh -C。但一旦压缩,这个旁路原则上就成立。

结果是:对于使用默认设置的服务器,主要剩下压缩和客户端一侧的缺陷。这两者都可以在没有新软件包的情况下缓解。

重要:这一评估适用于默认值。如果你修改过 sshd_config,或者使用了会修改它的模板,那么唯一重要的是 sshd -T 在你的服务器上输出什么。

如何检查你的服务器

  1. 确认版本。
    ssh -V
    apt policy openssh-server
    低于 10.6 的版本都受影响,除非你的发行版已把修复向后移植。对 Debian 而言,Security Tracker 会显示从哪个软件包版本起是这种情况。
  2. 读取实际生效的设置。
    sudo sshd -T | grep -Ei '^(gssapiauthentication|compression|permittunnel) '
  3. 在更新之前加固。 在 /etc/ssh/sshd_config 中,或在 /etc/ssh/sshd_config.d/ 下的单独文件中添加:
    Compression no
    GSSAPIAuthentication no
    PermitTunnel no
    只有在你确实使用 Kerberos 或 SSH 隧道时,才需要省略 GSSAPIAuthentication 和 PermitTunnel。
  4. 测试配置,然后重新加载。
    sudo sshd -t && sudo systemctl reload ssh
    保持当前会话开着,在第二个窗口中重新登录,确认成功后再关闭第一个窗口。
  5. 更新一出来就安装。
    sudo apt update
    sudo apt install --only-upgrade openssh-server openssh-client

如何确认已经生效

重新加载之后,sshd -T 必须显示新的值,并且在第二个窗口中的登录必须成功。软件包更新之后,apt policy openssh-server 会显示已安装的版本。把它与 Security Tracker 中登记为“fixed”的版本进行对比。

实用提示:如今 SSH 的压缩几乎只在非常慢的线路上才有些用处。如果你要传输大量数据,请事先压缩,例如使用 tar czf 或 zstd。OpenSSH 项目也是这样建议的,而且这样做不受这个旁路影响。

那你自己的电脑呢?

其中三个缺陷涉及客户端。在你的操作系统提供更新之前,建议只对你信任的服务器使用 sftp -r 和 scp -r,并且不要在脚本中把来自外部输入的用户名传给 ssh。顺带一提,从 10.6 起,scp -R 会输出一条警告:项目方打算取消这个选项。

除此之外,如何用密钥代替密码并配合 fail2ban 来保护 SSH 访问,请看我们的文章正确保护 SSH 访问。如果你的旧系统上更新失败,从 Debian 12 升级到 Debian 13那篇文章会对你有帮助。

常见问题

既然还没有 Debian 软件包,我是否必须立即行动?
是的,但只能通过配置来做:如果你不使用压缩、GSSAPI 和隧道,就把它们关闭。等 Debian 发布软件包之后,再安装该软件包。
攻击者能否利用这些漏洞,在不登录的情况下在我的服务器上执行代码?
Debian Security Tracker 中这十个 CVE 的描述都没有提到这一点。服务器端的缺陷以 Kerberos、被允许的隧道或已启用的压缩为前提。
设置 Compression no 会让我失去什么吗?
在高速线路上几乎没有损失。传输大量数据时,最好事先压缩,例如使用 tar 或 zstd。
重新加载时,我正在进行的 SSH 会话会被断开吗?
不会。systemctl reload ssh 只影响新的连接。不过在关闭第一个会话之前,仍然要在第二个窗口中测试登录。
Prepaid-Host.com 本身即为服务器、虚拟主机与域名服务商,在此报道的正是自己所处的市场。我们如何处理这一点,见利益披露说明。