From: "Günther Noack" <gnoack3000@gmail.com>
To: "Mickaël Salaün" <mic@digikod.net>
Cc: Paul Moore <paul@paul-moore.com>,
linux-security-module@vger.kernel.org,
Tingmao Wang <m@maowtm.org>,
Justin Suess <utilityemal77@gmail.com>,
Samasth Norway Ananda <samasth.norway.ananda@oracle.com>,
Matthieu Buffet <matthieu@buffet.re>,
Mikhail Ivanov <ivanov.mikhail1@huawei-partners.com>,
konstantin.meskhidze@huawei.com,
Demi Marie Obenour <demiobenour@gmail.com>,
Alyssa Ross <hi@alyssa.is>, Jann Horn <jannh@google.com>,
Tahera Fahimi <fahimitahera@gmail.com>,
Kuniyuki Iwashima <kuniyu@google.com>
Subject: Re: [RFC PATCH 0/5] landlock: Pathname-based UNIX connect() control
Date: Fri, 9 Jan 2026 15:41:33 +0100 [thread overview]
Message-ID: <20260109.d4c29e22f15f@gnoack.org> (raw)
In-Reply-To: <20260109.she1eg0Ohl4u@digikod.net>
On Fri, Jan 09, 2026 at 11:37:12AM +0100, Mickaël Salaün wrote:
> On Thu, Jan 01, 2026 at 02:40:57PM +0100, Günther Noack wrote:
> > ## Motivation
> >
> > Currently, landlocked processes can connect() to named UNIX sockets
> > through the BSD socket API described in unix(7), by invoking socket(2)
> > followed by connect(2) with a suitable struct sockname_un holding the
> > socket's filename. This can come as a surprise for users (e.g. in
> > [1]) and it can be used to escape a sandbox when a Unix service offers
> > command execution (some scenarios were listed by Tingmao Wang in [2]).
> >
> > These patches are built on Justin Suess's patch which adds the LSM
> > hook:
> > https://lore.kernel.org/all/20251231213314.2979118-1-utilityemal77@gmail.com/
>
> As Kuniyuki pointed out [1], we should handle both connect and send.
> This would be similar to the scoped restriction from Tingmao. I guess
> we'll need a similar hook for the send operation. Because there is no
> need to differenciate between connected and disconnected unix socket in
> a security policy, we should have one access right for both. Any
> proposal for its name? Something like TRANSMIT_UNIX or EMIT_UNIX?
>
> [1] https://lore.kernel.org/all/CAAVpQUAd==+Pw02+E6UC-qwaDNm7aFg+Q9YDbWzyniShAkAhFQ@mail.gmail.com/
Ah, thanks for pointing it out.
The restriction as implemented in this patch set already solves this
for all the three cases where a Unix socket file is looked up. I
believe that it is happening in all the right times (everytime when
the lookup has to happen).
The cases where the restriction applies are the following:
* unix_stream_connect - when calling connect() on a stream socket
* unix_dgram_connect - when calling connect() on a dgram socket
* unix_dgram_sendmsg - when calling sendmsg() on a dgram socket
(per-message lookup only)
You can find the code locations by looking for the call to
unix_find_other() in af_unix.c. (That function invokes either
unix_find_bsd() or the lookup for abstract Unix sockets.)
In the unix_dgram_sendmsg() case, the lookup is only performed if an
explicit sockaddr_un was provided together with the arguments to the
sendmsg(). (And sendto(2) also uses the same code path as
sendmsg(2).)
It is true that the current name for the access right is slightly
misleading. How about LANDLOCK_ACCESS_FS_UNIX_SEND? (Like
"transmit", but a bit closer to the naming of the sendmsg(2)
networking API?)
(I guess the other alternative would be to wire the socket type
information through to the unix_find_bsd() function and pass it
through. Would require a small change to the af_unix.c implementation,
but then we could tell apart LANDLOCK_ACCESS_FS_UNIX_STREAM_CONNECT
and LANDLOCK_ACCESS_FS_UNIX_DGRAM_SEND). WDYT?
–Günther
next prev parent reply other threads:[~2026-01-09 14:41 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-01-01 13:40 [RFC PATCH 0/5] landlock: Pathname-based UNIX connect() control Günther Noack
2026-01-01 13:40 ` [RFC PATCH 1/5] landlock/selftests: add a missing close(srv_fd) call Günther Noack
2026-01-09 10:41 ` Mickaël Salaün
2026-01-09 10:49 ` Mickaël Salaün
2026-01-10 10:37 ` Günther Noack
2026-01-12 16:04 ` Mickaël Salaün
2026-01-01 13:40 ` [RFC PATCH 2/5] landlock: Control connections to pathname UNIX sockets by path Günther Noack
2026-01-01 13:41 ` [RFC PATCH 3/5] samples/landlock: Add support for LANDLOCK_ACCESS_FS_CONNECT_UNIX Günther Noack
2026-01-01 19:30 ` Justin Suess
2026-01-01 22:07 ` Tingmao Wang
2026-01-01 22:11 ` Demi Marie Obenour
2026-01-01 22:19 ` Tingmao Wang
2026-01-01 22:36 ` Demi Marie Obenour
2026-01-01 22:38 ` Justin Suess
2026-01-01 22:39 ` Demi Marie Obenour
2026-01-02 9:53 ` Günther Noack
2026-01-08 12:12 ` Mickaël Salaün
2026-01-10 15:05 ` Günther Noack
2026-01-01 13:41 ` [RFC PATCH 4/5] landlock/selftests: test LANDLOCK_ACCESS_FS_CONNECT_UNIX Günther Noack
2026-01-01 13:41 ` [RFC PATCH 5/5] landlock: Document LANDLOCK_ACCESS_FS_UNIX_CONNECT Günther Noack
2026-01-01 22:14 ` [RFC PATCH 0/5] landlock: Pathname-based UNIX connect() control Demi Marie Obenour
2026-01-01 22:34 ` Tingmao Wang
2026-01-01 22:44 ` Demi Marie Obenour
2026-01-02 10:16 ` Günther Noack
2026-01-02 10:25 ` Günther Noack
2026-01-08 11:14 ` Mickaël Salaün
2026-01-02 10:27 ` Demi Marie Obenour
2026-01-02 10:50 ` Günther Noack
2026-01-02 18:37 ` Demi Marie Obenour
2026-01-08 11:14 ` Mickaël Salaün
2026-01-09 11:33 ` Demi Marie Obenour
2026-01-09 15:25 ` Mickaël Salaün
2026-01-09 21:02 ` Demi Marie Obenour
2026-01-12 16:05 ` Mickaël Salaün
2026-01-09 10:37 ` Mickaël Salaün
2026-01-09 14:41 ` Günther Noack [this message]
2026-01-09 15:20 ` Mickaël Salaün
2026-01-11 10:15 ` Günther Noack
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20260109.d4c29e22f15f@gnoack.org \
--to=gnoack3000@gmail.com \
--cc=demiobenour@gmail.com \
--cc=fahimitahera@gmail.com \
--cc=hi@alyssa.is \
--cc=ivanov.mikhail1@huawei-partners.com \
--cc=jannh@google.com \
--cc=konstantin.meskhidze@huawei.com \
--cc=kuniyu@google.com \
--cc=linux-security-module@vger.kernel.org \
--cc=m@maowtm.org \
--cc=matthieu@buffet.re \
--cc=mic@digikod.net \
--cc=paul@paul-moore.com \
--cc=samasth.norway.ananda@oracle.com \
--cc=utilityemal77@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.