AI测试 RAXE-2026-050 | PraisonAI 巨型漏洞簇:9 个 CVE、两个满分 RCE、4 个 PoC 已公开

匠测AI说 · August 06, 2026 · 56 hits

⚠️ 免责声明: 本文内容仅用于安全研究与教育目的。文中涉及的漏洞均已公开披露且已有官方修复方案。所有复现示例均基于本地测试环境,使用脱敏后的地址和密钥。请勿将相关技术用于未经授权的测试或攻击行为。

漏洞编号: 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)

一、漏洞背景

1.1 PraisonAI 是什么

PraisonAI 是一个开源的多 Agent 编排框架,支持 100+ 大模型、MCP 工具集成、RAG 和代码执行——号称"5 行代码部署一个 Agent 团队"。它在 PyPI 上以两个包发布:praisonai 和 praisonaiagents,是 AI Agent 开发者常用的轻量级编排框架之一。

1.2 漏洞发现与披露时间线

时间 事件
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

1.3 漏洞概述

这不是一两个孤立漏洞,而是一次系统性安全审计的结果。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 分漏洞:

  • CVE-2026-61447:LLM 生成的代码直接执行,无沙箱、无校验,一个提示注入就能偷走所有环境变量
  • CVE-2026-34938:三层沙箱被一个str子类击穿——重写startswith()方法,黑名单检查全部返回 False

一句话总结:PraisonAI 的代码执行"安全机制"形同虚设。

二、核心漏洞深度解析

2.1 CVE-2026-61447(CVSS 10.0):CodeAgent 无沙箱 RCE

位置: praisonai 包 → CodeAgent._execute_python()

问题本质: 这个函数接收 LLM 生成的 Python 代码,然后直接执行——没有 AST 校验、没有 import 限制、没有沙箱。

攻击链:

攻击者构造恶意 Prompt

LLM 被诱导生成恶意 Python 代码

CodeAgent._execute_python() 直接执行

攻击者获得:环境变量中的所有 API Key、云凭证、SSH 密钥

修复方式: 升级到 praisonai ≥ 1.6.78,新增 AST 校验和 import 白名单。

2.2 CVE-2026-34938(CVSS 10.0):str 子类绕过三层沙箱

位置: praisonaiagents 包 → execute_code() 沙箱

问题本质: 这是一个教科书级的"黑名单不是安全控制"案例。

PraisonAI 的沙箱用三层防护:

  1. AST 校验(检查危险属性名)
  2. 文本模式黑名单(字符串匹配)
  3. 受限 builtins

绕过方法: 传入一个str子类,重写startswith()方法:

class EvilStr(str):

def startswith(self, prefix):

return False # 永远返回 False

# 黑名单检查:

if evil_str.startswith("__"): # 永远返回 False,检查通过

block()

结果: 所有黑名单检查全部失效,攻击者可以访问任意 dunder 属性,实现沙箱逃逸和任意命令执行。

修复方式: 升级到 praisonaiagents ≥ 1.5.90。

教训: 基于字符串模式匹配的黑名单,永远不是安全控制。它是减速带,不是防火墙。

2.3 CVE-2026-61445(CVSS 9.9):AICoder 任意文件写入 +Root 命令执行

位置: praisonai 包 → AICoder 组件

问题本质: 处理 LLM 生成的文件操作时,完全没有路径校验

攻击方式:

  1. 攻击者构造恶意聊天 Prompt
  2. 绕过不充分的输入清理
  3. 在宿主机文件系统的任意位置写入文件
  4. 同时以 root 权限执行任意 Shell 命令
  5. 无需认证

影响: praisonai < 4.6.78 的所有版本。

2.4 CVE-2026-61426(CVSS 8.6):默认无认证的 Agent API

位置: praisonai 包 → AgentOS FastAPI

问题本质: 这个漏洞不应该在同一个代码库中出现两次

PraisonAI 的 AgentOS:

  • 绑定 0.0.0.0(所有网络接口)
  • 不要求 API Key
  • 通配符 CORS 策略(允许任意域名跨域请求)

