Re: Landlock for sandboxing containers

Mickaël Salaün <[email protected]> Mon, 19 Jan 2026 12:12:56 +0100
Newsgroups dev.linux.lists.landlock
Message-ID <[email protected]>
On Fri, Jan 16, 2026 at 10:16:28PM +0000, Gerhard de Clercq wrote:
> Thanks Mickaël! Your feedback is much appreciated and should hopefully be enough to get me going now.
> 
> Just another quick question: how much value do you imagine this combination (i.e. mount namespaces + Landlock) adds over regular containers (i.e. just mount namespaces)? Your paper mentions that namespaces are "designed to create views of the kernel resources, but not to enforce access control policies". As a non-expert, it is not obvious to me how namespaces can fail in the enforcement aspect and it would be great if you could elaborate a bit more on this.

Namespaces are tools used to build containers.  An access control
doesn't change files layout but it (just) controls access to all
potential files.  For instance, with only namespaces, a process in a
container can still access files outside its mount namespaces e.g., with
passed file descriptors or unexpected (recursive) bind mounts.  It's not
the role of namespaces to prevent that, it's the role of access control
systems such as Landlock.  Another thing is that mount points can only
restrict broad operations (i.e. write and execution), not all kind of
operations that can be handled by access control systems (e.g., IOCTL,
file type creation, connection to UNIX socket...).

Namespaces are more complex, require more memory and resources compared
to Landlock domains/sandboxes.  Landlock is designed to be used by any
process, even nested in other sandboxes, and malicious processes, which
is not the case for namespaces.  And because file layout remain the
same, it's much easier to know what files we are dealing with.

In a nutshell both are complementary, but if you're looking for security
restrictions, you're looking for an access control system.

> 
> Thanks again for your support and for the awesome project!

Thanks!

> 
> Kind regards,
> Gerhard
> ________________________________________
> From: Mickaël Salaün <[email protected]>
> Sent: Friday, January 16, 2026 15:34
> To: Gerhard de Clercq <[email protected]>
> Cc: [email protected] <[email protected]>
> Subject: Re: Landlock for sandboxing containers
> 
> On Thu, Jan 15, 2026 at 09:39:49PM +0000, Gerhard de Clercq wrote:
> > Good day,
> 
> Hi!
> 
> >
> > I am investigating the feasibility of integrating Landlock into a container sandboxing utility that I am developing (https://github.com/Gerharddc/litterbox). Essentially Litterbox just makes it easier to setup sandboxed containers for use as reproducible development environments. The idea here is to shield a host system from anything malicious that might show up inside a development environment.
> >
> > Since Litterbox is built on Podman, my original plan was to use it's built-in support for SELinux policies in conjunction with Udica for policy generation. However, since learning about Landlock, it seems that it would be much easier to integrate and also more cross-platform (given that SELinux support is rare amongst distros).
> >
> > After reading https://landlock.io/talks/2024-06-06_landlock-article.pdf, Landlock seems very well suited for this purpose. The only thing I am still struggling to wrap my head around is how Landlock integrates with mount namespaces and the implication of that for containers. If I understand correctly, it is currently not possible to enter a mount namespace after entering a sandbox.
> 
> If the sandboxed process has the required capabilities (see setns(2)),
> it should be allowed to enter an existing namespace, but not to create
> new mounts.  Of course, such capabilities should be dropped as soon as
> they are not required.
> 
> 
> > Hence, I would somehow enter the sandbox only after entering the container.
> 
> This is indeed the best option: setup the namespaces/cgroups and then
> sandbox with Landlock (and seccomp for a more complete isolation).
> 
> > Is this understanding correct? If so, I suspect I would need to extend Podman itself to do so properly since relying on code inside the container to enter the sandbox on startup seems like something that could easily be attacked.
> 
> I would suggest to first wrap the build command with a sandboxer tool
> (Island or others, see https://landlock.io/integrations/) and make
> Podman launch this wrapper (directly or through an init service).  That
> would allow you to quickly iterate and validate that it works as
> expected.  If this sandboxer tool and the related configuration cannot
> be tampered from within the container, it should be good.
> 
> A cleaner but more complex approach would be to patch Podman to do it
> more generically and without a wrapper.
> 
> >
> > Any additional thoughts or suggestions on this endeavour would be greatly appreciated!
> >
> > Kind regards,
> > Gerhard de Clercq
>