🔴 严重 | CVE-2026-57572 — Crawl4AI is an open-source LLM-friendly web crawle...
🔴 【深度分析】严重安全漏洞:CVE-2026-57572
CVSS 评分: 严重(10.0)🔴 状态: Received 发布时间: 2026-07-06
🔍 技术细节速览
| 字段 | 值 |
|---|---|
| CVE ID | CVE-2026-57572 |
| CVSS 评分 | 10.0 🔴 |
| 严重程度 | 严重 |
| CVSS 向量 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H |
| CWE 分类 | CWE-88,CWE-94 |
| 发布时间 | 2026-07-06 |
| 最后更新 | 2026-07-06 |
| 状态 | Received |
| 数据来源 | security-advisories@github.com |
| 危害等级 | 严重 (Critical) |
|---|---|
| CVSS 评分 | 10.0 |
| CVSS 向量 | CVSS:3.1 / AV:N / AC:L / PR:N / UI:N / S:C / C:H / I:H / A:H |
| 漏洞类型 | 参数注入 (Argument Injection) → 命令注入 (Command Injection) |
漏洞概述
CVE-2026-57572 是开源项目 Crawl4AI(一个面向大语言模型的网络爬虫与抓取工具)中存在于其 Docker API 服务中的一个严重安全漏洞。攻击者无需任何身份验证,仅通过向 Docker API 发送一个特制的 HTTP 请求,即可在容器内以运行用户身份执行任意系统命令。
该漏洞的根本原因在于 API 服务器未经严格过滤即接受用户提供的 browser_config.extra_args 参数,并将其直接传递给 Chromium 浏览器的启动参数。攻击者可以利用 Chromium 的 --no-zygote 与 --utility-cmd-prefix 等开关,将 Chromium 原本用于启动子进程的命令替换为恶意命令,从而实现远程代码执行。
受影响组件与版本
| 组件 | 受影响版本范围 | 修复版本 |
|---|---|---|
| Crawl4AI Docker API 服务 | < 0.9.0 | 0.9.0 |
| 非 Docker 运行模式 | 未受影响 | – |
说明:该漏洞仅在启用 Docker API 的情况下被触发。若用户以标准库形式调用 Crawl4AI(非 Docker 模式),则不受此漏洞影响。
漏洞原理分析
1. 攻击向量解析
根据 CVSS 向量 AV:N/AC:L/PR:N/UI:N:
- 攻击向量 (AV:N):攻击者通过网络远程发起攻击。
- 攻击复杂度 (AC:L):利用难度低,无需复杂的网络条件或环境配置。
- 权限要求 (PR:N):无需任何预先认证或授权。
- 用户交互 (UI:N):无需用户(如管理员)进行任何点击或确认操作。
2. 技术细节
漏洞发生在 Crawl4AI Docker API 处理浏览器启动参数的过程中:
- 输入入口:API 端点接受
browser_config.extra_args字段,该字段本意是允许用户定制浏览器的启动参数(例如设置代理、禁用沙箱等)。 - 参数传递缺陷:服务器在启动 Chromium 进程时,将该字段内原本合法的参数列表未经充分校验即拼接至 Chromium 启动命令行中。
- 利用方式:攻击者可以注入两类关键 Chromium 开关:
--no-zygote:禁用 Chromium 的“孵化器(zygote)”进程模型。在正常模式下,Chromium 子进程通过 zygote 进程 fork 而来;禁用后,子进程将直接通过默认的UtilityProcessManager启动。--utility-cmd-prefix:允许指定一个自定义命令前缀,该前缀会被添加至所有子进程的启动命令行之前。Chromium 会将该前缀解释为要执行的命令。
- 后果:
- 当 Chromium 尝试创建一个子进程(例如渲染进程)时,系统实际执行的是
prefix + <original_command>。 - 由于
--utility-cmd-prefix可以指向任意可执行文件,攻击者即可执行任意系统命令,实现远程代码执行。
- 当 Chromium 尝试创建一个子进程(例如渲染进程)时,系统实际执行的是
现有信息的局限性:以上分析基于 NVD 描述及公开的 Chromium 命令行参数文档。具体的代码实现细节(如
extra_args是否在 Python 中通过shlex.split()处理,或者是否存在类型误用等)暂需查阅源代码仓库确认,但核心攻击路径已由安全公告明确描述。
影响评估
攻击复杂度与利用条件
| 评估维度 | 评估结果 |
|---|---|
| 前提条件 | 攻击目标必须运行 Crawl4AI 的 Docker API 服务(默认端口 9876)。 |
| 身份验证 | 不需要任何用户名、密码或 API Key。 |
| 利用复杂度 | 非常低。攻击者只需发送一个简单的 POST 请求,携带构造好的 browser_config.extra_args 即可。 |
| 自动化难易度 | 极易实现自动化扫描与渗透。 |
潜在后果
- 机密性丧失 (C:H):容器内所有文件、环境变量、数据库连接信息等均可被读取。
- 完整性丧失 (I:H):攻击者可修改、删除或篡改容器内的数据与服务配置。
- 可用性丧失 (A:H):可导致容器崩溃、资源耗尽或完全被控制,服务不可用。
- 容器逃逸扩展 (S:C):由于是在容器运行时用户下执行命令,若 Docker 配置存在挂载(volume mount)或特权模式,攻击者可能进一步逃逸至宿主机。即使无法逃逸,也可利用容器作为跳板对内网横向移动。
修复建议
官方修复
立即升级 Crawl4AI 至 0.9.0 或更高版本。官方已在该版本中移除了对 browser_config.extra_args 的盲目信任,并对可接受的参数进行了白名单限制,同时禁用了高危 Chromium 开关的注入。
临时缓解措施
若无法立即升级,建议采取以下措施:
- 限制 API 访问:使用
iptables、云安全组或 Docker 网络策略,仅允许受信任的 IP 地址段访问 Docker API 端口(默认 9876)。 - 增加认证:在 API 前添加反向代理(如 Nginx、Caddy),实现基于 Token 或 Basic Auth 的认证。
- 最小权限原则:
- 确保 Docker 容器运行时用户为非 root 用户(通常为
nobody或appuser)。 - 移除不必要的 Linux Capabilities,特别是
--cap-add=SYS_PTRACE(若不需要)。
- 确保 Docker 容器运行时用户为非 root 用户(通常为
- 监控与告警:监控 Docker API 的日志,对包含可疑
--no-zygote或--utility-cmd-prefix参数的请求进行实时告警。
参考资料
| 类型 | 链接 |
|---|---|
| CVE 详情 | https://nvd.nist.gov/vuln/detail/CVE-2026-57572 |
| CWE-88(参数注入) | https://cwe.mitre.org/data/definitions/88.html |
| CWE-94(代码注入) | https://cwe.mitre.org/data/definitions/94.html |
| Chromium 命令行参数 | https://peter.sh/experiments/chromium-command-line-switches/ |
| Crawl4AI 官方仓库 | https://github.com/unclecode/crawl4ai |