附录 B 隔离技术与工具速查
三张分类表:三级隔离技术、加固工具、审查与观测工具。只分类、不排名——选型永远按攻击面(第 1.2 节决策树),工具属性标注随行;命令与参数一律为写法示意,以各官方文档为准。
一、三级隔离技术分类
| 级别 |
代表技术 |
隔离边界 |
内核漏洞攻击面 |
接入成本 |
适用(第 1.2 节) |
| 进程级 |
systemd-run 沙箱属性、seccomp、能力裁剪 |
系统调用与进程属性约束 |
暴露 |
低 |
辅助手段、轻量场景 |
| 容器级 |
Docker 加固容器(四道边界) |
命名空间 + 共享内核 |
暴露(结构性天花板) |
低 |
读代码型、单租户读写型 |
| 容器级(增强) |
gVisor(runsc) |
用户态内核 Sentry 拦截系统调用 |
收敛 |
极低(换 runtime) |
单租户任意执行型 |
| 微 VM 级 |
Firecracker(+ jailer、快照池) |
硬件虚拟化、独立内核 |
基本消除 |
高(内核、rootfs、网络自管) |
多租户、对外、平台化 |
| 微 VM 级(产品化) |
E2B(Firecracker + 快照池 + SDK) |
同上,加托管与预热 |
基本消除 |
中(用其服务) |
不想自建 VM 池的团队 |
关键数字备查(属性随行):runsc 典型启动延迟约 50~100 毫秒(社区资料);Firecracker 启动不超过 125 毫秒、每 VM 内存开销小于 5 MiB、每秒约 150 个 microVM(官方数据);E2B 冷启动约 150 毫秒(官方宣称)。runc 历史逃逸漏洞 CVE-2019-5736、CVE-2024-21626(官方记录)是「共享内核天花板」的注脚。
二、加固工具分类
| 类别 |
工具 / 手段 |
用途 |
本书出处 |
| 文件系统 |
--read-only、--tmpfs /tmp:rw,noexec,nosuid |
只读根 + 受控临时区 |
第 2.1 节 |
| 挂载 |
-v 工作区:/workspace:rw(按需 :ro) |
唯一业务读写点 |
第 2.1 节 |
| 网络 |
--network none;出站白名单代理 |
断网或收窄外联 |
第 2.1、5.2 节 |
| 能力 |
--cap-drop ALL、--security-opt no-new-privileges、非 root 用户 |
特权最小化 |
第 2.1 节 |
| 资源 |
--memory、--cpus、--pids-limit |
资源耗尽硬顶 |
第 2.1 节 |
| 运行时 |
--runtime=runsc |
用户态内核换装 |
第 2.2 节 |
| VM 侧 |
Firecracker、jailer、快照池 |
独立内核与宿主收紧 |
第 2.2 节 |
| 进程级 |
systemd-run 沙箱属性(写法示意) |
无 Docker 环境的替代 |
第 1.1 节 |
| 执行包装 |
sandbox_run.py(自建) |
统一超时、审计、退出码 |
第 2.1 节 |
| 执行收拢 |
gateway.py(自建) |
校验、审批分流、截断回传 |
第 2.3 节 |
⚠️ 高危反例速记(出现任一即沙箱失效,第 2.1 节):挂载 Docker Socket;挂载宿主根目录;以 root 跑沙箱进程并放开能力。速查时先扫这三条,再看参数齐不齐。
三、权限与审计工具分类
| 类别 |
工具 / 手段 |
用途 |
本书出处 |
| 命令策略 |
policy.py(allow / deny / 审批提示三层) |
事前判定 |
第 3.1 节 |
| 路径作用域 |
path_scope_ok(封 ~ 、封 ..、收敛绝对路径) |
参数级路径检查 |
第 3.1 节 |
| 审批门 |
三出口 + 回执完整展示 + 合并提示 |
灰区人类确认 |
第 3.1 节 |
| 审计落盘 |
auditor.py(JSONL + fsync + 哈希链) |
防篡改事件链 |
第 3.2 节 |
| 回放查询 |
replay_query.py(按 run_id 重建时间线) |
取证与复盘 |
第 3.2 节 |
| 指标统计 |
deny 率、审批通过率、超时率 |
门失效与摩擦监测 |
第 3.2 节 |
四、供应链与运行时工具分类
| 类别 |
工具 / 手段 |
用途 |
本书出处 |
| 安装面检查 |
find 清单 + 可执行位 + 钩子检索(写法示意) |
装前第一步 |
第 4.1 节 |
| 读取面检查 |
敏感路径与环境变量 grep(写法示意) |
装前第二步 |
第 4.1 节 |
| 预览检查 |
断网沙箱干跑 + replay 回看 |
装前第三步 |
第 4.1 节 |
| 差异比对 |
diff -ruN 新旧版本(写法示意) |
更新审查 |
第 4.1 节 |
| 版本锁定 |
skills.lock.json + lock_verify.py |
钉死进料身份与内容 |
第 4.2 节 |
| 行为信号 |
四类信号表(观测点 + 指纹 + 阈值) |
运行时识别 |
第 5.1 节 |
| 熔断 |
breaker.py(滑动窗口 + 动作分级) |
自动止损 |
第 5.1 节 |
| 红队回归 |
redteam_regression.py(四类用例 + CI 卡点) |
变更验证 |
第 6.1 节 |
五、自建构件清单(全书代码索引)
| 构件 |
语言 |
职责一句话 |
出处 |
| Dockerfile |
Dockerfile |
沙箱基础镜像:最小 Python 环境、非 root、空入口 |
第 2.1 节 |
| sandbox_run.py |
Python |
加固容器执行包装器:超时、审计、退出码 |
第 2.1 节 |
| gateway.py |
Python |
执行网关:deny 优先、白名单、路径作用域、截断 |
第 2.3 节 |
| policy.py |
Python |
第一版策略:精确优先、deny 兜底、灰区进审批 |
第 3.1 节 |
| auditor.py |
Python |
审计器:JSONL 追加、fsync、哈希链、verify |
第 3.2 节 |
| replay_query.py |
Python |
按 run_id 重建命令时间线 |
第 3.2 节 |
| lock_verify.py |
Python |
校验安装树与锁定文件一致 |
第 4.2 节 |
| breaker.py |
Python |
滑动窗口熔断器 |
第 5.1 节 |
| redteam_regression.py |
Python |
红队回归批量判分 |
第 6.1 节 |
💡 使用建议:以上构件全部是「最小可跑」的教学实现,生产化差距集中在边角(realpath 归一、认证与 TLS、远程审计转发、并发与配额)——各章「边界诚实说明」处已逐一点名,搬运前先读那几段。
六、生态现状与选型提醒
- 隔离层:三级谱系与工具面相对成熟,Docker、gVisor、Firecracker 均有官方文档与生产案例(第 2 章调研锚点),选型可放心对照官方资料。
- Agent 侧监控:行为信号与熔断目前多靠自建(本书 breaker.py 路线),通用可观测组件只提供数据面(指标、日志),信号归类与动作分级要自己写。
- Skill / MCP 审查:生态还年轻——静态扫描对恶意 Skill 漏检明显(社区资料,量级参考),锁定与流水线多从传统供应链工程平移(本书第 4 章路线);选工具时优先看它能否导出可锁定的清单与哈希,而不是看扫描器宣称的检出率。
- 提醒:本表不排名。任何「最佳工具」清单都会过时,判断框架(按攻击面选级别、按构件缺口选工具)不会。