CVE-2024-36927

ipv4: Fix uninit-value access in __ip_make_skb()

State
Published
Severity
Not scored
Published
May 30, 2024
Updated
Oct 15, 2026
Reserved
May 30, 2024

Read the record on cve.org

Description

In the Linux kernel, the following vulnerability has been resolved:

ipv4: Fix uninit-value access in __ip_make_skb()

KMSAN reported uninit-value access in __ip_make_skb() [1]. __ip_make_skb() tests HDRINCL to know if the skb has icmphdr. However, HDRINCL can cause a race condition. If calling setsockopt(2) with IP_HDRINCL changes HDRINCL while __ip_make_skb() is running, the function will access icmphdr in the skb even if it is not included. This causes the issue reported by KMSAN.

Check FLOWI_FLAG_KNOWN_NH on fl4->flowi4_flags instead of testing HDRINCL on the socket.

Also, fl4->fl4_icmp_type and fl4->fl4_icmp_code are not initialized. These are union in struct flowi4 and are implicitly initialized by flowi4_init_output(), but we should not rely on specific union layout.

Initialize these explicitly in raw_sendmsg().

[1] BUG: KMSAN: uninit-value in __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481 __ip_make_skb+0x2b74/0x2d20 net/ipv4/ip_output.c:1481 ip_finish_skb include/net/ip.h:243 [inline] ip_push_pending_frames+0x4c/0x5c0 net/ipv4/ip_output.c:1508 raw_sendmsg+0x2381/0x2690 net/ipv4/raw.c:654 inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x274/0x3c0 net/socket.c:745 __sys_sendto+0x62c/0x7b0 net/socket.c:2191 __do_sys_sendto net/socket.c:2203 [inline] __se_sys_sendto net/socket.c:2199 [inline] __x64_sys_sendto+0x130/0x200 net/socket.c:2199 do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x6d/0x75

Uninit was created at: slab_post_alloc_hook mm/slub.c:3804 [inline] slab_alloc_node mm/slub.c:3845 [inline] kmem_cache_alloc_node+0x5f6/0xc50 mm/slub.c:3888 kmalloc_reserve+0x13c/0x4a0 net/core/skbuff.c:577 __alloc_skb+0x35a/0x7c0 net/core/skbuff.c:668 alloc_skb include/linux/skbuff.h:1318 [inline] __ip_append_data+0x49ab/0x68c0 net/ipv4/ip_output.c:1128 ip_append_data+0x1e7/0x260 net/ipv4/ip_output.c:1365 raw_sendmsg+0x22b1/0x2690 net/ipv4/raw.c:648 inet_sendmsg+0x27b/0x2a0 net/ipv4/af_inet.c:851 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x274/0x3c0 net/socket.c:745 __sys_sendto+0x62c/0x7b0 net/socket.c:2191 __do_sys_sendto net/socket.c:2203 [inline] __se_sys_sendto net/socket.c:2199 [inline] __x64_sys_sendto+0x130/0x200 net/socket.c:2199 do_syscall_64+0xd8/0x1f0 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x6d/0x75

CPU: 1 PID: 15709 Comm: syz-executor.7 Not tainted 6.8.0-11567-gb3603fcb79b1 #25 Hardware name: QEMU Standard PC (i440FX + PIIX, 1996), BIOS 1.16.3-1.fc39 04/01/2014

Scores

The record has no CVSS score.

Weaknesses

The record names no weakness.

Affected Products

ProductVersions
LinuxLinux
  • 566785731c6dd41ef815196ddc36d1ae30a63763 to before 88c66f1879f322f11de34d37b2d3d87497afdcb6Affected
  • a54ec573d9b81b05d368f8e6edc1b3e49f688658 to before 20d3eb00ab81462d554ac6d09691b8d9aa5a5741Affected
  • fc60067260c20da8cddcf968bec47416f3e2cde2 to before 55bf541e018b76b3750cb6c6ea18c46e1ac5562eAffected
  • 99e5acae193e369b71217efe6f1dad42f3f18815 to before 5db08343ddb1b239320612036c398e4e1bb52818Affected
  • 99e5acae193e369b71217efe6f1dad42f3f18815 to before f5c603ad4e6fcf42f84053e882ebe20184bb309eAffected
  • 99e5acae193e369b71217efe6f1dad42f3f18815 to before fc1092f51567277509563800a3c56732070b6aa4Affected
  • dc4e3bb0710178c8d03fc43064e0a71fe7440cddAffected
  • 022ea4374c319690c804706bda9dc42946d1556dAffected
  • 27c468ec1af113f6ae94fb5378f65e6038bd16e7Affected
  • 32a5a13d556e4f804e5a447a08c70b172d600707Affected
  • 9e3c96aed8fe32907e0a4bca05aad457629a820cAffected
  • 5.10.180 to before 5.10.248Affected
  • 5.15.111 to before 5.15.198Affected
  • 6.1.28 to before 6.1.140Affected
  • 4.14.315 to before 4.15Affected
  • 4.19.283 to before 4.20Affected
  • 5.4.243 to before 5.5Affected
  • 6.2.15 to before 6.3Affected
  • 6.3.2 to before 6.4Affected
LinuxLinux
  • 6.4Affected
  • before 6.4Not affected
  • 5.10.248 through 5.10.*Not affected
  • 5.15.198 through 5.15.*Not affected
  • 6.1.140 through 6.1.*Not affected
  • 6.6.31 through 6.6.*Not affected
  • 6.8.10 through 6.8.*Not affected
  • 6.9 and laterNot affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.