⚠️ 免责声明: 本文内容仅用于安全研究与教育目的。文中涉及的漏洞均已公开披露且已有官方修复方案。所有复现示例均基于本地测试环境,使用脱敏后的地址和密钥。请勿将相关技术用于未经授权的测试或攻击行为。
漏洞编号: RAXE‑2026‑050(含 9 个 CVE)
漏洞等级: 最高 CVSS 10.0 严重
影响产品: praisonai + praisonaiagents(两个 PyPI 包均受影响)
漏洞类型: 沙箱绕过 / RCE / 命令注入 / SQL 注入 / SSRF / 未认证访问
发现方: RAXE Labs
披露时间: 2026‑07‑11
当前状态: ✅ 已修复(praisonai ≥ 4.6.78, praisonaiagents ≥ 1.5.90)
PraisonAI 是一个开源的多 Agent 编排框架,支持 100+ 大模型、MCP 工具集成、RAG 和代码执行——号称"5 行代码部署一个 Agent 团队"。它在 PyPI 上以两个包发布:praisonai 和 praisonaiagents,是 AI Agent 开发者常用的轻量级编排框架之一。
| 时间 | 事件 |
|---|---|
| 2026-07-11 | RAXE Labs 一次性披露 9 个安全漏洞 |
| 2026-07-11 | 4 个 CVE 附带厂商公开的 PoC 代码 |
| 2026-07-13 | ByteIota 发布详细分析文章 |
| 2026-07-13 | 前一个同类认证绕过 CVE(CVE-2026-44338)披露后3 小时 44 分即被野外扫描 |
| 2026-07-15 | 修复版本发布:praisonai 4.6.78 / praisonaiagents 1.5.90 |
这不是一两个孤立漏洞,而是一次系统性安全审计的结果。9 个 CVE 横跨两个 PyPI 包,覆盖三大攻击面:
| 攻击面 | CVE 数量 | 最高评分 | 关键风险 |
|---|---|---|---|
| 代码执行沙箱 | 3 | 10.0 | 无 AST 校验、黑名单可绕过、str 子类欺骗过滤器 |
| 未认证远程访问 | 3 | 9.9 | 默认无鉴权、绑定 0.0.0.0、通配符 CORS |
| 数据面攻击 | 3 | 10.0 | SQL 注入、SSRF、MCP 命令注入 |
最致命的两个 10.0 分漏洞:
str子类击穿——重写startswith()方法,黑名单检查全部返回 False一句话总结:PraisonAI 的代码执行"安全机制"形同虚设。
位置: praisonai 包 → CodeAgent._execute_python()
问题本质: 这个函数接收 LLM 生成的 Python 代码,然后直接执行——没有 AST 校验、没有 import 限制、没有沙箱。
攻击链:
攻击者构造恶意 Prompt
↓
LLM 被诱导生成恶意 Python 代码
↓
CodeAgent._execute_python() 直接执行
↓
攻击者获得:环境变量中的所有 API Key、云凭证、SSH 密钥
修复方式: 升级到 praisonai ≥ 1.6.78,新增 AST 校验和 import 白名单。
位置: praisonaiagents 包 → execute_code() 沙箱
问题本质: 这是一个教科书级的"黑名单不是安全控制"案例。
PraisonAI 的沙箱用三层防护:
绕过方法: 传入一个str子类,重写startswith()方法:
class EvilStr(str):
def startswith(self, prefix):
return False # 永远返回 False
# 黑名单检查:
if evil_str.startswith("__"): # 永远返回 False,检查通过
block()
结果: 所有黑名单检查全部失效,攻击者可以访问任意 dunder 属性,实现沙箱逃逸和任意命令执行。
修复方式: 升级到 praisonaiagents ≥ 1.5.90。
教训: 基于字符串模式匹配的黑名单,永远不是安全控制。它是减速带,不是防火墙。
位置: praisonai 包 → AICoder 组件
问题本质: 处理 LLM 生成的文件操作时,完全没有路径校验。
攻击方式:
影响: praisonai < 4.6.78 的所有版本。
位置: praisonai 包 → AgentOS FastAPI
问题本质: 这个漏洞不应该在同一个代码库中出现两次。
PraisonAI 的 AgentOS:
0.0.0.0(所有网络接口)攻击方式: 任何能访问端口的人,可以:
GET /api/agents → 提取所有 Agent 指令和系统提示词POST /api/chat → 直接调用 Agent 执行任务历史教训: 2026 年 6 月的 CVE-2026-44338 是几乎相同的"默认无认证"漏洞,披露后3 小时 44 分就被野外扫描。而这次 9 个 CVE 中有 4 个带 PoC,预计被扫描的速度会更快。
修复方式: 升级到 praisonai ≥ 1.7.3。
| CVE | CVSS | 类型 | 简述 |
|---|---|---|---|
| CVE-2026-60090 | 9.8 | SQL/CQL 注入 |
create_collection() 的 dimension 参数直接拼入 SQL,标准注入 |
| CVE-2026-61429 | 8.6 | SSRF | Crawl4AI/Chromium 后端的 SSRF 过滤被 DNS 重绑定 +HTTP 重定向绕过 |
| CVE-2026-61438 | 7.0 | RCE |
JobWorkflowExecutor._exec_inline_python() AST 校验不充分,恶意 YAML 可执行系统命令 |
| CVE-2026-34937 | 7.8 | Shell 注入 |
run_python() 将用户代码拼入 python3 -c "..." 并 shell=True 执行,$() 和反引号未转义 |
| CVE-2026-34939 | 6.5 | 命令注入 | MCP 命令解析的修复不完整,未添加命令白名单,bash/python等可执行文件仍可通过 |
┌─────────────────────────────────────────────────────────────────┐
│ PraisonAI 攻击面全景 │
├─────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 代码执行面 │ │ 远程访问面 │ │ 数据面 │ │
│ └──────┬──────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌────┴────┐ ┌───┴───┐ ┌───┴───┐ │
│ │CVE-61447│ │CVE-614│ │CVE-600│ │
│ │直接执行 │ │26 │ │90 │ │
│ │LLM 代码 │ │无认证 │ │SQL 注入│ │
│ └─────────┘ │AgentAPI│ └───────┘ │
│ └───────┘ │
│ ┌─────────┐ ┌───────┐ ┌───────┐ │
│ │CVE-34938│ │CVE-443│ │CVE-614│ │
│ │沙箱绕过 │ │38 │ │29 │ │
│ │str 子类 │ │3 小时 44│ │SSRF │ │
│ └─────────┘ │分被扫描│ └───────┘ │
│ └───────┘ │
│ ┌─────────┐ │
│ │CVE-61445│ ┌───────┐ ┌───────┐ │
│ │任意文件 │ │CVE-614│ │CVE-349│ │
│ │写入 +Root│ │426 │ │37/39 │ │
│ └─────────┘ │默认无 │ │Shell/ │ │
│ │认证 │ │MCP 注入│ │
│ └───────┘ └───────┘ │
│ │
└─────────────────────────────────────────────────────────────────┘
典型攻击场景:
PraisonAI 不是个例。
2026 年 7 月发布的 GuardFall 研究发现:11 个最流行的开源 AI 编程 Agent 中,有 10 个存在 Shell 注入绕过。
模式高度一致:
OWASP 在 2025 年的 LLM 应用 Top 10 中,已将"不安全的代码执行"列为顶级风险。
如果你的 Agent 执行 LLM 生成的代码,它需要真正的隔离:
字符串匹配 LLM 输出,不是安全控制。
检查你安装的版本并立即升级两个包:
# 检查当前版本
pip show praisonai praisonaiagents
# 升级到安全版本
pip install --upgrade praisonai praisonaiagents
目标版本:
将服务限制为localhost访问:
# 修改启动配置,绑定到 127.0.0.1
praisonai serve --host 127.0.0.1
添加反向代理认证:
在 Nginx/Caddy 层添加 Basic Auth 或 API Key 校验。
禁用代码执行功能:
如果不需要 Agent 执行代码,在配置中禁用 CodeAgent 和 AICoder 组件。
审查网络暴露:
# 检查是否有 PraisonAI 进程监听公网
ss -tlnp | grep -E '(praisonai|8080|8000)'
系列下一篇预告: LangGraph SQL 注入→反序列化 RCE 链(CVE-2025-67644 + CVE-2025-64439),两阶段攻击链从 SQL 注入到完全控制服务器。
本文是「AI 历史漏洞」系列第 02 篇。每篇覆盖一个真实 CVE,从漏洞背景到修复方案完整拆解。
欢迎关注,一起踩坑,一起成长。