multikernel/sandlock

The lightest AI sandbox. A process-based sandbox for Linux, no container, no VM, no privilege, no prompt injection

解决的问题

Sandlock 是一个轻量级的 Linux 进程沙箱,无需 root 权限、cgroups 或容器镜像即可为不可信代码提供严格的隔离。它填补了重量级虚拟机/容器与完全不受保护的执行环境之间的空白,允许用户在对文件系统访问、网络连接和系统资源进行精确控制的情况下运行程序。

工作原理

Sandlock 使用 Rust 编写,并结合使用 Linux 内核功能来强制执行安全边界:

  • Landlock:用于文件系统、网络和 IPC 隔离。
  • seccomp-bpf:用于 syscall 过滤。
  • seccomp user notification:允许监督进程实时拦截并处理特定的 syscall,以实施资源限制、虚拟化 /proc 并实现写时复制 (COW) 文件系统。
  • COW Filesystem:拦截对工作目录的写入操作并将其暂存在上层目录中,确保在更改提交之前原始文件受到保护。
  • Transparent Proxy:实现 HTTP 级 ACL(方法、主机和路径),并可以将凭据或 CA 证书注入 HTTPS 流量。

适用对象

  • 需要安全运行不可信代码(例如 AI 代理或第三方脚本)的开发人员。
  • 与容器或 MicroVM 相比,希望获得快速启动时间(约 5ms)的用户。
  • 需要在不管理复杂的容器运行时或 root 访问权限的情况下隔离进程的系统管理员。

亮点

  • 无需 Root 权限:完全在没有 root 权限或 cgroups 的情况下运行。
  • 细粒度的网络控制:支持 IP 白名单/黑名单、特定端口规则和 HTTP 级 ACL。
  • 资源限制:通过 seccomp 通知强制执行内存和进程数量限制。
  • 动态策略:具有 policy_fn 功能,允许在运行时检查 syscall 事件以即时调整权限。
  • 灵活的集成:提供 CLI、Rust 库以及 Python 和 Go 的 SDK。
  • OCI 兼容性:包含用于与 containerd、CRI-O 和 Kubernetes 配合使用的 OCI 运行时 shim。