把 §7.5 的原则具化成 6 条硬协议,Stage C 实施时按表对账而非凭记忆: ① 网络 blocklist 硬编码段(cloud metadata 169.254/16 / loopback / 内网三段 / CGNAT,PG IP 单独再 block 一遍 belt-and-suspenders); ② egress proxy 模型(容器 HTTP_PROXY env + iptables DROP except proxy 端口防 SDK 绕 env;宿主侧 proxy 做域名 allowlist + 字节计量 + network_audit 审计日志;allowlist 初始集列出 PyPI/GitHub/npm 等); ③ 进程组清理协议(docker exec 走 setsid + kill -- -PGID,防 nohup & / disown 跨 exec 持久化破"同 user 不内隔离"残留风险假设); ④ 磁盘配额硬化时点(外部开放前必须升 xfs/ext4 project quota 或 zfs dataset quota,否则扫描间隙打满共享 fs 拖死同节点其他 user); ⑤ Executor 接口走 backend driver + ZCBOT_SANDBOX_RUNTIME config 注入 (未来切 gVisor/Firecracker/e2b 应用层零改动,避免 Docker API 形状 泄漏到接口层); ⑥ 工具按信任域二分 dispatch — host in-process: read/write/edit/glob/ grep/load_skill/web_search/web_fetch(原本就在 host 持凭据 / 走 paths.py 校验,塞容器无收益付 200ms × N);container exec: shell/run_python(执行任意代码必隔离)。 同时写死 gVisor / Firecracker-e2b / 容器内 tool-runner 三档升级触发信号 + 不升级的反向兜底理由,防凭审美决策。 PROGRESS:状态表 §7 SaaS 行 + 下一步候选 #2 加锚指向新清单;时间估值 2-3 天 → 3-5 天;补 5 项 Stage C 完成 DoD 红队回归用例(metadata IP timeout / PG IP block / nohup 残留 docker top 不见 / 跨 user 容器互访 阻断 / 非 allowlist 域名 403)。 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| config | ||
| core | ||
| db/migrations | ||
| prompts/system | ||
| scripts | ||
| skills | ||
| tests | ||
| tools | ||
| web | ||
| .gitignore | ||
| CLAUDE.md | ||
| DESIGN.md | ||
| DOCUMENT_SEARCH_API.md | ||
| EMBED.md | ||
| PROGRESS.md | ||
| RUN.md | ||
| alembic.ini | ||
| main.py | ||
| requirements.txt | ||