[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240728002602.3198398-1-ivanov.mikhail1@huawei-partners.com>
Date: Sun, 28 Jul 2024 08:25:53 +0800
From: Mikhail Ivanov <ivanov.mikhail1@...wei-partners.com>
To: <mic@...ikod.net>
CC: <willemdebruijn.kernel@...il.com>, <gnoack3000@...il.com>,
<linux-security-module@...r.kernel.org>, <netdev@...r.kernel.org>,
<netfilter-devel@...r.kernel.org>, <yusongping@...wei.com>,
<artem.kuzin@...wei.com>, <konstantin.meskhidze@...wei.com>
Subject: [RFC PATCH v1 0/9] Support TCP listen access-control
Hello! This is v1 RFC patch dedicated to restriction of listening sockets.
It is based on the landlock's mic-next branch on top of v6.10 kernel
version.
Description
===========
LANDLOCK_ACCESS_NET_BIND_TCP is useful to limit the scope of "bindable"
ports to forbid a malicious sandboxed process to impersonate a legitimate
server process. However, bind(2) might be used by (TCP) clients to set the
source port to a (legitimate) value. Controlling the ports that can be
used for listening would allow (TCP) clients to explicitly bind to ports
that are forbidden for listening.
Such control is implemented with a new LANDLOCK_ACCESS_NET_LISTEN_TCP
access right that restricts listening on undesired ports with listen(2).
It's worth noticing that this access right doesn't affect changing
backlog value using listen(2) on already listening socket. For this case
test ipv4_tcp.double_listen is provided.
Closes: https://github.com/landlock-lsm/linux/issues/15
Code coverage
=============
Code coverage(gcov) report with the launch of all the landlock selftests:
* security/landlock:
lines......: 93.4% (759 of 813 lines)
functions..: 95.3% (101 of 106 functions)
* security/landlock/net.c:
lines......: 100% (77 of 77 lines)
functions..: 100% (9 of 9 functions)
Mikhail Ivanov (9):
landlock: Refactor current_check_access_socket() access right check
landlock: Support TCP listen access-control
selftests/landlock: Support LANDLOCK_ACCESS_NET_LISTEN_TCP
selftests/landlock: Test listening restriction
selftests/landlock: Test listen on connected socket
selftests/landlock: Test listening without explicit bind restriction
selftests/landlock: Test listen on ULP socket without clone method
selftests/landlock: Test changing socket backlog with listen(2)
samples/landlock: Support LANDLOCK_ACCESS_NET_LISTEN
include/uapi/linux/landlock.h | 23 +-
samples/landlock/sandboxer.c | 31 +-
security/landlock/limits.h | 2 +-
security/landlock/net.c | 131 +++++-
security/landlock/syscalls.c | 2 +-
tools/testing/selftests/landlock/base_test.c | 2 +-
tools/testing/selftests/landlock/config | 1 +
tools/testing/selftests/landlock/net_test.c | 448 +++++++++++++++----
8 files changed, 519 insertions(+), 121 deletions(-)
--
2.34.1
Powered by blists - more mailing lists