Cloudanix VulnDB

CVE-2026-80918

None

CVSS

—

EPSS

0.2%

Published

Sep 9, 2026

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A bug in how Linux reads certain input device descriptions can accidentally print a secret internal memory address into system logs, which attackers could use to make other attacks more effective.

Exploitation
Physical Access
Attacker needs
Physical Access
Complexity
Moderate
Impact
Data Exposure
Component
OS kernel
Class
Information Disclosure
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

The flaw is a type confusion in HID descriptor parsing where item_udata() and item_sdata() treat a long-format HID_ITEM_TAG_LONG item's kernel pointer (stored in item->data.longdata) as a short-format integer, returning the lower half of that pointer value instead of the intended data.

Why it matters to the business

A locally connected or emulated malicious HID device can trigger a kernel pointer disclosure into system logs, giving attackers a building block for more reliable kernel exploits on affected Linux systems.

How an attack unfolds

An attacker crafts a USB or Bluetooth HID device whose report descriptor encodes a REPORT_SIZE item using the long format with size=4. When the kernel calls hid_scan_report() on attachment, the pointer reinterpretation leaks the lower 32 bits of a kernel address into dmesg as an "invalid report_size" value; the main hid_parse_collections() path rejects long items so the device is only partially processed.

How to fix it

Apply the upstream fix that adds short-format checks inside item_udata() and item_sdata(); rebuild and reboot with a patched kernel. Until patches are available, restrict untrusted HID devices via USBGuard or physical port controls and consider disabling HID long-item parsing if a downstream patch removes the code path.

How to confirm the fix worked

After patching, connect a test HID device containing a long-format REPORT_SIZE item and confirm the kernel log no longer emits an "invalid report_size" message containing a large hexadecimal-looking number; also verify that hid_scan_report() no longer dereferences long-item data as short integers.

Typical attack path

  1. attacker presents a USB/Bluetooth HID device with a long-format HID_GLOBAL_ITEM_TAG_REPORT_SIZE descriptor
  2. kernel invokes hid_scan_report() which calls fetch_item() and stores the long item pointer
  3. item_udata()/item_sdata() misinterprets the pointer as an integer and emits the value to the kernel log
  4. attacker reads dmesg or /var/log/kern.log to obtain a kernel address for subsequent exploitation

How to detect it

Search kernel logs (dmesg, /var/log/kern.log, journalctl) for the exact phrase "invalid report_size" followed by a decimal number that resembles a truncated kernel pointer; correlate with recent USB or Bluetooth HID device connection events.

  • invalid report_size [0-9]{8,}
  • hid (null): invalid report_size

What your security team should do

  • Prioritize kernel updates on all Linux endpoints that accept arbitrary HID devices
  • Add kernel log monitoring rules for the string "invalid report_size" followed by an anomalous numeric value
  • Enforce USB device allow-listing for high-risk workstations until patches are deployed

The record

In the Linux kernel, the following vulnerability has been resolved: HID: core: fix number/pointer type confusion on long items When fetch_item() is called by hid_scan_report() on an item with HID_ITEM_TAG_LONG, it stores a pointer to the item data in item->data.longdata instead of storing a value directly in item->data.{u8/u16/u32}. When item_udata() or item_sdata() encounters such an item, it incorrectly assumes that the item is in short format, and therefore returns the lower part of a kernel pointer reinterpreted as a number. When a HID device is connected whose descriptor contains a HID_GLOBAL_ITEM_TAG_REPORT_SIZE encoded in long format with size=4, this causes the lower half of a kernel pointer to be printed into dmesg as a number, like this: hid (null): invalid report_size 107953555 To fix it, let item_udata() and item_sdata() verify that the item is in short format. Note that this bug only affects hid_scan_report(), while the main parsing pass hid_parse_collections() will always bail out when encountering a long item. Sidenote: There are currently no users of data.longdata; maybe we should just remove any parsing of long-format descriptors as a follow-up.

Affected packages

Ecosystem Package Introduced Fixed