Re: [bitbake-devel] [PATCH [RFC] 1/2] utils: Add landlock_restrict_network function
Richard Purdie <[email protected]> Sat, 13 Jun 2026 15:26:29 +0100
| Newsgroups | org.openembedded.lists.bitbake-devel |
|---|---|
| Message-ID | <4c36de09175dced8cd0ede2b52208671b30695a0.camel@linuxfoundation.org> |
On Sat, 2026-06-13 at 13:52 +0200, Alexander Kanavin via lists.openembedded.org wrote: > On Fri, 12 Jun 2026 at 14:01, David Nyström via > lists.openembedded.org > <[email protected]> wrote: > > +def landlock_restrict_network(): > > + """Block TCP bind/connect using Landlock LSM (ABI v4+, kernel > > 6.7+). > > + Gracefully skipped on older kernels. Stacks with > > disable_network().""" > > + > > + NR_CREATE = 444 # landlock_create_ruleset > > + NR_SELF = 446 # landlock_restrict_self > > + NET_TCP = 0x3 # BIND_TCP | CONNECT_TCP > > + > > + libc = ctypes.CDLL('libc.so.6') > > + > > + abi = libc.syscall(NR_CREATE, 0, 0, 1) > > + if abi < 4: > > + return False > > + > > + attr = struct.pack("QQ", 0, NET_TCP) > > + buf = ctypes.create_string_buffer(attr) > > + fd = libc.syscall(NR_CREATE, buf, len(attr), 0) > > + if fd < 0: > > + return False > > + > > + libc.prctl(38, 1, 0, 0, 0) # PR_SET_NO_NEW_PRIVS > > + r = libc.syscall(NR_SELF, fd, 0) > > + os.close(fd) > > + return r == 0 > > Far too many magic numbers. I would really want to do this with an > API. > > This also needs some kind of test, e.g. that the function indeed has > the desired effect. Unfortunately, to use tech like this, we do end up needing to do something like that and utils.py already has quite a bit of it. The plus side is that the kernel is really good about maintaining these APIs so the numbers are unlikely to change. I wouldn't take something like this unless there was a really good case for using it. Network isolation in more builds probably is a strong enough use case... Cheers, Richard