外观
Sandlock:以非特权 Linux 原语约束 Agent 生成代码
摘要
Sandlock 面向开发者工作站上由 Agent 生成、下载或调用的未知代码。它将与输入无关的静态策略编译为 Landlock 和 seccomp-bpf 内核规则,再用较窄的 seccomp-notification 监督器处理依赖运行时上下文的决定与可逆效果;目标是无需 root、cgroups、镜像或强制 namespace 也能限制文件、网络、IPC、系统调用和 execve 参数。
作者报告启动开销约 5 ms,并在其工作站测得 Redis 吞吐接近裸机;项目公开代码。性能结论来自作者设备与工作负载,且 Linux 原语、内核版本、策略质量和 supervisor 本身都会决定实际隔离强度,不能当作通用沙箱保证。
核心创新与差异
现有 Agent runtime 研究多把 capability 或 Skill 规则放在框架执行层。Sandlock 的独立价值是将工作站的未知进程下沉到内核可执行的非特权限制,同时为 HTTP 访问、execve 检查和写入虚拟化保留受控的动态决策面。它是运行时隔离组件,而非对模型输出安全性的替代。
威胁模型与攻击链
Agent 可能生成危险 shell 命令、取得不可信脚本或加载未知插件;攻击者希望进程读取工作站敏感文件、联网、与其他进程通信或扩展执行范围。攻击者不被假定能绕过内核或获得 root。
- Agent 把待执行代码交给受控启动器;
- 静态规则限制固定文件、网络、IPC 与 syscall 集;
- 需要上下文的行为请求窄监督器判定;
- 被拒绝操作不应触及宿主资源,可逆写入留在隔离工作区。
实验设计与实际过程
作者描述 Landlock、seccomp-bpf 和 seccomp-notification 的分工,并测量启动、Redis 和 pipeline 场景。公开仓库提供实现,但本站未构建或在本机执行未知代码;本文不将演示吞吐外推为对恶意负载、容器逃逸或内核漏洞的独立验证。
关键结果与实际影响
- 作者报告 Sandlock 在其工作站的启动开销约为 5 ms,Redis 吞吐在测量噪声内接近裸机。
- 静态规则和动态监督器可同时表达文件、网络、IPC、系统调用、HTTP ACL、
execve参数检查和可逆文件效果。 - 这些结果说明“Agent 运行代码”可有低权限的确定性执行点;它们不证明策略默认正确,也不消除模型提出危险操作的风险。
防护措施与验证方法
按任务生成最小文件和网络策略,在 CI/本地夹具中测试允许与拒绝两类 syscall、路径解析、符号链接、DNS、HTTP 重定向和子进程继承。将策略、内核、Sandlock 版本及 supervisor 日志一起保留;高风险任务仍应使用独立工作区、不可路由测试终端和人工确认。
局限与待验证问题
论文为 9 页系统设计与作者基准,未给出跨发行版、恶意内核攻击或长期开发工作流的独立复现。Landlock/seccomp 的能力依赖内核和配置;监督器、策略生成器和上游 Agent 都是需要继续审计的可信计算基。