OpenSSH 中发现了一个高严重性漏洞,攻击者可能利用该漏洞在目标系统上执行任意命令。
被跟踪为CVE-2023-51385的漏洞源于在 OpenSSH 中使用 ProxyCommand 或 ProxyJump 功能时在某些情况下对用户提供的输入验证不足。
该漏洞在 CVSS 评级中的严重程度为 9.8 分(满分 10 分),影响 9.6p1 之前的所有 OpenSSH 版本。
该漏洞影响 Linux、macOS、BSD 以及其他操作系统上 OpenSSH 客户端和服务器实现的所有用户。由于 OpenSSH 是使用最广泛的 SSH 实现之一,因此影响相当广泛。
如果成功利用,该缺陷可能会被用来绕过身份验证并获得对运行易受攻击的 OpenSSH 版本的系统的未经授权的远程访问。攻击者可以发起进一步的攻击、升级权限、窃取数据等等。
CVE-2023-51385漏洞
当用户输入带有 shell 元字符的主机名,然后在 ProxyCommand 或 ProxyJump 中使用 %h 或 %u 等令牌进行扩展时,就会产生漏洞。
攻击者可借此在扩展参数中注入恶意代码,从而在目标主机上远程执行代码。同样的漏洞模式也会影响 0.10.6 或 0.9.8 之前的 libssh 版本(被跟踪为 CVE-2023-6004,CVSS 3.9)。
ProxyCommand 和 ProxyJump 是 OpenSSH 的有用功能,可通过中间主机代理连接。然而,如果对提供给这些功能的用户提供的主机名消毒不充分,就会被利用来恶意执行命令。
根据Vin01 Research 的分析,该漏洞的产生是因为 SSH 的 ProxyCommand 功能允许指定自定义命令通过代理进行连接。这些功能的指令可以包含一些标记,如 %h 表示主机名,%u 表示用户名。
如果主机名来自不受信任的来源,内嵌 shell 元字符的伪造主机名可导致任意命令的执行。研究人员在 OSX 上开发了一个简单的概念验证,利用该漏洞功能弹出一个计算器:
git clone https://github.com/vin01/poc-proxycommand-vulnerable –recurse-submodules
这表明该漏洞是真实存在的,远程攻击者在适当的情况下是可以利用的。
建议的缓解措施
为了缓解此漏洞,所有受影响的用户应紧急更新到最新的 OpenSSH 版本 9.6p1,其中包含此缺陷的修复程序。对于 libssh,版本 0.10.6 或 0.9.8 解决了该问题。
建议组织在其基础设施中部署修补版本,以消除利用此漏洞进行攻击的风险。用户还应该谨慎对待来自不受信任来源的主机名。