CVE-2021-47759MTPutty是一款流行的多标签页Putty管理工具,允许用户集中管理多个SSH连接。该工具在1.0.1.21版本中存在严重的敏感信息泄露漏洞。由于MTPutty在启动SSH连接时将用户密码以明文形式作为命令行参数传递给底层进程,攻击者只需在本地系统上执行简单的PowerShell命令,即可通过进程列表获取所有SSH连接的明文密码。该漏洞的CVSS评分为6.2,属于中等严重程度。虽然攻击向量为本地,但攻击者无需任何认证和用户交互即可成功利用。机密性影响为高,意味着SSH登录凭据等敏感信息存在被完全泄露的风险。对于管理多台服务器的系统管理员而言,如果使用MTPutty存储了生产环境的SSH密码,这些密码将面临被本地恶意用户或恶意软件窃取的风险。
MTPutty在处理SSH连接认证时,采用了将密码作为命令行参数传递给底层PuTTY进程的实现方式。当用户在MTPutty中输入SSH密码并发起连接时,该密码会以明文形式出现在Windows进程列表中。攻击者可以通过以下方式利用此漏洞:
1. 使用PowerShell的Get-Process cmdlet获取所有MTPutty相关进程
2. 使用Get-CimInstance或wmic命令查询进程的完整命令行参数
3. 通过解析命令行字符串提取存储在其中的明文密码
具体来说,MTPutty进程的命令行可能包含类似如下的密码信息:
"-pw" "user_password" 或在某些实现中将密码直接附加到连接参数中。
由于Windows进程列表默认对本地所有用户可见,且无需特殊权限即可查询进程信息,因此任何能够访问系统的本地用户都可以获取这些敏感凭据。攻击者可以利用获取到的SSH密码远程登录目标服务器,进而可能获取服务器完全控制权。
该漏洞的根本原因在于将敏感凭据以明文形式存储在进程参数中,这是安全编码实践中应当避免的做法。