Skip to content

Commit 854277e

Browse files
sm1ling-knightl0kod
authored andcommitted
landlock: Fix non-TCP sockets restriction
Use sk_is_tcp() to check if socket is TCP in bind(2) and connect(2) hooks. SMC, MPTCP, SCTP protocols are currently restricted by TCP access rights. The purpose of TCP access rights is to provide control over ports that can be used by userland to establish a TCP connection. Therefore, it is incorrect to deny bind(2) and connect(2) requests for a socket of another protocol. However, SMC, MPTCP and RDS implementations use TCP internal sockets to establish communication or even to exchange packets over a TCP connection [1]. Landlock rules that configure bind(2) and connect(2) usage for TCP sockets should not cover requests for sockets of such protocols. These protocols have different set of security issues and security properties, therefore, it is necessary to provide the userland with the ability to distinguish between them (eg. [2]). Control over TCP connection used by other protocols can be achieved with upcoming support of socket creation control [3]. [1] https://lore.kernel.org/all/62336067-18c2-3493-d0ec-6dd6a6d3a1b5@huawei-partners.com/ [2] https://lore.kernel.org/all/20241204.fahVio7eicim@digikod.net/ [3] https://lore.kernel.org/all/20240904104824.1844082-1-ivanov.mikhail1@huawei-partners.com/ Closes: landlock-lsm#40 Fixes: fff69fb ("landlock: Support network rules with TCP bind and connect") Signed-off-by: Mikhail Ivanov <ivanov.mikhail1@huawei-partners.com> Link: https://lore.kernel.org/r/20250205093651.1424339-2-ivanov.mikhail1@huawei-partners.com [mic: Format commit message to 72 columns] Signed-off-by: Mickaël Salaün <mic@digikod.net>
1 parent 192b7ff commit 854277e

File tree

1 file changed

+1
-2
lines changed

1 file changed

+1
-2
lines changed

security/landlock/net.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,7 @@ static int current_check_access_socket(struct socket *const sock,
6363
if (WARN_ON_ONCE(dom->num_layers < 1))
6464
return -EACCES;
6565

66-
/* Checks if it's a (potential) TCP socket. */
67-
if (sock->type != SOCK_STREAM)
66+
if (!sk_is_tcp(sock->sk))
6867
return 0;
6968

7069
/* Checks for minimal header length to safely read sa_family. */

0 commit comments

Comments
 (0)