Skip to content

Latest commit

 

History

History
65 lines (53 loc) · 3.67 KB

security.md

File metadata and controls

65 lines (53 loc) · 3.67 KB

Security

Defense-in-depth security layer that sandboxes the shim process, inspired by Firecracker's jailer. Provides OS-level isolation on top of hardware virtualization.

Key responsibilities:

  • OS-level process isolation for shim
  • Syscall filtering and sandboxing
  • Resource limit enforcement
  • Environment sanitization

Security layers:

Linux:

  • Namespace isolation (mount, PID, network)
  • Chroot/pivot_root for filesystem isolation
  • Seccomp BPF for syscall filtering
  • Privilege dropping (unprivileged user)
  • cgroups v2 for resource limits

macOS:

  • sandbox-exec (Seatbelt) for kernel-enforced sandboxing
  • rlimits for resource constraints

Architecture:

┌─────────────────────────────────────────────────────────────────────┐
│                              HOST OS                                │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │                      JAILER BOUNDARY                          │  │
│  │  ┌─────────────────────────────────────────────────────────┐  │  │
│  │  │                  SHIM PROCESS (sandboxed)               │  │  │
│  │  │  ┌───────────────────────────────────────────────────┐  │  │  │
│  │  │  │              VM (libkrun/KVM)                     │  │  │  │
│  │  │  │  ┌─────────────────────────────────────────────┐  │  │  │  │
│  │  │  │  │            GUEST (untrusted)                │  │  │  │  │
│  │  │  │  └─────────────────────────────────────────────┘  │  │  │  │
│  │  │  └───────────────────────────────────────────────────┘  │  │  │
│  │  └─────────────────────────────────────────────────────────┘  │  │
│  └───────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘

Configuration:

use boxlite::{AdvancedBoxOptions, BoxOptions, SecurityOptions};

// Most users don't need to configure security — defaults prioritize compatibility
// For advanced users who need maximum isolation:
let opts = BoxOptions {
    advanced: AdvancedBoxOptions {
        security: SecurityOptions::enabled(),
        ..Default::default()
    },
    ..Default::default()
};

The complete threat model is in THREAT_MODEL.md. How the jailer grants guest networking and host access is in Jailer network permissions.