Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

ADR 0028: Landlock ABI Probe and Receipt Recording

Status: Accepted Date: 2026-07-20 Issue: #466

Context

Spec §27.3 requires Linux Landlock for contained execution. Current kernels expose an expanding Landlock UAPI, and receipt consumers need to know which ABI the host reported when untrusted code executed. Issue #466 tracks adding that observable signal without changing enforcement semantics in the same step.

Landlock ABI versions relevant to Arbitraitor:

ABIKernelAdded controls
v15.13Initial filesystem restrictions
v25.19File modes isolation
v36.2Truncate / ioctl restrictions
v46.7TCP connect/bind
v56.10IOCTL device
v66.12Signal scope + abstract UNIX socket
v76.15Audit log
v87.0-rcLANDLOCK_RESTRICT_SELF_TSYNC
v96.13+ downstream patchesRESOLVE_UNIX
v106.16UDP connect/bind

Decision

Arbitraitor probes the running kernel at runtime with landlock_create_ruleset(NULL, 0, LANDLOCK_CREATE_RULESET_VERSION). The return value is represented as LandlockAbiVersion and may be copied into contained-execution effective-control receipts when filesystem isolation is backed by Landlock.

This ADR is record-only. It does not set minimum acceptable ABI versions, change verdict downgrades, or claim TCP/UDP/signal/audit enforcement. Current enforcement remains limited to the filesystem access rights already installed by the sandbox crate; ABI v4+ semantics are recorded only until a follow-up policy matrix defines and tests sub-control behavior.

Consequences

  • Receipt consumers can audit whether a contained run observed Landlock v1-v10 or a future non-zero ABI.
  • Future Landlock controls can be represented before Arbitraitor claims their enforcement semantics.
  • Linux hosts without Landlock report no ABI, forcing callers to treat filesystem isolation as unavailable when containment is mandatory.
  • macOS and Windows report no Landlock ABI; their platform strategies remain governed by their dedicated ADRs.
  • A follow-up ADR or issue must define the Landlock ABI policy matrix before Arbitraitor uses ABI v4+ features for assurance-level decisions.

Alternatives considered

  • Kernel release parsing. Rejected because backports and downstream patches make release strings less authoritative than the Landlock UAPI probe.
  • Compile-time ABI constants only. Rejected because the host kernel, not the build machine, determines the effective sandbox controls.
  • Failing on ABI below v6 unconditionally. Rejected for this change because issue #466 only introduces probing and receipt exposure; minimum-version policy belongs in the planned matrix.

References

  • Linux landlock_create_ruleset(2)
  • Spec §27.3, §27.7
  • ADR-0007: Assurance levels model
  • ADR-0021: Landlock filesystem isolation for subprocess plugins