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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2024-46765— ice: protect XDP configuration with a mutex

Quick assessment

Affected
Linux Linux
Exploitation
No confirmed in-the-wild exploitation; assess based on exposure
Recommended action
Check the vendor advisory and references for a fixed version. If immediate upgrade is impossible, restrict exposure and increase monitoring.

Linux kernel是美国Linux基金会的开源操作系统Linux所使用的内核。 Linux kernel存在安全漏洞。攻击者利用该漏洞导致资源访问冲突。

CVSS 7.8 · High EPSS 0.24% · P15

Possible ATT&CK Techniques 1 AI

T1211 · Exploitation for Stealth

Affected Version Matrix 8

VendorProduct Version RangeStatus
Linux Linux efc2214b6047b6f5b4ca53151eba62521b9452d6< 2f057db2fb29bc209c103050647562e60554d3d3 affected
efc2214b6047b6f5b4ca53151eba62521b9452d6< 391f7dae3d836891fc6cfbde38add2d0e10c6b7f affected
efc2214b6047b6f5b4ca53151eba62521b9452d6< 2504b8405768a57a71e660dbfd5abd59f679a03f affected
5.5 affected
< 5.5 unaffected
6.6.51≤ 6.6.* unaffected
6.10.10≤ 6.10.* unaffected
6.11≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2024-46765

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
ice: protect XDP configuration with a mutex
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: ice: protect XDP configuration with a mutex The main threat to data consistency in ice_xdp() is a possible asynchronous PF reset. It can be triggered by a user or by TX timeout handler. XDP setup and PF reset code access the same resources in the following sections: * ice_vsi_close() in ice_prepare_for_reset() - already rtnl-locked * ice_vsi_rebuild() for the PF VSI - not protected * ice_vsi_open() - already rtnl-locked With an unfortunate timing, such accesses can result in a crash such as the one below: [ +1.999878] ice 0000:b1:00.0: Registered XDP mem model MEM_TYPE_XSK_BUFF_POOL on Rx ring 14 [ +2.002992] ice 0000:b1:00.0: Registered XDP mem model MEM_TYPE_XSK_BUFF_POOL on Rx ring 18 [Mar15 18:17] ice 0000:b1:00.0 ens801f0np0: NETDEV WATCHDOG: CPU: 38: transmit queue 14 timed out 80692736 ms [ +0.000093] ice 0000:b1:00.0 ens801f0np0: tx_timeout: VSI_num: 6, Q 14, NTC: 0x0, HW_HEAD: 0x0, NTU: 0x0, INT: 0x4000001 [ +0.000012] ice 0000:b1:00.0 ens801f0np0: tx_timeout recovery level 1, txqueue 14 [ +0.394718] ice 0000:b1:00.0: PTP reset successful [ +0.006184] BUG: kernel NULL pointer dereference, address: 0000000000000098 [ +0.000045] #PF: supervisor read access in kernel mode [ +0.000023] #PF: error_code(0x0000) - not-present page [ +0.000023] PGD 0 P4D 0 [ +0.000018] Oops: 0000 [#1] PREEMPT SMP NOPTI [ +0.000023] CPU: 38 PID: 7540 Comm: kworker/38:1 Not tainted 6.8.0-rc7 #1 [ +0.000031] Hardware name: Intel Corporation S2600WFT/S2600WFT, BIOS SE5C620.86B.02.01.0014.082620210524 08/26/2021 [ +0.000036] Workqueue: ice ice_service_task [ice] [ +0.000183] RIP: 0010:ice_clean_tx_ring+0xa/0xd0 [ice] [...] [ +0.000013] Call Trace: [ +0.000016] <TASK> [ +0.000014] ? __die+0x1f/0x70 [ +0.000029] ? page_fault_oops+0x171/0x4f0 [ +0.000029] ? schedule+0x3b/0xd0 [ +0.000027] ? exc_page_fault+0x7b/0x180 [ +0.000022] ? asm_exc_page_fault+0x22/0x30 [ +0.000031] ? ice_clean_tx_ring+0xa/0xd0 [ice] [ +0.000194] ice_free_tx_ring+0xe/0x60 [ice] [ +0.000186] ice_destroy_xdp_rings+0x157/0x310 [ice] [ +0.000151] ice_vsi_decfg+0x53/0xe0 [ice] [ +0.000180] ice_vsi_rebuild+0x239/0x540 [ice] [ +0.000186] ice_vsi_rebuild_by_type+0x76/0x180 [ice] [ +0.000145] ice_rebuild+0x18c/0x840 [ice] [ +0.000145] ? delay_tsc+0x4a/0xc0 [ +0.000022] ? delay_tsc+0x92/0xc0 [ +0.000020] ice_do_reset+0x140/0x180 [ice] [ +0.000886] ice_service_task+0x404/0x1030 [ice] [ +0.000824] process_one_work+0x171/0x340 [ +0.000685] worker_thread+0x277/0x3a0 [ +0.000675] ? preempt_count_add+0x6a/0xa0 [ +0.000677] ? _raw_spin_lock_irqsave+0x23/0x50 [ +0.000679] ? __pfx_worker_thread+0x10/0x10 [ +0.000653] kthread+0xf0/0x120 [ +0.000635] ? __pfx_kthread+0x10/0x10 [ +0.000616] ret_from_fork+0x2d/0x50 [ +0.000612] ? __pfx_kthread+0x10/0x10 [ +0.000604] ret_from_fork_asm+0x1b/0x30 [ +0.000604] </TASK> The previous way of handling this through returning -EBUSY is not viable, particularly when destroying AF_XDP socket, because the kernel proceeds with removal anyway. There is plenty of code between those calls and there is no need to create a large critical section that covers all of them, same as there is no need to protect ice_vsi_rebuild() with rtnl_lock(). Add xdp_state_lock mutex to protect ice_vsi_rebuild() and ice_xdp(). Leaving unprotected sections in between would result in two states that have to be considered: 1. when the VSI is closed, but not yet rebuild 2. when VSI is already rebuild, but not yet open The latter case is actually already handled through !netif_running() case, we just need to adjust flag checking a little. The former one is not as trivial, because between ice_vsi_close() and ice_vsi_rebuild(), a lot of hardware interaction happens, this can make adding/deleting rings exit with an error. Luckily, VSI rebuild is pending and can apply new configuration for us in a managed fashion. Therefore, add an additional VSI state flag ICE_VSI_REBUILD_PENDING to indicate that ice_x ---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存在安全漏洞。攻击者利用该漏洞导致资源访问冲突。
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

