数据截至 (上游 commit ae57a2357745)
第 6 章 · 沙箱与安全边界
本章讲:一个会在你机器上跑任意代码的 AI,到底被什么拦着。答案分五层,其中只有一层是真隔离。
6.1 先把威胁模型说清楚
AgenticSeek 干的事天然危险:
- 让 LLM 写 shell 命令并直接执行;
- 让 LLM 上任意网站,网页内容会进 入 LLM 的上下文;
- 后端暴露一个 HTTP 接口,POST 一段文字就能触发上面两件事。
最后一条尤其要命:/query 端点等价于远程代码执行。项目自己在 api.py:315-318 的注释里就是这么写的:
“The /query endpoint is unauthenticated and the coder agent executes shell commands on the host, so exposing it on a network interface is equivalent to handing out remote code execution.”
6.2 五层防护速览
| 层 | 防什么 | 默认状态 | 强度 |
|---|---|---|---|
| ① 工作区路径守卫 | 文件工具读写越界 | 默认开 | 真守卫(realpath 比对) |
| ② 危险命令黑名单 | rm -rf 之类 | 默认关(safe_mode = False) | 关键词层面,可绕 |
| ③ API bearer token | 未授权调用 /query | 默认关(不设环境变量就放行) | 有效但要手动开 |
| ④ 网页 JS 阉割 | 恶意/骚扰网页 | 默认开 | 客户端 JS 层面 |
| ⑤ Docker + 回环绑定 | 一切 | 用 start_services.sh full 时开 | 唯一的真隔离 |
下面逐层看。