KernelScan.io

HIGH Introduced in 5.7

hid RxBuffer UAF

CVE-2026-89622

CVSS 7.8 / 10.0 NVD

CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

KernelScan AI6.8MEDIUM

01

In the Linux kernel, the following vulnerability has been resolved: HID: mcp2221: clear rxbuf after I2C/SMBus transfer completes mcp_i2c_smbus_read() stores the caller-supplied buffer pointer in mcp->rxbuf for the duration of a transfer but never clears it when the transfer finishes or times out. Once the caller frees or reuses the buffer, mcp->rxbuf becomes a dangling pointer. A delayed or spurious MCP2221_I2C_GET_DATA report can then drive mcp2221_raw_event() to memcpy device data into the freed memory, causing a write use-after-free. Route all return paths through a single exit point that clears mcp->rxbuf and mcp->rxbuf_size, so that the existing !mcp->rxbuf guard in the raw_event handler can reject any report arriving after the transfer has ended.

02

Engine v0.6.0

Risk summary

A use-after-free in the MCP2221 USB-to-I2C/SMBus bridge driver allows a physically connected malicious USB device to write into freed kernel memory by sending a delayed or spurious HID report after a transfer completes. Products with exposed USB ports are at risk; sealed enclosures without accessible USB ports are not. The bug can lead to kernel memory corruption, information disclosure, or denial of service.

Affecteddrivers/hid/hid-mcp2221.c (HID MCP2221 USB-to-I2C/SMBus bridge driver)

Vulnerability analysis

The MCP2221 USB-to-I2C/SMBus bridge driver stores a pointer to the caller's receive buffer during transfers but never clears it when a transfer finishes or times out. After the caller frees or reuses that buffer, the stale pointer remains in the driver's state, and a delayed or spurious USB HID report from the device can cause the kernel to write device data into the freed memory. The fix routes all return paths through a single exit point that nulls the buffer pointer and its size, so the existing guard in the event handler rejects any report arriving after the transfer has ended. This vulnerability requires physical access to connect a USB device that presents as an MCP2221 bridge; no special software privileges are needed beyond plugging in the device, and the driver loads automatically on insertion.

03

BranchIntroducedFixed inPatch commit
6.125.76.12.111d6c6b293173c
6.185.76.18.5103c34309eb1b
6.65.76.6.160bd146a8ff107
7.25.77.2.4968546b676d9
mainline5.77.3db2333f88729
cip/6.125.76.12.111-cip32d6c6b293173c

04

State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.

CIP treeState
cip/6.12Fixed in 6.12.111-cip32
cip/6.1Affected — no CIP fix yet (latest 6.1.189-cip61)
cip/6.1-rtAffected — no CIP fix yet (latest 6.1.189-cip61-rt32)
cip/5.10Affected — no CIP fix yet (latest 5.10.271-cip78)
cip/5.10-rtAffected — no CIP fix yet (latest 5.10.268-cip77-rt34)