Goal Reached Thanks to every supporter — we hit 100%!

Goal: 1000 CNY · Raised: 1336 CNY

100%

CVE-2024-47711— af_unix: Don't return OOB skb in manage_oob().

CVSS 7.8 · High EPSS 0.21% · P11

Affected Version Matrix 8

VendorProductVersion RangeStatus
LinuxLinux93c99f21db360957d49853e5666b5c147f593bda< 4a7f9a2591a923bdde4bd7eac33490b6ae3b257caffected
93c99f21db360957d49853e5666b5c147f593bda< 5aa57d9f2d5311f19434d95b2a81610aa263e23baffected
71f8d9a4f6e094bae951765d1d18b44827013001affected
6.9.8< 6.10affected
6.10affected
< 6.10unaffected
6.11.2≤ 6.11.*unaffected
6.12≤ *unaffected
Get alerts for future matching vulnerabilitiesLog in to subscribe

I. Basic Information for CVE-2024-47711

Vulnerability Information

Have questions about the vulnerability? See if Shenlong's analysis helps!
View Shenlong Deep Dive ↗

Although we use advanced large model technology, its output may still contain inaccurate or outdated information.Shenlong tries to ensure data accuracy, but please verify and judge based on the actual situation.

Vulnerability Title
af_unix: Don't return OOB skb in manage_oob().
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: af_unix: Don't return OOB skb in manage_oob(). syzbot reported use-after-free in unix_stream_recv_urg(). [0] The scenario is 1. send(MSG_OOB) 2. recv(MSG_OOB) -> The consumed OOB remains in recv queue 3. send(MSG_OOB) 4. recv() -> manage_oob() returns the next skb of the consumed OOB -> This is also OOB, but unix_sk(sk)->oob_skb is not cleared 5. recv(MSG_OOB) -> unix_sk(sk)->oob_skb is used but already freed The recent commit 8594d9b85c07 ("af_unix: Don't call skb_get() for OOB skb.") uncovered the issue. If the OOB skb is consumed and the next skb is peeked in manage_oob(), we still need to check if the skb is OOB. Let's do so by falling back to the following checks in manage_oob() and add the test case in selftest. Note that we need to add a similar check for SIOCATMARK. [0]: BUG: KASAN: slab-use-after-free in unix_stream_read_actor+0xa6/0xb0 net/unix/af_unix.c:2959 Read of size 4 at addr ffff8880326abcc4 by task syz-executor178/5235 CPU: 0 UID: 0 PID: 5235 Comm: syz-executor178 Not tainted 6.11.0-rc5-syzkaller-00742-gfbdaffe41adc #0 Hardware name: Google Google Compute Engine/Google Compute Engine, BIOS Google 08/06/2024 Call Trace: <TASK> __dump_stack lib/dump_stack.c:93 [inline] dump_stack_lvl+0x241/0x360 lib/dump_stack.c:119 print_address_description mm/kasan/report.c:377 [inline] print_report+0x169/0x550 mm/kasan/report.c:488 kasan_report+0x143/0x180 mm/kasan/report.c:601 unix_stream_read_actor+0xa6/0xb0 net/unix/af_unix.c:2959 unix_stream_recv_urg+0x1df/0x320 net/unix/af_unix.c:2640 unix_stream_read_generic+0x2456/0x2520 net/unix/af_unix.c:2778 unix_stream_recvmsg+0x22b/0x2c0 net/unix/af_unix.c:2996 sock_recvmsg_nosec net/socket.c:1046 [inline] sock_recvmsg+0x22f/0x280 net/socket.c:1068 ____sys_recvmsg+0x1db/0x470 net/socket.c:2816 ___sys_recvmsg net/socket.c:2858 [inline] __sys_recvmsg+0x2f0/0x3e0 net/socket.c:2888 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f RIP: 0033:0x7f5360d6b4e9 Code: 48 83 c4 28 c3 e8 37 17 00 00 0f 1f 80 00 00 00 00 48 89 f8 48 89 f7 48 89 d6 48 89 ca 4d 89 c2 4d 89 c8 4c 8b 4c 24 08 0f 05 <48> 3d 01 f0 ff ff 73 01 c3 48 c7 c1 b8 ff ff ff f7 d8 64 89 01 48 RSP: 002b:00007fff29b3a458 EFLAGS: 00000246 ORIG_RAX: 000000000000002f RAX: ffffffffffffffda RBX: 00007fff29b3a638 RCX: 00007f5360d6b4e9 RDX: 0000000000002001 RSI: 0000000020000640 RDI: 0000000000000003 RBP: 00007f5360dde610 R08: 0000000000000000 R09: 0000000000000000 R10: 0000000000000000 R11: 0000000000000246 R12: 0000000000000001 R13: 00007fff29b3a628 R14: 0000000000000001 R15: 0000000000000001 </TASK> Allocated by task 5235: kasan_save_stack mm/kasan/common.c:47 [inline] kasan_save_track+0x3f/0x80 mm/kasan/common.c:68 unpoison_slab_object mm/kasan/common.c:312 [inline] __kasan_slab_alloc+0x66/0x80 mm/kasan/common.c:338 kasan_slab_alloc include/linux/kasan.h:201 [inline] slab_post_alloc_hook mm/slub.c:3988 [inline] slab_alloc_node mm/slub.c:4037 [inline] kmem_cache_alloc_node_noprof+0x16b/0x320 mm/slub.c:4080 __alloc_skb+0x1c3/0x440 net/core/skbuff.c:667 alloc_skb include/linux/skbuff.h:1320 [inline] alloc_skb_with_frags+0xc3/0x770 net/core/skbuff.c:6528 sock_alloc_send_pskb+0x91a/0xa60 net/core/sock.c:2815 sock_alloc_send_skb include/net/sock.h:1778 [inline] queue_oob+0x108/0x680 net/unix/af_unix.c:2198 unix_stream_sendmsg+0xd24/0xf80 net/unix/af_unix.c:2351 sock_sendmsg_nosec net/socket.c:730 [inline] __sock_sendmsg+0x221/0x270 net/socket.c:745 ____sys_sendmsg+0x525/0x7d0 net/socket.c:2597 ___sys_sendmsg net/socket.c:2651 [inline] __sys_sendmsg+0x2b0/0x3a0 net/socket.c:2680 do_syscall_x64 arch/x86/entry/common.c:52 [inline] do_syscall_64+0xf3/0x230 arch/x86/entry/common.c:83 entry_SYSCALL_64_after_hwframe+0x77/0x7f Freed by task 5235: kasan_save_stack mm/kasan/common.c:47 ---truncated---
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Source: CVE Program / CVE List V5
Vulnerability Type
N/A
Source: CVE Program / CVE List V5
Vulnerability Title
Linux kernel 安全漏洞
Source: CNNVD (China National Vulnerability Database)
Vulnerability Description
Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞,该漏洞源于在处理OOB skb时未正确管理,可能导致释放后重用错误。
Source: CNNVD (China National Vulnerability Database)
CVSS Information
N/A
Source: CNNVD (China National Vulnerability Database)
Vulnerability Type
N/A
Source: CNNVD (China National Vulnerability Database)