Vendor Product Affected Versions CPE Subscribe
Linux Linux efc2214b6047b6f5b4ca53151eba62521b9452d6 ~ 2f057db2fb29bc209c103050647562e60554d3d3 -
Linux Linux 5.5 -

II. Public POCs for CVE-2024-46765

# POC Description Source Link Shenlong Link
AI-Generated POC Premium

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2024-46765

请登录查看更多情报信息。

Patches & Fixes for CVE-2024-46765 (3)

Same Patch Batch · Linux · 2024-09-18 · 85 CVEs total

CVE-2024-46717 9.8 CRITICAL net/mlx5e: SHAMPO, Fix incorrect page release
CVE-2024-46736 9.8 CRITICAL smb: client: fix double put of @cfile in smb2_rename_path()
CVE-2024-46796 9.8 CRITICAL smb: client: fix double put of @cfile in smb2_set_path_size()
CVE-2024-46755 8.8 HIGH wifi: mwifiex: Do not return unused priv in mwifiex_get_priv_by_id()
CVE-2024-46780 7.8 HIGH nilfs2: protect references to superblock parameters exposed in sysfs
CVE-2024-46792 7.8 HIGH riscv: misaligned: Restrict user access to kernel memory
CVE-2024-46788 7.8 HIGH tracing/osnoise: Use a cpumask to know what threads are kthreads
CVE-2024-46787 7.8 HIGH userfaultfd: fix checks for huge PMDs
CVE-2024-46734 7.8 HIGH btrfs: fix race between direct IO write and fsync when using same fd
CVE-2024-46738 7.8 HIGH VMCI: Fix use-after-free when removing resource in vmci_resource_remove()
CVE-2024-46740 7.8 HIGH binder: fix UAF caused by offsets overwrite
CVE-2024-46746 7.8 HIGH HID: amd_sfh: free driver_data after destroying hid device
CVE-2024-46781 7.8 HIGH nilfs2: fix missing cleanup on rollforward recovery error
CVE-2024-46741 7.8 HIGH misc: fastrpc: Fix double free of 'buf' in error path
CVE-2024-46750 7.8 HIGH PCI: Add missing bridge lock to pci_bus_lock()
CVE-2024-46751 7.8 HIGH btrfs: don't BUG_ON() when 0 reference count at btrfs_lookup_extent_info()
CVE-2024-46777 7.8 HIGH udf: Avoid excessive partition lengths
CVE-2024-46754 7.8 HIGH bpf: Remove tst_run from lwt_seg6local_prog_ops.
CVE-2024-46762 7.8 HIGH xen: privcmd: Fix possible access to a freed kirqfd instance
CVE-2024-46771 7.8 HIGH can: bcm: Remove proc entry when dev is unregistered.

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

IV. Related Vulnerabilities

V. Comments for CVE-2024-46765

No comments yet


Leave a comment