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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2022-48760— USB: core: Fix hang in usb_kill_urb by adding memory barriers

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 存在安全漏洞,该漏洞源于 USB:core 模块通过添加内存屏障修复 usb_kill_urb 中的挂起。

AI Predicted 5.5 Difficulty: Moderate EPSS 0.19% · P8

Affected Version Matrix 20

VendorProduct Version RangeStatus
Linux Linux 49367d8f1d9f26482cf7089489e90f0afd0a942c< 5f138ef224dffd15d5e5c5b095859719e0038427 affected
49367d8f1d9f26482cf7089489e90f0afd0a942c< b50f5ca60475710bbc9a3af32fbfc17b1e69c2f0 affected
49367d8f1d9f26482cf7089489e90f0afd0a942c< 546ba238535d925254e0b3f12012a5c55801e2f3 affected
49367d8f1d9f26482cf7089489e90f0afd0a942c< 5904dfd3ddaff3bf4a41c3baf0a8e8f31ed4599b affected
49367d8f1d9f26482cf7089489e90f0afd0a942c< 9c61fce322ac2ef7fecf025285353570d60e41d6 affected
49367d8f1d9f26482cf7089489e90f0afd0a942c< e3b131e30e612ff0e32de6c1cb4f69f89db29193 affected
49367d8f1d9f26482cf7089489e90f0afd0a942c< 9340226388c66a7e090ebb00e91ed64a753b6c26 affected
49367d8f1d9f26482cf7089489e90f0afd0a942c< c9a18f7c5b071dce5e6939568829d40994866ab0 affected
… +12 more rows
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2022-48760

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
USB: core: Fix hang in usb_kill_urb by adding memory barriers
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: USB: core: Fix hang in usb_kill_urb by adding memory barriers The syzbot fuzzer has identified a bug in which processes hang waiting for usb_kill_urb() to return. It turns out the issue is not unlinking the URB; that works just fine. Rather, the problem arises when the wakeup notification that the URB has completed is not received. The reason is memory-access ordering on SMP systems. In outline form, usb_kill_urb() and __usb_hcd_giveback_urb() operating concurrently on different CPUs perform the following actions: CPU 0 CPU 1 ---------------------------- --------------------------------- usb_kill_urb(): __usb_hcd_giveback_urb(): ... ... atomic_inc(&urb->reject); atomic_dec(&urb->use_count); ... ... wait_event(usb_kill_urb_queue, atomic_read(&urb->use_count) == 0); if (atomic_read(&urb->reject)) wake_up(&usb_kill_urb_queue); Confining your attention to urb->reject and urb->use_count, you can see that the overall pattern of accesses on CPU 0 is: write urb->reject, then read urb->use_count; whereas the overall pattern of accesses on CPU 1 is: write urb->use_count, then read urb->reject. This pattern is referred to in memory-model circles as SB (for "Store Buffering"), and it is well known that without suitable enforcement of the desired order of accesses -- in the form of memory barriers -- it is entirely possible for one or both CPUs to execute their reads ahead of their writes. The end result will be that sometimes CPU 0 sees the old un-decremented value of urb->use_count while CPU 1 sees the old un-incremented value of urb->reject. Consequently CPU 0 ends up on the wait queue and never gets woken up, leading to the observed hang in usb_kill_urb(). The same pattern of accesses occurs in usb_poison_urb() and the failure pathway of usb_hcd_submit_urb(). The problem is fixed by adding suitable memory barriers. To provide proper memory-access ordering in the SB pattern, a full barrier is required on both CPUs. The atomic_inc() and atomic_dec() accesses themselves don't provide any memory ordering, but since they are present, we can use the optimized smp_mb__after_atomic() memory barrier in the various routines to obtain the desired effect. This patch adds the necessary memory barriers.
Source: CVE Program / CVE List V5
CVSS Information
N/A
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 存在安全漏洞,该漏洞源于 USB:core 模块通过添加内存屏障修复 usb_kill_urb 中的挂起。
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 49367d8f1d9f26482cf7089489e90f0afd0a942c ~ 5f138ef224dffd15d5e5c5b095859719e0038427 -
Linux Linux 2.6.29 -

II. Public POCs for CVE-2022-48760

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

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2022-48760

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

Other References for CVE-2022-48760 (9)

Same Patch Batch · Linux · 2024-06-20 · 67 CVEs total

CVE-2022-48711 9.8 CRITICAL tipc: improve size validations for received domain records
CVE-2024-38620 8.8 HIGH Bluetooth: HCI: Remove HCI_AMP support
CVE-2021-47620 8.1 HIGH Bluetooth: refactor malicious adv data check
CVE-2022-48743 8.1 HIGH net: amd-xgbe: Fix skb data length underflow
CVE-2022-48720 7.8 HIGH net: macsec: Fix offload support for NETDEV_UNREGISTER event
CVE-2022-48751 7.8 HIGH net/smc: Transitional solution for clcsock race issue
CVE-2022-48771 7.8 HIGH drm/vmwgfx: Fix stale file descriptors on failed usercopy
CVE-2022-48716 7.8 HIGH ASoC: codecs: wcd938x: fix incorrect used of portid
CVE-2022-48733 7.8 HIGH btrfs: fix use-after-free after failure to create a snapshot
CVE-2022-48729 7.8 HIGH IB/hfi1: Fix panic with larger ipoib send_queue_size
CVE-2022-48759 7.8 HIGH rpmsg: char: Fix race between the release of rpmsg_ctrldev and cdev
CVE-2022-48742 7.8 HIGH rtnetlink: make sure to refresh master_dev/m_ops in __rtnl_newlink()
CVE-2022-48721 7.8 HIGH net/smc: Forward wakeup to smc socket waitqueue after fallback
CVE-2022-48754 7.8 HIGH phylib: fix potential use-after-free
CVE-2022-48762 7.8 HIGH arm64: extable: fix load_unaligned_zeropad() reg indices
CVE-2022-48735 7.8 HIGH ALSA: hda: Fix UAF of leds class devs at unbinding
CVE-2022-48726 7.8 HIGH RDMA/ucma: Protect mc during concurrent multicast leaves
CVE-2022-48744 7.5 HIGH net/mlx5e: Avoid field-overflowing memcpy()
CVE-2022-48727 7.3 HIGH KVM: arm64: Avoid consuming a stale esr value when SError occur
CVE-2022-48717 7.1 HIGH ASoC: max9759: fix underflow in speaker_gain_control_put()

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

IV. Related Vulnerabilities

V. Comments for CVE-2022-48760

No comments yet


Leave a comment