Affected Products

VendorProductAffected VersionsCPESubscribe
LinuxLinux 93c99f21db360957d49853e5666b5c147f593bda ~ 4a7f9a2591a923bdde4bd7eac33490b6ae3b257c -
LinuxLinux 6.10 -

II. Public POCs for CVE-2024-47711

#POC DescriptionSource LinkShenlong Link
AI-Generated POCPremium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-47711

登录查看更多情报信息。

Patches & Fixes for CVE-2024-47711 (2)

Same Patch Batch · Linux · 2024-10-21 · 372 CVEs total

CVE-2022-489859.8 CRITICALnet: mana: Fix race on per-CQ variable napi work_done
CVE-2024-498559.8 CRITICALnbd: fix race between timeout and normal completion
CVE-2024-500339.8 CRITICALslip: make slhc_remember() more robust against malicious packets
CVE-2024-476959.8 CRITICALRDMA/rtrs-clt: Reset cid to con_num - 1 to stay in bounds
CVE-2022-490039.8 CRITICALnvme: fix SRCU protection of nvme_ns_head list
CVE-2024-500469.8 CRITICALNFSv4: Prevent NULL-pointer dereference in nfs42_complete_copies()
CVE-2024-500479.8 CRITICALsmb: client: fix UAF in async decryption
CVE-2024-500439.8 CRITICALnfsd: fix possible badness in FREE_STATEID
CVE-2024-499969.4 CRITICALcifs: Fix buffer overflow when parsing NFS reparse points
CVE-2024-476789.4 CRITICALicmp: change the order of rate limits
CVE-2024-499508.8 HIGHBluetooth: L2CAP: Fix uaf in l2cap_connect
CVE-2024-499368.8 HIGHnet/xen-netback: prevent UAF in xenvif_flush_hash()
CVE-2022-490178.8 HIGHtipc: re-fetch skb cb after tipc_msg_validate
CVE-2022-490158.8 HIGHnet: hsr: Fix potential use-after-free
CVE-2024-499398.8 HIGHwifi: rtw89: avoid to add interface to list twice when SER
CVE-2024-500418.8 HIGHi40e: Fix macvlan leak by synchronizing access to mac_filter_hash
CVE-2024-499308.8 HIGHwifi: ath11k: fix array out-of-bound access in SoC stats
CVE-2022-489678.8 HIGHNFC: nci: Bounds check struct nfc_target arrays
CVE-2022-489648.8 HIGHravb: Fix potential use-after-free in ravb_rx_gbeth()
CVE-2022-489628.8 HIGHnet: hisilicon: Fix potential use-after-free in hisi_femac_rx()

Showing top 20 of 372 CVEs. View all on vendor page &rarr; →

IV. Related Vulnerabilities

V. Comments for CVE-2024-47711

No comments yet


Leave a comment