您的当前位置: 网站首页 安全漏洞 【安全警报】curl 7.77 漏洞分析 (CVE-CVE-2025-15079)

【安全警报】curl 7.77 漏洞分析 (CVE-CVE-2025-15079)

近日,安全研究人员发现curl存在安全漏洞,该漏洞编号为CVE-2025-15079。漏洞CVSS评分为5.3,属于medium级别。该漏洞属于Improper Validation of Certificate with Host Mismatch类型的安全问题。请相关用户及时更新到最新版本或采取相应的安全措施。

【安全警报】curl 7.77.0 漏洞分析 (CVE-2025-15079)

漏洞概述

近日,libcurl 项目发布了重要安全公告,披露了一个编号为 CVE-2025-15079 的中危漏洞。该漏洞影响 curl 7.77.0 及以下版本,涉及 SSH 传输模块中的证书主机名验证机制存在缺陷,可能导致中间人攻击(MITM)的风险增加。

漏洞等级:Medium(中危)
影响版本:curl <= 7.77.0
漏洞类型:Improper Validation of Certificate with Host Mismatch(证书主机名验证不当)


技术背景

libcurl 是一个被广泛应用于各类软件和系统中的多协议文件传输库,支持 HTTP、HTTPS、FTP、SFTP、SCP 等数十种协议。SSH 协议传输功能(SFTP/SCP)是其重要的企业级特性,广泛应用于自动化脚本、CI/CD 流程、服务器管理等场景。

在使用 SSH 传输时,libcurl 支持通过 known_hosts 文件来验证远程服务器的主机密钥,这是防止中间人攻击的关键安全机制。当用户连接到一个 SSH 服务器时,libcurl 会检查服务器提供的主机密钥是否与 known_hosts 文件中记录的指纹匹配,从而确保连接的真实性和安全性。


漏洞详情

问题描述

在受影响的 curl 版本中,当使用 SCP 或 SFTP 协议进行文件传输,并指定了 known_hosts 文件进行主机验证时,存在一个主机名验证绕过的问题。

具体而言,漏洞允许以下攻击场景:

  1. 正常连接流程:客户端请求连接 example.com 服务器,服务器返回其主机密钥
  2. 攻击者介入:攻击者位于客户端与服务器之间,拦截连接并返回自己的主机密钥
  3. 验证绕过:由于主机名验证逻辑存在缺陷,即使攻击者返回的主机密钥与 known_hosts 中记录的不一致,验证仍可能通过

根本原因

根据漏洞描述,问题出在 Improper Validation of Certificate with Host Mismatch(证书与主机名不匹配时的验证不当)。在 SSH 传输的握手过程中,主机名验证和密钥验证的执行顺序或逻辑判断存在漏洞,导致:

  • 即使服务器返回的证书/密钥与连接目标的主机名不匹配
  • libcurl 仍可能接受该连接并完成文件传输
  • 这使得攻击者可以伪装成目标服务器进行中间人攻击

风险评估

| 风险维度 | 评估结果 | |---------|---------| | 机密性 | 高风险 - 传输数据可被攻击者窃取 | | 完整性 | 高风险 - 传输数据可被篡改 | | 可用性 | 中风险 - 可能导致连接异常或拒绝服务 | | 利用复杂度 | 中等 - 需要处于网络中间位置 | | 影响范围 | 使用 SSH 传输且配置了 known_hosts 的应用 |


影响版本

以下 curl 版本受到影响,建议立即排查并升级:

  • curl 7.77.0
  • curl 7.76.0 - 7.76.x
  • curl 7.75.0 - 7.75.x
  • curl 7.74.0 - 7.74.x
  • 以及所有更早的受影响版本

受影响功能模块

  • SFTP(SSH File Transfer Protocol)
  • SCP(Secure Copy Protocol)

不受影响的功能

  • HTTPS 传输(使用独立的 TLS 验证机制)
  • FTP、HTTP 等其他协议

漏洞验证

运维人员可通过以下方式检查当前使用的 curl 版本:

# 检查 curl 版本
curl --version

# 检查 libcurl 版本
ldd /usr/bin/curl | grep curl

如果版本号小于 7.77.0 且大于等于 7.0.0,建议立即采取应对措施。


修复方案

方案一:升级 curl(推荐)

升级到 curl 7.77.1 或更高版本,该版本已修复主机名验证漏洞。

# Ubuntu/Debian
sudo apt update && sudo apt upgrade curl

# CentOS/RHEL
sudo yum update curl

# macOS (Homebrew)
brew upgrade curl

# 源码编译安装
wget https://curl.se/download/curl-7.88.1.tar.gz
tar -xzf curl-7.88.1.tar.gz
cd curl-7.88.1
./configure --prefix=/usr/local
make && sudo make install

方案二:临时缓解措施

如果无法立即升级,可采取以下临时防护措施:

  1. 避免使用 SSH 传输敏感数据:暂时使用其他安全的文件传输方式
  2. 使用强认证:配合 SSH 公钥认证而非密码认证
  3. 网络层防护:限制可发起 SSH 连接的来源 IP
  4. 启用连接日志监控:密切关注 SSH 传输行为的异常

方案三:应用层加固

# 确保 known_hosts 文件权限正确
chmod 600 ~/.ssh/known_hosts

# 使用 StrictHostKeyChecking 选项
# 在 curl 命令中虽然不直接支持,但可在 ssh_config 中配置
echo "StrictHostKeyChecking yes" >> ~/.ssh/config

总结与建议

CVE-2025-15079 是影响 libcurl SSH 传输模块的中危漏洞,核心问题在于证书主机名验证不当,可能导致中间人攻击风险。对于企业级应用和使用了自动化脚本进行 SFTP/SCP 文件传输的系统,建议:

  1. 立即排查当前环境中的 curl 版本
  2. 优先升级到 curl 7.77.1 或更高版本
  3. 对于无法立即升级的系统,评估并实施临时缓解措施
  4. 持续监控安全公告,关注后续可能的相关补丁

安全无小事,建议各团队尽快响应,确保系统安全性不受该漏洞影响。


参考来源:curl 官方安全公告、MITRE CVE 数据库
编写时间:2025年1月

评论 (0)

加载中...