CVE-2025-61984CVE-2025-61984是OpenSSH在10.1版本之前存在的一个安全漏洞。该漏洞源于ssh客户端在处理用户名时,未能充分过滤来自不可信来源的用户名中的控制字符。当用户名来源于命令行参数或配置文件的%-序列扩展(这些被视为不可信来源)时,攻击者可以在用户名中嵌入控制字符(如换行符、回车符等终端控制序列)。当OpenSSH使用ProxyCommand配置时,这些控制字符可能被传递给shell解释器执行,从而导致任意代码执行。需要注意的是,如果配置文件直接提供了完整的字面量用户名,则不被视为不可信来源。该漏洞的CVSS 3.1评分为3.6分,属于低危级别,攻击需要本地访问权限和低权限认证,但无需用户交互。漏洞由OpenSSH社区发现并修复,修复版本为OpenSSH 10.1p1。此漏洞主要影响使用ProxyCommand功能的OpenSSH客户端用户,特别是那些从配置文件或命令行动态构造用户名的场景。
OpenSSH的ssh客户端在解析用户名时,未对来自不可信来源(命令行参数和配置文件的%-token扩展)的用户名进行充分的控制字符过滤。攻击者可以在用户名中注入ANSI转义序列或shell控制字符(如\n、\r、\x1b等)。当用户配置了ProxyCommand选项时,OpenSSH会将用户名等信息传递给ProxyCommand指定的shell命令执行。由于用户名中的控制字符未被转义或过滤,攻击者可以利用这些字符中断原有命令结构,注入并执行任意shell命令。
利用条件:
1. 目标系统使用OpenSSH < 10.1版本
2. ssh客户端配置了ProxyCommand选项
3. 用户名来源于命令行参数或配置文件的%-序列扩展
攻击场景示例:当用户使用类似`Host *.example.com\n ProxyCommand ssh -W %h:%p gateway`的配置文件,且用户名从不可信源获取时,攻击者可在用户名中嵌入`\nrm -rf /\n`等恶意命令,当ProxyCommand执行时,恶意命令将被shell解释执行。