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

Goal: 1000 CNY · Raised: 1359 CNY

100%

CVE-2025-38016— HID: bpf: abort dispatch if device destroyed

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 8.8 · High EPSS 0.24% · P15

Affected Version Matrix 8

VendorProduct Version RangeStatus
Linux Linux 8bd0488b5ea58655ad6fdcbe0408ef49b16882b1< f8544be7e8e55b0ef23e1ab90e23e8d4d4aad3d3 affected
8bd0488b5ea58655ad6fdcbe0408ef49b16882b1< e4b4fe25a4101d1ddb5884f40e149a3618983b66 affected
8bd0488b5ea58655ad6fdcbe0408ef49b16882b1< 578e1b96fad7402ff7e9c7648c8f1ad0225147c8 affected
6.11 affected
< 6.11 unaffected
6.12.30≤ 6.12.* unaffected
6.14.8≤ 6.14.* unaffected
6.15≤ * unaffected
Get alerts for future matching vulnerabilities Log in to subscribe

I. Basic Information for CVE-2025-38016

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
HID: bpf: abort dispatch if device destroyed
Source: CVE Program / CVE List V5
Vulnerability Description
In the Linux kernel, the following vulnerability has been resolved: HID: bpf: abort dispatch if device destroyed The current HID bpf implementation assumes no output report/request will go through it after hid_bpf_destroy_device() has been called. This leads to a bug that unplugging certain types of HID devices causes a cleaned- up SRCU to be accessed. The bug was previously a hidden failure until a recent x86 percpu change [1] made it access not-present pages. The bug will be triggered if the conditions below are met: A) a device under the driver has some LEDs on B) hid_ll_driver->request() is uninplemented (e.g., logitech-djreceiver) If condition A is met, hidinput_led_worker() is always scheduled *after* hid_bpf_destroy_device(). hid_destroy_device ` hid_bpf_destroy_device ` cleanup_srcu_struct(&hdev->bpf.srcu) ` hid_remove_device ` ... ` led_classdev_unregister ` led_trigger_set(led_cdev, NULL) ` led_set_brightness(led_cdev, LED_OFF) ` ... ` input_inject_event ` input_event_dispose ` hidinput_input_event ` schedule_work(&hid->led_work) [hidinput_led_worker] This is fine when condition B is not met, where hidinput_led_worker() calls hid_ll_driver->request(). This is the case for most HID drivers, which implement it or use the generic one from usbhid. The driver itself or an underlying driver will then abort processing the request. Otherwise, hidinput_led_worker() tries hid_hw_output_report() and leads to the bug. hidinput_led_worker ` hid_hw_output_report ` dispatch_hid_bpf_output_report ` srcu_read_lock(&hdev->bpf.srcu) ` srcu_read_unlock(&hdev->bpf.srcu, idx) The bug has existed since the introduction [2] of dispatch_hid_bpf_output_report(). However, the same bug also exists in dispatch_hid_bpf_raw_requests(), and I've reproduced (no visible effect because of the lack of [1], but confirmed bpf.destroyed == 1) the bug against the commit (i.e., the Fixes:) introducing the function. This is because hidinput_led_worker() falls back to hid_hw_raw_request() when hid_ll_driver->output_report() is uninplemented (e.g., logitech- djreceiver). hidinput_led_worker ` hid_hw_output_report: -ENOSYS ` hid_hw_raw_request ` dispatch_hid_bpf_raw_requests ` srcu_read_lock(&hdev->bpf.srcu) ` srcu_read_unlock(&hdev->bpf.srcu, idx) Fix the issue by returning early in the two mentioned functions if hid_bpf has been marked as destroyed. Though dispatch_hid_bpf_device_event() handles input events, and there is no evidence that it may be called after the destruction, the same check, as a safety net, is also added to it to maintain the consistency among all dispatch functions. The impact of the bug on other architectures is unclear. Even if it acts as a hidden failure, this is still dangerous because it corrupts whatever is on the address calculated by SRCU. Thus, CC'ing the stable list. [1]: commit 9d7de2aa8b41 ("x86/percpu/64: Use relative percpu offsets") [2]: commit 9286675a2aed ("HID: bpf: add HID-BPF hooks for hid_hw_output_report")
Source: CVE Program / CVE List V5
CVSS Information
CVSS:3.1/AV:A/AC:L/PR:N/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 8bd0488b5ea58655ad6fdcbe0408ef49b16882b1 ~ f8544be7e8e55b0ef23e1ab90e23e8d4d4aad3d3 -
Linux Linux 6.11 -

II. Public POCs for CVE-2025-38016

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

No public POC found.

Login to generate AI POC

III. Intelligence Information for CVE-2025-38016

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

Same Patch Batch · Linux · 2025-06-18 · 362 CVEs total

CVE-2025-38075 9.8 CRITICAL scsi: target: iscsi: Fix timeout on deleted connection
CVE-2022-50098 8.8 HIGH scsi: qla2xxx: Fix crash due to stale SRB access around I/O timeouts
CVE-2025-38052 8.8 HIGH net/tipc: fix slab-use-after-free Read in tipc_aead_encrypt_done
CVE-2022-49934 8.8 HIGH wifi: mac80211: Fix UAF in ieee80211_scan_rx()
CVE-2022-50164 8.8 HIGH wifi: iwlwifi: mvm: fix double list_add at iwl_mvm_mac_wake_tx_queue
CVE-2025-38074 8.8 HIGH vhost-scsi: protect vq->log_used with vq->mutex
CVE-2022-49974 8.8 HIGH HID: nintendo: fix rumble worker null pointer deref
CVE-2022-49968 8.0 HIGH ieee802154/adf7242: defer destroy_workqueue call
CVE-2022-49944 7.8 HIGH Revert "usb: typec: ucsi: add a common function ucsi_unregister_connectors()"
CVE-2022-49950 7.8 HIGH misc: fastrpc: fix memory corruption on open
CVE-2022-50028 7.8 HIGH gadgetfs: ep_io - wait until IRQ finishes
CVE-2022-49939 7.8 HIGH binder: fix UAF of ref->proc caused by race condition
CVE-2022-49935 7.8 HIGH dma-buf/dma-resv: check if the new fence is really later
CVE-2025-38082 7.8 HIGH gpio: virtuser: fix potential out-of-bound write
CVE-2022-50182 7.8 HIGH media: imx-jpeg: Align upwards buffer size
CVE-2025-38080 7.8 HIGH drm/amd/display: Increase block_sequence array size
CVE-2025-38060 7.8 HIGH bpf: copy_verifier_state() should copy 'loop_entry' field
CVE-2022-50101 7.8 HIGH video: fbdev: vt8623fb: Check the size of screen before memset_io()
CVE-2025-38062 7.8 HIGH genirq/msi: Store the IOMMU IOVA directly in msi_desc instead of iommu_cookie
CVE-2025-38064 7.8 HIGH virtio: break and reset virtio devices on device_shutdown()

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

IV. Related Vulnerabilities

V. Comments for CVE-2025-38016

No comments yet


Leave a comment