【安全警报】curl 7.77.0 漏洞分析 (CVE-2026-6429)
漏洞概述
近日,curl 官方安全团队披露了一个存在于 libcurl 7.77.0 及之前版本中的信息泄露漏洞(CVE-2026-6429),该漏洞被评定为 Medium(中危) 级别,CVSS 评分约为 5.3-6.5 分。漏洞类型为 Insertion of Sensitive Information Into Sent Data(敏感信息注入传输数据),主要影响在使用 .netrc 文件存储认证凭据并同时启用 HTTP 重定向跟随功能的场景。
此漏洞可能导致用户凭据在特定网络请求中被意外泄露给第三方服务器,对使用 curl 进行自动化脚本开发或服务端请求的用户构成潜在安全风险。
漏洞详情
| 项目 | 描述 | |------|------| | CVE ID | CVE-2026-6429 | | 漏洞类型 | Insertion of Sensitive Information Into Sent Data | | 严重程度 | Medium(中危) | | 影响版本 | curl <= 7.77.0 | | 修复版本 | curl 7.78.0 及之后版本 | | 组件 | libcurl | | 关联功能 | .netrc 文件解析 + HTTP 重定向跟随 |
技术背景
.netrc 文件是 Unix/Linux 系统中用于存储 FTP 或 HTTP 认证凭据的配置文件,通常位于用户主目录下。该文件允许用户预先配置常用服务的用户名和密码,避免在每次请求时手动输入认证信息。
HTTP 重定向(HTTP Redirect)是 Web 服务中常见的机制,当用户请求的资源位于其他位置时,服务器返回 302/301 等状态码,引导客户端向新的 URL 发起请求。libcurl 的 CURLOPT_FOLLOWLOCATION 选项可以自动跟随这些重定向。
漏洞原理分析
当 libcurl 被配置为同时满足以下两个条件时,漏洞会被触发:
- 启用
.netrc文件凭据读取(通过CURLOPT_NETRC选项) - 启用 HTTP 重定向跟随(通过
CURLOPT_FOLLOWLOCATION选项)
在正常流程中,libcurl 仅会将 .netrc 中的凭据发送给目标主机的认证端点。然而,由于重定向处理逻辑存在缺陷,当服务器返回重定向响应时,libcurl 可能将存储在内存中的 .netrc 凭据附加到新的重定向目标 URL 中,作为 URL 参数或 HTTP 头信息发送出去。
攻击场景示例:
┌─────────────────────────────────────────────────────────────────┐
│ 用户请求: https://legitimate-site.com/api/secure │
│ .netrc 配置: legitimate-site.com 的凭据 (user/pass) │
│ │
│ 服务器返回: 302 重定向到 https://third-party.com/tracking │
│ │
│ ⚠️ 漏洞触发: 凭据可能被发送到 third-party.com │
│ 请求变为: https://third-party.com/tracking?user=xxx&pass=xxx │
└─────────────────────────────────────────────────────────────────┘
漏洞代码位置
根据官方披露,问题代码位于 libcurl 的 url.c 和 http.c 模块中,涉及重定向响应处理与凭据应用的交叉逻辑。当重定向目标与原始请求主机不一致时,系统未能正确隔离认证上下文。
影响范围
受影响版本
- curl <= 7.77.0(所有子版本)
- 包含 libcurl 的所有应用程序(使用 libcurl 的第三方软件)
潜在影响对象
- 自动化脚本:使用 curl 或 libcurl 进行 API 调用的自动化任务
- 服务端应用:后端服务使用 libcurl 进行 HTTP 请求
- CI/CD 流水线:在构建脚本中使用 curl 进行资源下载
- 桌面应用:集成 libcurl 的客户端软件
漏洞利用条件
攻击者利用此漏洞需要满足以下条件:
- 目标系统使用 curl/libcurl 且版本 <= 7.77.0
- 目标应用配置了
.netrc文件存储凭据 - 目标应用启用了重定向跟随功能
- 存在可控的重定向响应(中间人攻击或恶意服务器)
在实际攻击场景中,攻击者可能通过 DNS 劫持、中间人攻击或入侵可控制重定向响应的 Web 服务器来触发此漏洞。
防护建议
紧急应对措施
- 立即升级:将 curl/libcurl 升级至 7.78.0 或更高版本
- 临时规避:如无法立即升级,可采用以下临时方案:
- 禁用
.netrc文件功能,改用环境变量或命令行参数传递凭据 - 禁用 HTTP 重定向跟随功能(
CURLOPT_FOLLOWLOCATION = 0) - 确保
.netrc文件权限为 600(仅所有者可读写)
- 禁用
长期安全建设
- 启用 TLS 验证:确保所有 HTTP 请求使用 HTTPS 并验证服务器证书
- 最小化凭据存储:避免在
.netrc中存储敏感凭据 - 网络隔离:限制可发起外部 HTTP 请求的进程权限
- 日志监控:审计网络请求日志,检测异常凭据传输行为
升级命令参考
# Debian/Ubuntu
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.78.0.tar.gz
tar -xzf curl-7.78.0.tar.gz
cd curl-7.78.0
./configure --prefix=/usr/local
make && sudo make install
结论
CVE-2026-6429 漏洞是 curl/libcurl 在处理 .netrc 凭据与 HTTP 重定向交叉场景时的安全缺陷,可能导致用户认证凭据被泄露至非预期服务器。尽管该漏洞被评为中危,但在实际攻击中具有较高利用价值,建议所有使用受影响版本的用户尽快完成升级。
如需获取更多技术细节或协助,请联系安全团队进行评估和修复。
参考链接:
- curl 官方安全公告:https://curl.se/docs/security.html
- CVE 详情:https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2026-6429
评论 (0)