CVE-2023-54265
N/A
Summary
In the Linux kernel, the following vulnerability has been resolved:
ipv6: Fix an uninit variable access bug in __ip6_make_skb()
Syzbot reported a bug as following:
===================================================== BUG: KMSAN: uninit-value in arch_atomic64_inc arch/x86/include/asm/atomic64_64.h:88 [inline] BUG: KMSAN: uninit-value in arch_atomic_long_inc include/linux/atomic/atomic-long.h:161 [inline] BUG: KMSAN: uninit-value in atomic_long_inc include/linux/atomic/atomic-instrumented.h:1429 [inline] BUG: KMSAN: uninit-value in __ip6_make_skb+0x2f37/0x30f0 net/ipv6/ip6_output.c:1956 arch_atomic64_inc arch/x86/include/asm/atomic64_64.h:88 [inline] arch_atomic_long_inc include/linux/atomic/atomic-long.h:161 [inline] atomic_long_inc include/linux/atomic/atomic-instrumented.h:1429 [inline] __ip6_make_skb+0x2f37/0x30f0 net/ipv6/ip6_output.c:1956 ip6_finish_skb include/net/ipv6.h:1122 [inline] ip6_push_pending_frames+0x10e/0x550 net/ipv6/ip6_output.c:1987 rawv6_push_pending_frames+0xb12/0xb90 net/ipv6/raw.c:579 rawv6_sendmsg+0x297e/0x2e60 net/ipv6/raw.c:922 inet_sendmsg+0x101/0x180 net/ipv4/af_inet.c:827 sock_sendmsg_nosec net/socket.c:714 [inline] sock_sendmsg net/socket.c:734 [inline] ____sys_sendmsg+0xa8e/0xe70 net/socket.c:2476 ___sys_sendmsg+0x2a1/0x3f0 net/socket.c:2530 __sys_sendmsg net/socket.c:2559 [inline] __do_sys_sendmsg net/socket.c:2568 [inline] __se_sys_sendmsg net/socket.c:2566 [inline] __x64_sys_sendmsg+0x367/0x540 net/socket.c:2566 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd
Uninit was created at: slab_post_alloc_hook mm/slab.h:766 [inline] slab_alloc_node mm/slub.c:3452 [inline] __kmem_cache_alloc_node+0x71f/0xce0 mm/slub.c:3491 __do_kmalloc_node mm/slab_common.c:967 [inline] __kmalloc_node_track_caller+0x114/0x3b0 mm/slab_common.c:988 kmalloc_reserve net/core/skbuff.c:492 [inline] __alloc_skb+0x3af/0x8f0 net/core/skbuff.c:565 alloc_skb include/linux/skbuff.h:1270 [inline] __ip6_append_data+0x51c1/0x6bb0 net/ipv6/ip6_output.c:1684 ip6_append_data+0x411/0x580 net/ipv6/ip6_output.c:1854 rawv6_sendmsg+0x2882/0x2e60 net/ipv6/raw.c:915 inet_sendmsg+0x101/0x180 net/ipv4/af_inet.c:827 sock_sendmsg_nosec net/socket.c:714 [inline] sock_sendmsg net/socket.c:734 [inline] ____sys_sendmsg+0xa8e/0xe70 net/socket.c:2476 ___sys_sendmsg+0x2a1/0x3f0 net/socket.c:2530 __sys_sendmsg net/socket.c:2559 [inline] __do_sys_sendmsg net/socket.c:2568 [inline] __se_sys_sendmsg net/socket.c:2566 [inline] __x64_sys_sendmsg+0x367/0x540 net/socket.c:2566 do_syscall_x64 arch/x86/entry/common.c:50 [inline] do_syscall_64+0x3d/0xb0 arch/x86/entry/common.c:80 entry_SYSCALL_64_after_hwframe+0x63/0xcd
It is because icmp6hdr does not in skb linear region under the scenario of SOCK_RAW socket. Access icmp6_hdr(skb)->icmp6_type directly will trigger the uninit variable access bug.
Use a local variable icmp6_type to carry the correct value in different scenarios.
Affected Software
| Vendor | Product | Version Range | Status |
|---|---|---|---|
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < 165370522cc48127da564a08584a7391e6341908 | affected |
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < f394f690a30a5ec0413c62777a058eaf3d6e10d5 | affected |
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < 0cf600ca1bdf1d52df977516ee6cee0cadb1f6b1 | affected |
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < 605b056d63302ae84eb136e88d4df49124bd5e0d | affected |
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < d65ff2fe877c471aa6e79efa7bd8ff66e147c317 | affected |
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < 2c9cefc142c1dc2759e19a92d3b2b3715e985beb | affected |
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < 02ed5700f40445af02d1c97db25ffc2d04971d9f | affected |
| Linux | Linux | 14878f75abd5bf1d38becb405801cd491ee215dc < ea30388baebcce37fd594d425a65037ca35e59e8 | affected |
| Linux | Linux | 2.6.24 | affected |
| Linux | Linux | 0 < 2.6.24 | unaffected |
| Linux | Linux | 4.14.313 <= 4.14.* | unaffected |
| Linux | Linux | 4.19.281 <= 4.19.* | unaffected |
| Linux | Linux | 5.4.241 <= 5.4.* | unaffected |
| Linux | Linux | 5.10.178 <= 5.10.* | unaffected |
| Linux | Linux | 5.15.107 <= 5.15.* | unaffected |
| Linux | Linux | 6.1.24 <= 6.1.* | unaffected |
| Linux | Linux | 6.2.11 <= 6.2.* | unaffected |
| Linux | Linux | 6.3 <= * | unaffected |
Weaknesses
References
- https://git.kernel.org/stable/c/165370522cc48127da564a08584a7391e6341908
- https://git.kernel.org/stable/c/f394f690a30a5ec0413c62777a058eaf3d6e10d5
- https://git.kernel.org/stable/c/0cf600ca1bdf1d52df977516ee6cee0cadb1f6b1
- https://git.kernel.org/stable/c/605b056d63302ae84eb136e88d4df49124bd5e0d
- https://git.kernel.org/stable/c/d65ff2fe877c471aa6e79efa7bd8ff66e147c317
- https://git.kernel.org/stable/c/2c9cefc142c1dc2759e19a92d3b2b3715e985beb
- https://git.kernel.org/stable/c/02ed5700f40445af02d1c97db25ffc2d04971d9f
- https://git.kernel.org/stable/c/ea30388baebcce37fd594d425a65037ca35e59e8
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.