CVE-2025-38181 Information
Description
In the Linux kernel the following vulnerability has been resolved:
calipso: Fix null-ptr-deref in calipso_req_setdelattr().
syzkaller reported a null-ptr-deref in sock_omalloc() while allocating a CALIPSO option. [0]
The NULL is of struct sock which was fetched by sk_to_full_sk() in calipso_req_setattr().
Since commit a1a5344ddbe8 ( cp: avoid two atomic ops for syncookies) reqsk->rsk_listener could be NULL when SYN Cookie is returned to its client as hinted by the leading SYN Cookie log.
Here are 3 options to fix the bug:
-
Return 0 in calipso_req_setattr()
-
Return an error in calipso_req_setattr()
-
Alaways set rsk_listener
-
is no go as it bypasses LSM but 2) effectively disables SYN Cookie for CALIPSO. 3) is also no go as there have been many efforts to reduce atomic ops and make TCP robust against DDoS. See also commit 3b24d854cb35 ( cp/dccp: do not touch listener sk_refcnt under synflood).
As of the blamed commit SYN Cookie already did not need refcounting and no one has stumbled on the bug for 9 years so no CALIPSO user will care about SYN Cookie.
Let’s return an error in calipso_req_setattr() and calipso_req_delattr() in the SYN Cookie case.
This can be reproduced by [1] on Fedora and now connect() of nc times out.
[0]:
TCP: request_sock_TCPv6: Possible SYN flooding on port [::]:20002. Sending cookies.
Oops: general protection fault probably for non-canonical address 0xdffffc0000000006: 0000 [1] PREEMPT SMP KASAN NOPTI
KASAN: null-ptr-deref in range [0x0000000000000030-0x0000000000000037]
CPU: 3 UID: 0 PID: 12262 Comm: syz.1.2611 Not tainted 6.14.0 2
Hardware name: QEMU Standard PC (i440FX + PIIX 1996) BIOS rel-1.16.3-0-ga6ed6b701f0a-prebuilt.qemu.org 04/01/2014
RIP: 0010:read_pnet include/net/net_namespace.h:406 [inline]
RIP: 0010:sock_net include/net/sock.h:655 [inline]
RIP: 0010:sock_kmalloc+0x35/0x170 net/core/sock.c:2806
Code: 89 d5 41 54 55 89 f5 53 48 89 fb e8 25 e3 c6 fd e8 f0 91 e3 00 48 8d 7b 30 48 b8 00 00 00 00 00 fc ff df 48 89 fa 48 c1 ea 03 <80> 3c 02 00 0f 85 26 01 00 00 48 b8 00 00 00 00 00 fc ff df 4c 8b
RSP: 0018:ffff88811af89038 EFLAGS: 00010216
RAX: dffffc0000000000 RBX: 0000000000000000 RCX: ffff888105266400
RDX: 0000000000000006 RSI: ffff88800c890000 RDI: 0000000000000030
RBP: 0000000000000050 R08: 0000000000000000 R09: ffff88810526640e
R10: ffffed1020a4cc81 R11: ffff88810526640f R12: 0000000000000000
R13: 0000000000000820 R14: ffff888105266400 R15: 0000000000000050
FS: 00007f0653a07640(0000) GS:ffff88811af80000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 00007f863ba096f4 CR3: 00000000163c0005 CR4: 0000000000770ef0
PKRU: 80000000
Call Trace:
ipv6_renew_options+0x279/0x950 net/ipv6/exthdrs.c:1288
calipso_req_setattr+0x181/0x340 net/ipv6/calipso.c:1204
calipso_req_setattr+0x56/0x80 net/netlabel/netlabel_calipso.c:597
netlbl_req_setattr+0x18a/0x440 net/netlabel/netlabel_kapi.c:1249
selinux_netlbl_inet_conn_request+0x1fb/0x320 security/selinux/netlabel.c:342
selinux_inet_conn_request+0x1eb/0x2c0 security/selinux/hooks.c:5551
security_inet_conn_request+0x50/0xa0 security/security.c:4945
tcp_v6_route_req+0x22c/0x550 net/ipv6/tcp_ipv6.c:825
tcp_conn_request+0xec8/0x2b70 net/ipv4/tcp_input.c:7275
tcp_v6_conn_request+0x1e3/0x440 net/ipv6/tcp_ipv6.c:1328
tcp_rcv_state_process+0xafa/0x52b0 net/ipv4/tcp_input.c:6781
tcp_v6_do_rcv+0x8a6/0x1a40 net/ipv6/tcp_ipv6.c:1667
tcp_v6_rcv+0x505e/0x5b50 net/ipv6/tcp_ipv6.c:1904
ip6_protocol_deliver_rcu+0x17c/0x1da0 net/ipv6/ip6_input.c:436
ip6_input_finish+0x103/0x180 net/ipv6/ip6_input.c:480
NF_HOOK include/linux/netfilter.h:314 [inline]
NF_HOOK include/linux/netfilter.h:308 [inline]
ip6_input+0x13c/0x6b0 net/ipv6/ip6_input.c:491
dst_input include/net/dst.h:469 [inline]
ip6_rcv_finish net/ipv6/ip6_input.c:79 [inline]
ip6_rcv_finish+0xb6/0x490 net/ipv6/ip6_input.c:69
NF_HOOK include/linux/netfilter.h:314 [inline]
NF_HOOK include/linux/netf
truncated—
Reference
https://git.kernel.org/stable/c/058dd4a370f23a5553a9449f2db53d5bfa88d45e https://git.kernel.org/stable/c/10876da918fa1aec0227fb4c67647513447f53a9 https://git.kernel.org/stable/c/956f1499412ed0953f6a116df7fdb855e9f1fc66 https://git.kernel.org/stable/c/988edde4d52d5c02ea4dd95d7619372a5e2fb7b7 https://git.kernel.org/stable/c/bde8833eb075ba8e8674de88e32de6b669966451 https://git.kernel.org/stable/c/d092c7fd8e220b23d6c47e03d7d0cc79e731f379 https://git.kernel.org/stable/c/dc724bd34d56f5589f7587a091a8cda2386826c4 https://git.kernel.org/stable/c/f4ae0f61dd9a63329ecb49b1e6356139d43240b8
Related CNNVD
CNNVD-202507-452 (Published: 2025-07-04)
Share on: