CVE-2025-15079CVE-2025-15079是libcurl中的一个安全漏洞,存在于SSH传输功能中。当用户使用libcurl进行基于SSH的传输操作(SCP或SFTP)时,如果设置了known_hosts文件来验证远程主机的身份,libcurl存在一个逻辑缺陷:它会错误地接受那些不在用户指定的known_hosts文件中、但存在于libssh全局known_hosts文件中的主机。这意味着即使攻击者伪装成未在用户配置中预定义的主机,如果该主机已被系统全局known_hosts文件识别,libcurl仍会建立连接,从而绕过了用户预期的安全验证机制。攻击者可以利用此漏洞进行中间人攻击(MITM),在SSH会话建立时窃取传输的敏感数据或凭据。该漏洞的CVSS评分为5.3,属于中等严重程度,主要影响使用libcurl进行安全敏感SSH传输的应用程序。
libcurl在处理SSH连接时使用libssh库作为后端。当用户通过CURLOPT_SSH_KNOWNHOSTS选项指定自定义的known_hosts文件时,libcurl应该在建立连接前验证远程主机的公钥是否存在于该文件中。然而,由于libcurl与libssh之间的集成存在问题,libssh在验证主机时会同时检查两个来源:用户指定的known_hosts文件和系统的全局known_hosts文件(通常是/etc/ssh/ssh_known_hosts或~/.ssh/known_hosts)。
攻击者可以利用此漏洞进行以下攻击:首先,攻击者在目标网络中进行中间人攻击,拦截客户端与目标SSH服务器之间的连接。其次,由于libcurl会接受全局known_hosts中已存在的主机,攻击者可以将其伪造的服务器添加到全局known_hosts中,或者利用已存在于全局文件中的恶意主机条目。最后,当受害者使用libcurl连接到目标服务器时,libcurl会错误地信任攻击者的服务器,建立加密通道但数据传输经过攻击者控制的节点。
利用此漏洞的前提条件包括:受害者使用libcurl的SCP/SFTP功能;设置了自定义known_hosts文件;攻击者能够进行网络拦截或控制全局known_hosts文件内容;攻击目标主机存在于全局known_hosts中或攻击者能够添加条目。