Skip to content

Add research/0002: virtualisation and containment prior art - #15

Merged
MatejGomboc merged 1 commit into
mainfrom
docs/research-0002-virt-containment
Aug 1, 2026
Merged

Add research/0002: virtualisation and containment prior art#15
MatejGomboc merged 1 commit into
mainfrom
docs/research-0002-virt-containment

Conversation

@MatejGomboc

Copy link
Copy Markdown
Member

What

The second prior-art review β€” the goldmine you called: what virtualisation and containerisation learned under production fire, mined for Setonix. Six research sweeps (four planned domains + two gaps a completeness critic found by checking coverage against all twenty obligations), 69 lessons, primary sources only β€” papers, official design docs, CVE analyses, maintainer postmortems. Every lesson carries a verdict (adopt / adapt / reject / validates-existing) and names the pillar, obligation, or RFC it feeds.

Headline findings

16 lessons are validation with production numbers β€” the container era's survivors each rebuilt part of Setonix's architecture as a retrofit, at retrofit prices: gVisor (a second kernel in Go to get a narrow interface), Kata (a VM per pod β€” the industry's confession that shared-kernel isolation failed), the runc maintainer's ~14 path-string CVEs ending at handle-not-path, Kubernetes re-deriving capability-shaped grants (KEP-1205's object-bound tokens are RFC-0003 Β§8's generation check, reinvented).

The decision-forcing findings:

  • Store (RFC-0001): the naming scheme β€” Merkle root over fixed-size chunks β€” must be decided before the store is built; ostree's composefs retrofit shows naming is the decision that cannot be changed cheaply. Resolves open questions 1–3 (signed compound closure root, detached signatures, references-graph GC).
  • Broker RFC: a decade of confused-deputy CVEs (CVE-2018-1002105, CVE-2020-8559, RBAC escalate, Trail of Bits audit) distilled into design rules + three proposed obligations: O-21 mediation auditability, O-22 broker compromise containment, O-23 fail-closed mediation. Plus: the bootstrap grant graph must be provably acyclic, and system:masters-style bootstrap superusers are rejected by name.
  • Scheme registry (pillar 5 / O-11): Capsicum + openat2 arrive as the specification β€” resolve once to a held capability, bounded during resolution, no alias nodes β€” expressible entirely within RFC-0003's existing calculus (O-11 falls out of O-2).
  • Scheduler/RFC-0004: seL4 MCS ships with a named budget-expiry-inside-server hole; proposed RFC-0004 amendment adopts the budget-threshold prevention + defined recovery, beside the withheld-reply denial it already names.
  • Rejected by name: eBPF-style in-kernel extensibility (an unreviewable trusted compiler in ring 0), command-keyed build caches (poisonable), bootstrap superusers.

Flagged for the maintainer, not taken: three proposed Β§3 graves (drivers pulled into the kernel for the fast path β€” vhost-net; compiled-in unused device paths β€” VENOM; the catch-all right β€” CAP_SYS_ADMIN). Constitution text is yours; wording ready on request.

Method note

Four domain researchers ran in parallel; a completeness critic then checked the combined lessons against O-1…O-20 and found exactly two load-bearing holes β€” O-10 was the only unfed obligation, pillar 5 the thinnest β€” which two follow-up sweeps closed. Logged in docs/CHANGELOG.md.

Follow-ups this proposes (each its own future PR, per Β§5.3)

  1. Threat-model amendments (O-21…O-23, TUF attack obligations, A5's userspace half, spawn inheritance)
  2. RFC-0004 amendment (budget-expiry protocol)
  3. Constitution Β§3 graves β€” your verdict
  4. The bootstrap/initial-object-set RFC now has substantial input (acyclic grant graph, no superuser, single-use detectable first-grant delivery)

Markdown and British-spelling gates clean (66 files).

πŸ€– Generated with Claude Code

The second prior-art review, on the maintainer's initiative: what the
virtualisation and containerisation fields learned under production
fire, mined for Setonix. Six research sweeps - hypervisors/microVMs,
container runtimes and sandboxes, images and supply chain, resource
control at scale, plus two gaps a completeness critic identified
against the twenty obligations: control-plane confused-deputy failures
(the only unfed obligation, O-10) and the path-resolution escape corpus
(the thinnest pillar, schemes). 69 lessons, primary sources only, every
lesson mapped to a pillar, an obligation by number, or the RFC it feeds.

Sixteen lessons are production-quantified validation of decisions
already made: the container era's survivors - gVisor, Kata, Firecracker,
WASI, pKVM - each rebuilt part of this architecture as a retrofit, at
retrofit prices. The decision-forcing findings: the store's Merkle
naming must be fixed before the store is built (resolving RFC-0001's
open questions 1-3); the broker inherits a decade of confused-deputy
CVEs as design rules plus three proposed obligations (O-21 mediation
auditability, O-22 broker compromise containment, O-23 fail-closed
mediation); the scheme registry's resolution semantics arrive
essentially specified by Capsicum and openat2, expressible entirely
within O-2's calculus; and seL4 MCS's budget-expiry hole yields a
proposed RFC-0004 amendment.

Rejected by name: eBPF-style in-kernel extensibility, command-keyed
build caches, a bootstrap superuser. Three graves proposed for the
constitution's list - flagged for the maintainer, not taken.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@MatejGomboc
MatejGomboc merged commit 319cab3 into main Aug 1, 2026
6 checks passed
@MatejGomboc
MatejGomboc deleted the docs/research-0002-virt-containment branch August 1, 2026 09:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant