🟠 高危 | CVE-2026-65013 — Onlook through 0.2.32, fixed in commit 423e2e9, co...
🟠 【深度分析】高危安全漏洞:CVE-2026-65013
CVSS 评分: 高危(8.7)🟠 状态: Deferred 发布时间: 2026-07-22
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-65013 |
| CVSS 评分 | 8.7 🟠 |
| 严重程度 | 高危 |
| CVSS 向量 | CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
| CWE 分类 | CWE-639 |
| 发布时间 | 2026-07-22 |
| 最后更新 | 2026-07-23 |
| 状态 | Deferred |
| 数据来源 | disclosure@vulncheck.com |
⚠️ CVSS 评分:8.7(高危)
CVSS 向量:CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
攻击难度:低(网络可达、无需特殊攻击条件、仅需低权限认证)
影响范围:机密性、完整性、可用性均为高,且无横向扩散风险
漏洞概述
CVE-2026-65013 是发现于 Onlook 项目(版本 ≤ 0.2.32)中的损坏的对象级授权(Broken Object Level Authorization, BOLA) 漏洞。该漏洞允许通过身份验证的攻击者通过向 tRPC API 端点(如 project.get、member.remove、chat.conversation.delete)直接提供任意的 UUID(如 projectId、conversationId)来访问、修改甚至删除其他用户的资源,包括项目数据、项目成员及聊天会话历史。
漏洞已在 commit 423e2e9 中修复,但截至公告日尚未发布正式补丁版本(NVD 状态标记为 Deferred)。
受影响组件与版本
| 组件 | 受影响版本 | 修复版本 |
|---|---|---|
| Onlook(前端/后端应用) | ≤ 0.2.32 | 包含 commit 423e2e9 及之后的版本 |
注意:Onlook 是一个基于 tRPC 构建的协作/项目管理工具(推测),其 API 采用 UUID 标识资源。漏洞影响所有使用上述版本的服务。
漏洞原理分析
1. 漏洞类型:CWE-639(通过用户控制的关键字绕过授权)
该漏洞属于典型的 Broken Object Level Authorization,具体表现为:
- 问题根源:后端 API 在接收资源标识符(如
projectId、conversationId)时,仅验证了请求者是否已认证(PR:L),但未检查该标识符是否属于当前用户。 - 攻击方式:攻击者只需通过 tRPC 客户端向受影响的端点发送请求,将其他用户的 UUID 作为参数传入,即可绕过授权限制。
- 攻击复杂度:极低(AC:L,AT:N)。无需特殊技巧,只需枚举或猜测有效的 UUID(由于 UUID 通常基于时间或随机生成,攻击者可通过监控网络流量、日志泄露或简单猜测获取)。
2. 受影响的 API 端点
根据 CVE 描述,以下 tRPC 过程存在漏洞:
project.get– 读取任意项目详情member.remove– 删除任意项目成员(需先获取成员对应的用户ID)chat.conversation.delete– 删除任意聊天会话对话历史
3. 攻击前提
- 攻击者需拥有该应用的合法账户(
PR:L)。 - 无需用户交互(
UI:N)。 - 攻击向量为网络(
AV:N),可远程执行。
影响评估
利用难度分析(基于 CVSS 4.0 向量)
| 指标 | 值 | 影响 |
|---|---|---|
| AV(攻击向量) | N(网络) | 攻击者无需物理接触 |
| AC(攻击复杂度) | L(低) | 无需特殊条件,直接请求即可 |
| AT(攻击所需特权) | N(无) | 无需额外特权 |
| PR(权限要求) | L(低) | 需具备普通认证用户权限(最低级别) |
| UI(用户交互) | N(无) | 被攻击用户无需任何操作 |
| VC/VI/VA(机密性/完整性/可用性) | H(高) | 可读取、修改、删除其他用户的资源 |
| SC/SI/SA(安全范围) | N(无) | 仅影响受保护资源,未扩散至其他系统 |
实际威胁场景
- 数据泄露:攻击者可枚举项目 ID,读取所有项目的敏感数据(如设计原型、成员信息、聊天记录)。
- 数据篡改:可删除其他用户的项目成员,导致协作中断。
- 服务破坏:批量删除聊天会话,导致用户历史消息永久丢失。
- 权限提升:虽然无法直接提升自身账户权限,但可借助对其他用户资源的控制间接实现恶意操作(如冒充管理员删除关键资源)。
注意:CVSS 4.0 中无 Privileges Required (PR) 的横向提升,但漏洞本身允许普通用户访问本受限的资源,已构成严重威胁。
修复建议
1. 官方修复方案
升级至包含 commit 423e2e9 的版本。由于 NVD 状态为 Deferred,建议密切关注项目仓库,获取正式发布的补丁版本。
2. 临时缓解措施(在补丁发布前)
- 强化后端授权中间件:在 tRPC 路由处理函数中,对每一个资源操作(读/写/删)增加 所有权检查,例如:
// 伪代码示例 const project = await prisma.project.findUnique({ where: { id: input.projectId } }); if (!project || project.ownerId !== session.user.id) { throw new TRPCError({ code: 'FORBIDDEN' }); } - 日志审计:启用对敏感 API 调用(尤其是
*.get,*.remove,*.delete)的详细日志,并监控异常流量(如单个用户大量请求不同 UUID)。 - 网络访问控制:若可接受,限制 API 只允许来自可信 IP 或内网访问(降低外部枚举风险)。
3. 开发建议
- 采用 统一授权框架(如 Casbin、Pundit)集中管理资源访问权限。
- 使用 非连续且不可猜测的标识符(如 UUID v4),但注意这不能替代授权检查——漏洞本身并非因 UUID 可预测性,而是缺乏检查。
参考资料
| 来源 | 链接 |
|---|---|
| CVE 详情页(NVD) | https://nvd.nist.gov/vuln/detail/CVE-2026-65013 |
| CWE-639 定义 | https://cwe.mitre.org/data/definitions/639.html |
| CVSS 4.0 计算器 | https://www.first.org/cvss/calculator/4.0 |
| 修复 commit(需验证) | 建议搜索 Onlook 仓库 commit 423e2e9 |
免责声明:本文基于 NVD 公开数据和 CVSS 4.0 向量进行技术分析,不包含未经证实的技术细节。所有推断均以 NVD 描述为唯一依据。实际漏洞利用细节可能因环境差异而有所不同,请以官方补丁说明为准。