AutoGPT平台中的授权绕过漏洞CVE-2025-53944
AutoGPT是一种创新的开源自主人工智能(AI)工具,其充分利用了OpenAI最新的文本生成模型,并实现与软件和在线服务进行无缝交互。
Auto GPT免费开源项目结合GPT-4和GPT-3.5技术,通过API创建完整的项目,用户只需提供AI名称、描述和五个目标就可以自己完成项目。
一、基本情况
Auto GPT相当于给基于GPT的模型一个内存和一个身体,用户可以把一项任务交给AI智能体,让它自主地提出一个计划,然后再执行计划。
Auto GPT还具有互联网访问、长期和短期内存管理、用于文本生成的GPT-4实例以及使用GPT-3.5进行文件存储和生成摘要等一系列功能。
栋科技漏洞库关注到AutoGPT平台的受影响版本的外部API中存在一个绕过授权漏洞,漏洞现已被追踪为CVE-2025-53944,CVSS评分7.7。
二、漏洞分析
CVE-2025-53944漏洞存在于AutoGPT平台在v0.6.15及以下版本中,存在于外部API的get_graph_execution_results端点存在授权绕过漏洞。
该端点虽然可以正确验证请求用户对graph_id的访问即访问指定图形,但无法验证执行graph_exec_id参数的所有权,导致存在绕过可能性。
正常情况来说,该端点通过使用经过身份验证的用户的id调用get_graph()对graph_id参数进行适当的授权,确保用户拥有或有权访问该图。
但它随后使用用户提供的graph_exec_id直接查询执行数据而未验证该执行属于授权graph还是请求用户,内部API实现对两个参数的验证。
如此导致了允许经过身份验证的用户通过提供任意执行id来访问任何执行结果,也可以实现从其他用户的图形执行中直接去访问执行结果。
需要注意,内部API端点/graphs/{ graph _ id }/executions/{ graph _ exec _ id }实现了正确的授权模式,执行执行所有权验证和图关系验证。
若攻击者发现目标执行UUID,可从任何用户图形执行中访问敏感执行数据,如输入参数(API密钥和凭据)、输出结果和专有工作流逻辑。
三、源汇分析
Source: User-controlled graph_exec_id parameter in URL path /graphs/{graph_id}/executions/{graph_exec_id}/results
Call Chain:
get_graph_execution_results() function in autogpt_platform/backend/backend/server/external/routes/v1.py:115 processes external API request
graph_db.get_graph(graph_id, user_id=api_key.user_id) validates user access to graph_id (authorization passes for attacker's graph)
execution_db.get_node_executions(graph_exec_id) called with user-controlled execution ID at line 123
Database query in get_node_executions() at autogpt_platform/backend/backend/data/execution.py:728 with where clause {"agentGraphExecutionId": graph_exec_id} - no user validation
NodeExecutionResult.from_db(execution) constructs result objects containing victim's execution data
Sink: Response construction returns unauthorized execution data including victim's input parameters, output results, and workflow details in GraphExecutionResult structure
四、POC概念验证
1、先决条件
(1)拥有READ_GRAPH权限的有效API密钥
(2)访问至少一个图(自己的图或公共图)
(3)发现受害者的执行UUID(通过日志、错误消息等)
2、攻击步骤:
(1)获取有效的API密钥:
curl-X POST/API/API-keys-d'{“name”:“test”,“permissions”:[“READ_GRAPH”]}'
(2)通过侧通道或枚举发现受害者执行ID
(3)执行攻击:
curl -X GET \
"https://platform.autogpt.co/api/graphs/ATTACKER_GRAPH_ID/executions/VICTIM_EXECUTION_UUID/results" \
-H "X-API-Key: ATTACKER_API_KEY"
3、结果验证:
服务器验证对ATTACKER_GRAPH_ID的访问(成功);
从VICTIM_execution_UID返回的数据中可以看到,包含敏感输入/输出数据、API密钥和专有工作流信息的执行数据。
五、影响范围
AutoGPT <= v0.6.15
六、修复建议
AutoGPT >= v0.6.16
七、参考链接
