综合 OpenSSH 10.5 修复 ssh-agent 锁定绕过与 sshd restrict 隧道转发遗漏

2026-10-02 21:03:10

OpenSSH 10.5 修复 ssh-agent 锁定绕过与 sshd restrict 隧道转发遗漏

官方发布说明:releasenotes.html
10.5 发布说明:release-10.5

OpenSSH 10.5 于 2026-08-11 发布。

不兼容变化

Portable OpenSSH 现在要求 libcrypto 提供 ECC(椭圆曲线)支持,包括 NISTP521 曲线。ECC 已包含在所有受支持 libcrypto 实现(LibreSSL、OpenSSL、BoringSSL、AWS LC)的默认构建配置里。--without-openssl 构建不受影响。

安全修复

  • ssh-agent(1):修复「agent 锁定」与 session-bind@openssh.com 扩展(用于标识被转发的 agent)之间的交互问题。agent 被锁定时,这些绑定请求遭到拒绝,结果是本应只限本地使用的操作可以被远程执行,包括添加 PKCS#11 token、以及使用带有 destination 限制的密钥。报告者 sn0x-sharma。
  • ssh(1):修复客户端中一个潜在的 realloc use-after-free——当通过本地 session 多路复用 socket 添加远程转发、而向服务器发起远程转发 open 请求仍在挂起时可能触发。报告与修复来自 Brian Mingus(Cognatory)。
  • sshd(8):authorized_keys 的 restrict 关键字现在也正确作用于隧道转发(隧道转发默认在管理上被禁用)。报告者 Erichen(中科院计算所)。

新特性

  • ssh-keygen(1):在重置私钥口令时,可设置或清除 FIDO 私钥上的 touch-required 与 verify-required 标志。
  • ssh(1):调整公钥认证时尝试证书的顺序——优先不需要用户触碰(touch)的 FIDO 密钥,把需要 PIN/生物识别的 FIDO 密钥放到最后,即先试低摩擦认证器。
  • ssh(1):新增 ssh -Z user@host 模式,按将使用的顺序打印公钥认证会尝试的密钥。
  • sshd(8):使用 setproctitle(3) 标识充当认证后监视器的 sshd-session。

Bug 修复要点

  • ssh-keyscan(1):读取服务器 banner 改为非阻塞,避免某台卡住的服务器阻塞多主机 keyscan。
  • sshd(8):修复 sshd_config 的 Match 块内 ChannelTimeout 与 RekeyLimit 不生效的问题。
  • sshd(8):重新允许在 Match 块内使用 PAMServiceName(openssh-10.4 重构时被误禁,bz3987)。
  • sshd(8):修复 10.4 重构中损坏的 GSSAPI 选项名(bz3974)。
  • sshd(8):把「公钥类型是否符合允许算法」的检查移到解析对端发送的密钥之前,减少预认证攻击面(建议者:Anthropic 的 Christopher Paul Rohlf)。

更早版本的关键项

OpenSSH 10.4(2026-07,含若干安全修复)

  • 全部组件新增对复合后量子签名方案的实验性支持,组合 ML-DSA 44 与 Ed25519(draft-miller-sshm-mldsa44-ed25519-composite-sigs)。该方案默认不启用,需加入 HostKeyAlgorithms、PubkeyAcceptedAlgorithms 等;密钥可用 ssh-keygen -t mldsa44-ed25519 生成。
  • ssh(1)、sshd(8):把通配符匹配器换成基于 NFA 的实现,避免旧实现的最坏情况指数级行为。
  • sshd(8):internal-sftp 实现下,长命令行此前在第 9 个参数后被静默截断;若有安全相关选项落在第 10 位及之后,会被丢弃(报告者 Steve Caffrey)。
  • sshd(8):避免 GSSAPIAuthentication 启用时(默认关闭)的预认证 DoS;该问题不受 MaxAuthTries 缓解,但会被 PerSourcePenalties 惩罚(报告者:奥地利国防部 milCERT AT 的 Manfred Kaiser)。
  • sshd(8):修复若干未强制最小认证延迟的情况。

OpenSSH 10.3(2026-04-02)

  • ssh(1)、sshd(8):移除对不支持 rekeying 实现的 bug 兼容;此类实现与 OpenSSH 互通时最终会在传输需要 rekey 时失败。
  • 证书 principals 段为空时现在永不匹配任何 principal(此前在某些情况下被当作通配符,存在风险);修正证书 principals 中通配符的解释,主机证书一致实现、用户证书不支持通配符。
  • ssh(1):-J 与 -oProxyJump="..." 现在校验用户与主机名(命令行传入时),防止 shell 注入。
复制全文 生成海报 OpenSSH 安全 运维 SSH 服务器

推荐文章

程序员茄子在线接单