IPBUF安全漏洞报告
English
CVE-2026-35192 CVSS 6.5 中危

CVE-2026-35192 Django 会话劫持漏洞

披露日期: 2026-05-05
来源: 6a34fbeb-21d4-45e7-8e0a-62b95bc12c92

漏洞信息

漏洞编号
CVE-2026-35192
漏洞类型
会话劫持
CVSS评分
6.5 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
Django

相关标签

会话劫持Django缓存欺骗Web安全

漏洞概述

该漏洞存在于Django 6.0.5之前及5.2.14之前的版本中。当配置SESSION_SAVE_EVERY_REQUEST为True且会话未被修改时,响应头未根据Cookie进行差异化处理。攻击者可利用此缺陷,在用户访问被缓存的公共页面后,窃取用户会话信息。

技术细节

漏洞核心在于Django处理中间缓存与会话机制时的逻辑错误。当SESSION_SAVE_EVERY_REQUEST开启时,系统期望通过发送Set-Cookie头部来维持会话活跃度。然而,若请求未修改会话状态,Django可能未在响应中包含Vary: Cookie头部。这导致包含身份验证Cookie的响应被CDN或浏览器缓存。当未认证用户(攻击者)请求同一资源时,可能直接获取到包含受害者会话Cookie的缓存页面,从而绕过认证机制实现会话劫持。

攻击链分析

STEP 1
1. 环境配置
攻击者确认目标站点使用受影响版本的Django,且开启了SESSION_SAVE_EVERY_REQUEST和缓存功能。
STEP 2
2. 诱导访问
诱导已登录的合法用户访问一个可以被缓存的公共页面(如首页或详情页)。
STEP 3
3. 缓存 poisoned response
由于漏洞存在,服务器返回的页面响应中包含用户的Session Cookie,但未包含Vary: Cookie头,导致中间代理(如CDN)缓存了该带有敏感Cookie的页面。
STEP 4
4. 获取缓存的会话
攻击者发送针对该公共页面的请求。缓存服务器直接返回之前缓存的、包含受害者Session ID的响应。
STEP 5
5. 会话劫持
攻击者从响应头或内容中提取受害者的Session ID,并利用该ID接管用户账户。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Conceptual PoC for CVE-2026-35192 # This script demonstrates checking for the presence of the 'Vary' header in a response. TARGET_URL = "http://target-django-app.com/public-page" def check_cache_vary_header(): session = requests.Session() # Simulate a user with a session cookie session.cookies.set('sessionid', 'attacker_controlled_or_stolen_value') response = session.get(TARGET_URL) print(f"Status Code: {response.status_code}") print(f"Response Headers: {response.headers}") # Check if 'Vary' header includes 'Cookie' vary_header = response.headers.get('Vary', '') if 'Cookie' not in vary_header: print("[!] Potential Vulnerability: 'Vary: Cookie' is missing from response headers.") print(" This might allow the cache to serve the same response to different users.") else: print("[+] 'Vary: Cookie' is present.") if __name__ == "__main__": check_cache_vary_header()

影响范围

Django 6.0 < 6.0.5
Django 5.2 < 5.2.14

防御指南

临时缓解措施
若无法立即升级,建议暂时禁用SESSION_SAVE_EVERY_REQUEST配置,或者在缓存服务器(如Nginx、Varnish)上配置严格的缓存规则,禁止缓存包含Set-Cookie头的响应,确保Vary头部正确设置。

参考链接

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