multikernel/sandlock

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

해결하는 문제

Sandlock은 Linux용 경량 프로세스 샌드박스로, 루트 권한, cgroups 또는 컨테이너 이미지 없이도 신뢰할 수 없는 코드에 대해 엄격한 격리를 제공합니다. 이는 무거운 가상 머신/컨테이너와 완전히 보호되지 않은 실행 환경 사이의 간극을 메워, 사용자가 파일 시스템 액세스, 네트워크 연결 및 시스템 리소스를 정밀하게 제어하며 프로그램을 실행할 수 있도록 합니다.

작동 원리

Sandlock은 Rust로 작성되었으며 Linux 커널 기능을 조합하여 보안 경계를 강제합니다:

  • Landlock: 파일 시스템, 네트워크 및 IPC 격리에 사용됩니다.
  • seccomp-bpf: syscall 필터링에 사용됩니다.
  • seccomp user notification: 감독 프로세스가 특정 syscall을 실시간으로 가로채고 처리하여 리소스 제한을 적용하고, /proc를 가상화하며, Copy-on-Write (COW) 파일 시스템을 구현할 수 있도록 합니다.
  • COW Filesystem: 작업 디렉토리에 대한 쓰기를 가로채서 상위 디렉토리에 스테이징하여, 변경 사항이 커밋될 때까지 원본 파일이 보호되도록 합니다.
  • Transparent Proxy: HTTP 수준의 ACL(메서드, 호스트 및 경로)을 구현하며 HTTPS 트래픽에 인증 정보나 CA 인증서를 주입할 수 있습니다.

대상 사용자

  • 신뢰할 수 없는 코드(예: AI 에이전트 또는 서드파티 스크립트)를 안전하게 실행해야 하는 개발자.
  • 컨테이너 또는 MicroVM에 비해 빠른 시작 시간(~5ms)을 원하는 사용자.
  • 복잡한 컨테이너 런타임이나 루트 권한을 관리하지 않고 프로세스를 격리해야 하는 시스템 관리자.

주요 특징

  • 루트 권한 불필요: 루트 권한이나 cgroups 없이 완전히 작동합니다.
  • 세밀한 네트워크 제어: IP 허용/차단 목록, 포트별 규칙 및 HTTP 수준의 ACL을 지원합니다.
  • 리소스 제한: seccomp 알림을 통해 메모리 및 프로세스 수 제한을 강제합니다.
  • 동적 정책: 런타임에 syscall 이벤트를 검사하여 권한을 즉시 조정할 수 있는 policy_fn 기능을 제공합니다.
  • 유연한 통합: CLI, Rust 라이브러리 및 Python 및 Go용 SDK를 제공합니다.
  • OCI 호환성: containerd, CRI-O 및 Kubernetes에서 사용할 수 있는 OCI 런타임 shim이 포함되어 있습니다.