SandlockはLandlockとseccompを組み合わせた軽量プロセスsandbox
Sandlockは、2026年に活発に開発されているLinux向けのprocess-based sandboxである。containerやVMを必須とせず、主にLandlock、seccomp-BPF、seccomp user notificationを組み合わせる。
プロジェクトが掲げる特徴は、root不要、cgroup不要、container image不要で、既存processを軽量に閉じ込めることにある。filesystemとnetwork/IPCの制約はLandlock、system call filteringはseccomp-BPF、より動的な処理やvirtualizationはuser notification側のsupervisorが担う。
READMEでは例えば次のような機能が挙げられている。
- filesystem read/write allowlist
- COW filesystem
- outbound network allowlist
- HTTP method/host/path ACL
- process数・memory量の制限
/procvirtualization- port remapping
- OCI runtime shim
- Python/Go SDK
ここで重要なのは、seccomp user notificationは「ポリシー判定器」ではない に書いた通り、user notification単体をsecurity policy判定器として扱うべきではない点である。Sandlock自身もpath-based access controlはLandlock側に置き、user notificationで扱う情報についてTOCTOU対策を実装していると説明している。
また、これは別guest kernelを持つsandboxではない。host kernelは共有される。そのため、軽量さと引き換えに、VM型の Kata Containers 4.0はOCI UXのままVM境界を使う や Firecracker snapshotは状態を持つsandbox再開に向く とは異なるthreat modelになる。
プロジェクトのREADMEには起動時間などの比較値も掲載されているが、これらはプロジェクト自身の測定値として扱うべきで、独立したbenchmarkと混同しない方がよい。
実装上の面白さは、Landlockを「静的でkernel-enforcedな境界」、seccomp user notificationを「supervisorによる代理実行・virtualization」の層として分離している点にある。Landlockの進化については Landlockは非特権プロセス自身が権限を削るLSM、sandbox方式の全体像は Linuxサンドボックスの隔離境界をどう捉えるか を参照。