SuperAGI 还能用吗?1.77 万星的自主 Agent 平台,10 月爆出 9.8 分漏洞、两年没发版(基础篇)

SuperAGI 还能用吗?1.77 万星的自主 Agent 平台,10 月爆出 9.8 分漏洞、两年没发版(基础篇)

10 月 2 日,NVD 给 SuperAGI 记了一条 CVE-2026-51904,CVSS 3.1 打 9.8 分。同一天我去仓库翻版本记录:最后一个带标签的 release 是 v0.0.14,2024 年 1 月 16 日;最后一次提交停在 2025 年 1 月 22 日,之后 652 天没有任何推送。

一个高危漏洞不稀奇,稀奇的是它落在一个已经没人修的项目上。这篇把 SuperAGI 是什么、这个洞怎么打、今天还想跑它该怎么收尾,一次说清。

它是什么:2023 年那批自主 Agent 里最像产品的

SuperAGI 2023 年 5 月发布,作者 Ishaan Bhola 和 Mukunda NS,MIT 协议,仓库 TransformerOptimus/SuperAGI,现在 17,732 星、2,222 fork、2,342 次提交。

定位是「dev-first open source autonomous AI agent framework」,但它和同期的 AutoGPT、BabyAGI 走了两条路:那两个给你一个能自己转圈的脚本,SuperAGI 给你一整套后台——Web 控制台建 Agent 配工具,Action Console 实时看每一步推理和工具返回、能中途插话,工具有 GitHub、Google Search、Jira、Notion、邮件这些现成轮子,多 Agent 可以并发跑,Token 用量单独做了一层遥测,记忆能挂 Pinecone、Qdrant、Weaviate。技术栈是 FastAPI + Next.js + Postgres 15 + Redis Stack + Celery,前面一个 nginx 把 3000 端口反代出去,Agent 执行走 ReAct 循环,带预算上限。

放到 2026 年看,这套东西显得重:状态驻内存、浏览器实例常驻、不认 MCP。但 2023 年它是把「自主 Agent 该有的零件」一次配齐的那一个,1.7 万星不算白来。之前那篇 SuperAGI 基础篇讲过它的完整形态,这里不重复。

9.8 分那个洞,落在两句查库上

CVE-2026-51904 归在 CWE-284(权限控制不当),位置是 superagi/controllers/agent_execution.py 里的 create_agent_execution 和 create_agent_run,对应 POST /agentexecutions/add 与 /agentexecutions/add_run。

问题在查库这句(main 分支 81 行附近):

agent = db.session.query(Agent).filter(
    Agent.id == agent_execution.agent_id,
    Agent.is_deleted == False
).first()

agent_id 直接从请求体里拿,只校验它存在、没被删,不校验它属于哪个组织。SuperAGI 的模型是 Org → Project → Agent 三级,agents 表里只有 project_id,要 join projects 才能拿到 organisation_id——这一步省了,A 组织的账号就能给 B 组织的 Agent 建执行记录、起 run。

后果比「看到不该看的数据」更具体:Agent 身上挂的工具凭据是 B 的(GitHub token、邮箱、数据库连接),烧的 LLM 额度是 B 的,执行历史也被写脏。NVD 没有给 patched version,GitHub Advisory 到今天还标着 Unreviewed,官方修复不存在。

SuperAGI CVE-2026-51904 跨租户执行请求路径时序图
按 main 分支源码与 config_template.yaml 默认值绘制的调用路径:请求体里的 agent_id 一路没人核对归属,最后拉起的是另一个组织的 Agent。

比漏洞更麻烦的:默认配置没开鉴权

config_template.yaml 第 49 行,ENV 默认是 'DEV':

ENV: 'DEV' #DEV,PROD, to use GITHUB OAUTH set to PROD

而 helper/auth.py 里 check_auth 的实现是:

env = get_config("ENV", "DEV")
if env == "PROD":
    Authorize.jwt_required()
return Authorize

照 README 抄下来的自托管实例,ENV 就是 DEV,jwt_required() 根本不会执行;DEV 分支里 get_current_user 还把当前用户硬编码成同一个邮箱。CVSS 向量里的 PR:N(无需权限)不是评分的人手滑,默认部署下确实不需要任何凭据。

这条比 9.8 分本身更值得记:默认配置决定了项目九成的真实风险,CVE 只是把默认配置的问题写进了编号。公司那边也早换了赛道——superagi.com 现在卖的是 AI 销售 Agent,README 里挂的 Cloud 试用站 app.superagi.com 已经是 404。

但也别把话说满。EPSS 只有 0.521%(44 百分位),翻译过来是「分高,在野利用概率低」——愿意在生产里跑 SuperAGI 的人本来就不多。真正危险的是两类:对公网开放、又给多个团队开组织账号的实例;把它包进内部平台当「Agent 工坊」发给业务方的实例。单人在内网自娱自乐,风险小得多,但不等于零。

还想跑:三条命令起,三件事先做

README 的本地跑法没变:

git clone https://github.com/TransformerOptimus/SuperAGI.git
cd SuperAGI
cp config_template.yaml config.yaml
docker compose -f docker-compose.yaml up --build
# 浏览器打开 http://localhost:3000

起之前先做这三件,比事后打补丁省事:

  1. 把 config.yaml 的 ENV 改成 PROD,同时配好 SECRET_KEY 和 GitHub OAuth。PROD 下 GUI 走 OAuth 登录,不配会进不去——这是它的坑。
  2. 只监听内网,前面挂一层带认证的反代,3000 端口不要直接映射公网。
  3. 单租户用。别在一个实例里给两个团队开组织,这条漏洞的前提就是多租户。

非要多租户,至少把那句补上:

from superagi.models.project import Project
from superagi.helper.auth import get_user_organisation

org = get_user_organisation(Authorize)
agent = (
    db.session.query(Agent)
    .join(Project, Agent.project_id == Project.id)
    .filter(Agent.id == agent_execution.agent_id,
            Agent.is_deleted == False,
            Project.organisation_id == org.id)
    .first()
)

两个函数都要改,改完自己构造一个跨组织请求测一遍。这是缓解,不是官方修复,也不会有人给你发 v0.0.15。

替代:先想清楚你要形态还是要产出

想学完整自主 Agent 长什么样,读 SuperAGI 源码仍然值,ReAct 循环、预算控制、工具抽象都在,结构比教程清楚。要组队干活看 CrewAI;要对话式多 Agent 编排得转 Microsoft Agent Framework,AutoGen 已经归档;要可视化搭完就上线是 Dify;要可控的状态图是 LangGraph。

实话

SuperAGI 的问题不是「不更新」,是「不更新还留着一条 9.8 分的口子,默认配置又把门开着」。星数是 2023 年投的票,不是 2026 年的承诺。它现在的价值剩两个:一份读得懂的自主 Agent 教科书,和一堂「默认配置比漏洞更危险」的课。

手上还有一台在跑的,今天就去看 config.yaml 里的 ENV 是不是 DEV——比什么都实在。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注