CVE-2026-68361
NoneCVSS
—
EPSS
0.2%
Published
Aug 10, 2026
CISA due date
—
Cloudanix analysis
A bug in the Linux driver for certain Corsair power supplies can let a local attacker crash the whole system or possibly gain higher privileges if the driver fails to start correctly.
- Exploitation
- Local Privilege
- Attacker needs
- Local User
- Complexity
- Moderate
- Impact
- Privilege Gain
- Component
- OS kernel
- Class
- Use After Free
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Use-after-free in the corsair-psu hwmon driver caused by a race between hid_input_report() and the failure path after hid_device_io_start() but before proper IO teardown; hid_hw_stop() alone does not stop pending input reports, allowing a freed hidraw structure to be accessed.
Why it matters to the business
Systems using Corsair power supplies with the affected Linux kernel driver can experience kernel crashes or memory corruption, leading to denial of service or potential local privilege escalation; the issue affects only a narrow set of hardware but requires prompt kernel updates on affected machines.
How an attack unfolds
An attacker with local access or the ability to trigger repeated probe failures (for example by unplugging or faulting the USB HID device during initialization) causes corsairpsu_probe() to call hid_hw_stop() while an input report handler still holds a reference to a soon-to-be-freed hidraw object, resulting in the use-after-free.
How to fix it
Apply the upstream fix that calls hid_device_io_stop() (when io_started) before hid_hw_stop() inside the corsairpsu_probe() error path; rebuild and boot a patched kernel; no user-space configuration changes are required.
How to confirm the fix worked
Confirm the presence of the commit that adds the hid_device_io_stop() call before hid_hw_stop() in drivers/hwmon/corsair-psu.c; load the module and exercise probe failure paths while monitoring for KASAN reports or absence of the race; verify with kernel version strings that contain the fix.
Typical attack path
- Attach or enumerate a Corsair PSU device that binds the corsair-psu driver
- Force corsairpsu_probe() to reach hid_device_io_start()
- Induce probe failure after IO start but before successful completion
- Trigger a concurrent input report that accesses the freed hidraw structure
- Achieve slab use-after-free leading to kernel panic or controlled memory corruption
How to detect it
Review kernel logs for KASAN use-after-free reports referencing hidraw_report_event, hid_report_raw_event, or corsairpsu_probe; inspect dmesg and audit logs around USB device attach events for hid_hw_stop and probe failure sequences; no network or file-based artifacts exist.
What your security team should do
- Prioritize kernel updates on any host that loads the corsair-psu module
- Monitor for future backports into distribution kernels and apply them within normal patch windows
- If the hardware is not in use, blacklist the corsair-psu module to reduce attack surface
- Include the module in automated kernel regression and fuzzing test suites
The record
In the Linux kernel, the following vulnerability has been resolved: hwmon: (corsair-psu) Stop device IO before calling hid_hw_stop hid_hw_stop() does not stop the device IO. This results in a race condition between hid_input_report() and the point immediately following the execution of hid_device_io_start() within corsairpsu_probe(). If the probe operation fails after "io start" has been initiated, this race condition will result in a uaf vulnerability [1]. CPU0 CPU1 ==== ==== corsairpsu_probe() hid_device_io_start() ... unlock driver_input_lock hid_hw_stop() kfree(hidraw) __hid_input_report() ... acquire driver_input_lock hid_report_raw_event() hidraw_report_event() ... access hidraw's list_lock // trigger uaf Consequently, when corsairpsu_probe() fails and hid_hw_stop() needs to be executed, the io_started flag is first cleared while holding the driver_input_lock to prevent potential race conditions involving input reports. [1] BUG: KASAN: slab-use-after-free in rt_spin_lock+0x83/0x400 kernel/locking/spinlock_rt.c:56 Call Trace: hidraw_report_event+0x5d/0x3a0 drivers/hid/hidraw.c:577 hid_report_raw_event+0x311/0x1730 drivers/hid/hid-core.c:2076 __hid_input_report drivers/hid/hid-core.c:2152 [inline] hid_input_report+0x44e/0x580 drivers/hid/hid-core.c:2174 hid_irq_in+0x47e/0x6d0 drivers/hid/usbhid/hid-core.c:286 __usb_hcd_giveback_urb+0x3b3/0x5e0 drivers/usb/core/hcd.c:1657 dummy_timer+0x8a9/0x47d0 drivers/usb/gadget/udc/dummy_hcd.c:2005 Allocated by task 10: hidraw_connect+0x57/0x430 drivers/hid/hidraw.c:606 hid_connect+0x5bf/0x19d0 drivers/hid/hid-core.c:2277 hid_hw_start+0xa8/0x120 drivers/hid/hid-core.c:2387 corsairpsu_probe+0xd9/0x3c0 drivers/hwmon/corsair-psu.c:782 Freed by task 10: hidraw_disconnect+0x4f/0x60 drivers/hid/hidraw.c:662 hid_disconnect drivers/hid/hid-core.c:2362 [inline] hid_hw_stop+0x101/0x1e0 drivers/hid/hid-core.c:2407 corsairpsu_probe+0x327/0x3c0 drivers/hwmon/corsair-psu.c:826 Fix the problem by calling hid_device_io_stop() before calling hid_hw_stop(). [groeck: Updated subject and description; call hid_device_io_stop() only if IO has been started]
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|