在另一轮 CVE 集中披露冲击 MCP 服务器三小时后,第二轮大规模披露又落到了 AI agent 技术栈上。六个 CVE 均由 [email protected] 分配,于 UTC 20:17:41.107 至 20:17:41.843 之间发布——相隔 0.74 秒——都指向同一名研究者的披露页面。它们的目标分别是 Agno、LiteLLM、gpt-researcher、crewai-tools 和 PentestGPT。

最关键的一项

CVE-2026-37004:"BerriAI litellm <=1.82.4 存在服务器端模板注入(SSTI)漏洞,这使得未经认证的远程攻击者可通过精心构造的 dotprompt_content 参数,在 /prompts/test 端点执行任意操作系统命令,原因是其使用了未沙箱化的 jinja2.Environment。" LiteLLM 是成千上万团队部署在模型前端的代理层。

修复是真实存在的,而且已经在当前代码中:prompt_manager.py 现在导入了 ImmutableSandboxedEnvironment,并带有内联注释“Sandboxed env: templates can come from user input via /prompts/test.”。它追溯至 2026 年 4 月 9 日 的提交 d910a956,标题为 “fix(proxy): improve input validation on management endpoints.”。该 diff 将 Environment( 替换为 ImmutableSandboxedEnvironment(。那次提交没有任何安全公告,没有 CVE,在提交主题中也完全没有提到模板注入或远程代码执行。1.82.4 版本于 3 月 18 日发布到 PyPI;当前版本是 1.98.0。

常见说法哪里错了

最常被引用的说法是“LiteLLM 中存在未认证 RCE,于 8 月 27 日披露”。真正重要的日期是 4 月 9 日。在长达 140 天里,任何依据 LiteLLM 更新日志判断是否升级的人都无从得知——这次发布中最严重的安全修复,在提交记录里只是以一次 lint 清理的措辞出现。

Agno 的条目则在相反方向上失准。它针对的是有文档记载、设计如此、仍在发布中的行为。"最高至 2.5.8" 意味着存在一个修复后的 2.5.9;但并没有。runpy.run_path(...)exec(code, self.safe_globals, self.safe_locals) 今天仍在 main 分支中,跨过 3.0.1 这个重大版本升级,并且其库自身的运行时警告已经写明:“PythonTools can run arbitrary code, please provide human supervision.” 一个用途就是运行模型编写的 Python 的工具,并不构成未修补的 RCE,而版本上限是在制造一个并不存在的修复。

六项披露,零严重性

这六项的 metrics 块全部都是空的。MITRE 没有 CVSS,研究者没有,NVD 也没有。一个广泛部署的代理中的未认证 RCE,和 PentestGPT 中硬编码的遥测凭证,在数据库里被形式上等同对待,下游扫描器要么忽略它们,要么自行编造一个分数。其中两项还把一个 release candidate——<= 1.10.2rc1——列为受影响上限,而当前 crewai-tools 版本已是 1.15.18,依赖解析器对此无能为力。