OpenSSH 10.3 修复了 Shell 注入与多个 SSH 安全问题

2026-04-03 09:31:27 1 39

OpenSSH 项目于 2026 年 4 月 2 日发布了 10.3 和 10.3p1 版本,修复了一个 shell 注入漏洞,并引入了多项安全加固变更,管理员在升级前应仔细审阅这些变更。



OpenSSH 项目于 2026 年 4 月 2 日发布了 10.3 和 10.3p1 版本,修复了一个 shell 注入漏洞,并引入了多项安全加固变更,管理员在升级前应仔细审阅这些变更。

最值得关注的安全修复针对的是 -J(ProxyJump)命令行选项中的 shell 注入漏洞。在此版本之前,通过命令行 -J 或 -oProxyJump="..." 传递的用户名和主机名未经验证,如果这些值直接来自攻击者可控的输入,就会产生 shell 注入的风险。

该漏洞由一位化名“rabbit”的研究人员报告。OpenSSH 开发者指出,将这些选项暴露给不可信输入“从一开始就是个糟糕的主意”,而此次修复确保恶意或畸形值会在验证阶段被拒绝。需要特别注意的是,这项验证仅适用于命令行用法,配置文件中的条目仍不会被验证。

此外,sshd 证书处理中一个隐蔽但可能存在风险的行为也得到了修正。此前,如果签发的 SSH 证书包含空的 principals 部分,该证书会被视为通配符,实际上允许任何信任该签发证书颁发机构(CA)并通过 authorized_keys 配置的用户进行认证。

这种行为是有意设计的,但造成了一个危险边缘情况:如果某 CA 意外签发了一个未定义任何 principals 的证书,就可能被利用来进行广泛的未授权访问。

OpenSSH 10.3 改变了这一行为:空的 principals 部分不再匹配任何 principal,从而消除了意外通配符的风险。

同时,证书 principals 中的通配符字符现在对主机证书实施统一支持,但明确不支持用于用户证书,从而带来更清晰、更可预测的访问控制。

OpenSSH 还放弃了对不支持传输层重设密钥(rekeying)的 SSH 实现的向后兼容性。任何无法处理重设密钥的旧版 SSH 客户端或服务器,在与 OpenSSH 互操作时,一旦传输需要重设密钥,最终都会失败。

这一变更加强了协议合规性,并移除了一个长期存在的、可能削弱长生命周期会话安全保证的兼容性方案。

运行 SSH 基础设施的安全团队应优先进行此更新,尤其是在通过程序构造 ProxyJump 选项或从用户输入获取该选项的环境中。

证书 principal 行为的变更也可能需要审查现有 CA 签发的证书,确保没有包含空的 principal 字段。

OpenSSH 10.3 可通过 openssh.com 上列出的官方镜像下载。该项目依然是安全远程访问基础设施的基石,此次发布反映了持续努力修复那些虽细微却影响重大的安全漏洞的努力。

关于作者

socsoc124篇文章139篇回复

评论1次

要评论?请先  登录  或  注册
  • 1楼
    3 小时前

    10.3这几个修的东西挺实在的,说几个实际的: **-J那个shell注入** 影响面要看具体场景。如果目标环境里有脚本或程序拿用户输入拼`ssh -J`命令的,这个洞之前是可以直接RCE的。不过现在只修命令行,配置文件里照样不验证,所以在内网横向或者持久化的时候往`ssh_config`里写点畸形值还是能用的——虽然基本也就是恶心人。 **空principals那个**比较有意思。之前拿CA打横向的时候,如果能摸到CA本身或者它的配置,空principals证书等于白给。现在这个行为变了,拿CA做权限维持的话得重新理一遍手里的证书有没有漏网的。 **重设密钥那个**对攻击来说基本没影响,现在正常SSH实现都支持这功能。 建议就是:手里有守着SSH入口的,10.3能升就升;做红队的遇到拿ProxyJump自动化ssh的环境可以多留意一下那块儿的输入校验逻辑,往往是薄弱点。