攻击方式: 任何能访问端口的人,可以:

  • GET /api/agents → 提取所有 Agent 指令和系统提示词
  • POST /api/chat → 直接调用 Agent 执行任务

历史教训: 2026 年 6 月的 CVE-2026-44338 是几乎相同的"默认无认证"漏洞,披露后3 小时 44 分就被野外扫描。而这次 9 个 CVE 中有 4 个带 PoC,预计被扫描的速度会更快。

修复方式: 升级到 praisonai ≥ 1.7.3。

三、其他 5 个 CVE 速览

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 注入│ │

│ └───────┘ └───────┘ │

│ │

└─────────────────────────────────────────────────────────────────┘

典型攻击场景:

  1. 外部攻击者 → 访问暴露的 AgentOS 端口(无认证)→ 提取系统提示词 → 构造提示注入 → 触发 CVE-61447 → 窃取所有 API Key
  2. 恶意用户 → 通过聊天界面提交恶意 Prompt → 触发 AICoder 的任意文件写入 → 以 root 权限执行命令
  3. 内网横向 → 利用 SSRF(CVE-61429)访问云元数据服务 → 获取 IAM 临时凭证 → 接管云资源

五、深层问题:AI Agent 框架的通病

PraisonAI 不是个例。

2026 年 7 月发布的 GuardFall 研究发现:11 个最流行的开源 AI 编程 Agent 中,有 10 个存在 Shell 注入绕过

模式高度一致:

  1. 框架用黑名单检查代码/命令字符串
  2. 然后传给执行环境(Python/Bash/Node.js)
  3. 执行环境通过替换、展开或继承重新求值
  4. 黑名单从未看到真正的 Payload

OWASP 在 2025 年的 LLM 应用 Top 10 中,已将"不安全的代码执行"列为顶级风险。

如果你的 Agent 执行 LLM 生成的代码,它需要真正的隔离:

  • microVM(如 Firecracker)
  • gVisor
  • 至少:无网络访问 + 只读文件系统的子进程

字符串匹配 LLM 输出,不是安全控制。

六、修复指南

6.1 立即升级

检查你安装的版本并立即升级两个包:

# 检查当前版本

pip show praisonai praisonaiagents

# 升级到安全版本

pip install --upgrade praisonai praisonaiagents

目标版本:

  • praisonai ≥ 4.6.78
  • praisonaiagents ≥ 1.5.90

6.2 临时缓解(无法立即升级时)

  1. 将服务限制为localhost访问:

    # 修改启动配置,绑定到 127.0.0.1

    praisonai serve --host 127.0.0.1

  2. 添加反向代理认证:

    在 Nginx/Caddy 层添加 Basic Auth 或 API Key 校验。

  3. 禁用代码执行功能:

    如果不需要 Agent 执行代码,在配置中禁用 CodeAgent 和 AICoder 组件。

  4. 审查网络暴露:

    # 检查是否有 PraisonAI 进程监听公网

    ss -tlnp | grep -E '(praisonai|8080|8000)'

6.3 长期安全建议

  1. 永远不要信任 LLM 输出:所有 LLM 生成的代码/命令必须经过严格校验或沙箱隔离
  2. 默认启用认证:API 端点必须默认要求认证,而非默认开放
  3. 使用真正的沙箱:黑名单不是沙箱,字符串匹配不是安全控制
  4. 监控 CVE 披露后的扫描活动:PraisonAI 的历史数据表明,高危 CVE 披露后数小时内就会被野外扫描

七、参考链接

系列下一篇预告: LangGraph SQL 注入→反序列化 RCE 链(CVE-2025-67644 + CVE-2025-64439),两阶段攻击链从 SQL 注入到完全控制服务器。

本文是「AI 历史漏洞」系列第 02 篇。每篇覆盖一个真实 CVE,从漏洞背景到修复方案完整拆解。
欢迎关注,一起踩坑,一起成长。

No Reply at the moment.
需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up