[Cells for NetBSD] Re: Experimental secmodel_jail prototype for NetBSD (early kernel work)

Matthias Petermann <[email protected]> Mon, 9 Mar 2026 18:15:34 +0100
Newsgroups gmane.os.netbsd.general,gmane.os.netbsd.devel.kernel
Message-ID <[email protected]>
Hello all,

a small follow-up to my previous mail: since yesterday the project has a 
new name.

Based on community feedback and a small naming poll, the prototype will 
move forward under the name “Cells for NetBSD”. The goal and 
architecture remain unchanged — the rename mainly helps to avoid 
confusion with FreeBSD Jails and to emphasize that this is intended as a 
NetBSD-native approach.

The project page has moved accordingly:
	
	https://netbsd-cells.petermann-digital.de/

The site now also contains some additional background on the project and 
a small FAQ addressing a few of the questions that came up in recent 
discussions.

Questions, feedback, or suggestions are always welcome - either here on 
the list or directly.

Best regards
Matthias

On 3/1/26 10:33, Matthias Petermann wrote:
> Hello all,
> 
> I was recently asked why nothing about my current jail prototype has 
> appeared on the NetBSD mailing lists yet. I would like to correct that 
> and briefly share the current state here.
> 
> I have published an experimental prototype tentatively called “Jails for 
> NetBSD”. The idea is to explore a kernel-integrated, lightweight process 
> isolation model built on top of NetBSD’s existing kauth/secmodel 
> infrastructure. The goal is deliberately modest: something positioned 
> between chroot-style containment and full virtualization, with clear 
> kernel-level identity boundaries and a deterministic resource 
> association per “jail”.
> 
> Link: https://netbsd-jails.petermann-digital.de/
> 
> This work explicitly understands itself as a continuation or re- 
> interpretation of earlier isolation efforts in the NetBSD ecosystem:
> 
> - GAOLS (P3A, 2008): jail-like process isolation via kauth(9) hooks — 
> research prototype, never integrated.
> 
> - MULT (P5A, 2008): resource isolation by instantiating full kernel 
> subsystems — highly invasive research prototype.
> 
> - netbsd-sandbox: userland sandboxing via chroot, secmodel_sandbox, 
> rlimits, capabilities, Lua policies — hardening tool, not a jail model.
> 
> - Systrace (NetBSD 2.0) / sysjail: syscall-interposition-based process 
> isolation — deprecated and removed.
> 
> Personally, I spent quite some time experimenting with systrace around 
> the NetBSD 2.0 era and was already interested back then in something 
> closer to jail-style isolation. When that code disappeared from the 
> kernel, the topic effectively faded for me as well. For workloads where 
> stronger isolation was required, my pragmatic solution became Xen (with 
> corresponding tooling in dom0), and in my professional day job Linux 
> namespaces and cgroups — and the isolation stacks built on top of them — 
> are naturally common.
> 
> Last summer, after being unexpectedly out of commission for a few weeks, 
> I found myself with time to read kernel code more systematically, 
> including the earlier NetBSD isolation approaches mentioned above. That 
> is when the idea resurfaced and gradually matured into the current 
> prototype.
> 
> Technically, the current implementation introduces a jail identity 
> attached to processes and enforces isolation decisions via secmodel/ 
> kauth hooks. There are also early experiments around per-jail resource 
> accounting and limits (CPU, memory, process count) and a small userland 
> control layer. The focus so far has been on identifying enforcement 
> points that are conceptually clean and compatible with NetBSD’s design, 
> rather than layering on features.
> 
> This is very much experimental. In particular, resource enforcement in 
> hot paths and deeper subsystem interactions (scheduler, UVM, networking) 
> have shown that naive approaches quickly become problematic. I am 
> currently scaling back some of the more invasive parts to converge on a 
> smaller, more reviewable core before exploring further extensions.
> 
> For context: this is my first serious work inside the NetBSD kernel. I 
> am not an experienced NetBSD kernel developer. To better understand 
> complex code paths and trade-offs, I use AI-based tools for analysis and 
> occasionally for draft implementations. However, everything that goes 
> into my working tree is manually reviewed, adjusted, or discarded by me. 
> I only integrate changes that I believe are technically sound and that I 
> can explain and defend, and I am working towards a clean and auditable 
> tree structure.
> 
> Feedback, design criticism, and pointers to prior art within NetBSD that 
> I may have overlooked are very welcome. My primary goal at this stage is 
> to validate (or invalidate) the architectural direction before going any 
> further.
> 
> Best regards,
> Matthias
> 
>