Description
In the Linux kernel, the following vulnerability has been resolved:

HID: magicmouse: prevent unbounded recursion in magicmouse_raw_event()

magicmouse_raw_event() handles DOUBLE_REPORT_ID (0xf7) packets, which pack
two touch reports into one, by splitting the packet and calling itself on
each half. The only guard against runaway recursion is a "size < 1" check,
which stops zero-sized calls but does not bound the recursion depth.

A malicious HID device that matches this driver can send a report starting
with DOUBLE_REPORT_ID and filled with the sequence [0xf7, 0x00]. Each level
consumes two bytes and recurses on the remainder, so an incoming report of
up to HID_MAX_BUFFER_SIZE (16 KiB) drives roughly 8000 nested calls. That
easily exhausts the 16 KiB kernel stack, leading to a stack overflow: a
panic with CONFIG_VMAP_STACK, or memory corruption without it.

A double report only ever wraps two normal reports; it is never
legitimately nested. Refuse to re-enter the DOUBLE_REPORT_ID case from a
recursive call so the recursion depth is bounded to two, while all valid
packets keep being parsed exactly as before.
Published: 2026-09-04
Score: n/a
EPSS: n/a
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

A malicious HID device can send a specially crafted packet beginning with the DOUBLE_REPORT_ID 0xf7 and followed by zero bytes. The kernel driver processes this packet by recursively calling the same parsing routine on each half of the packet. Because the only check is a size < 1 test, the recursion depth is unbounded. For an incoming report of up to the maximum buffer size, the driver can generate roughly 8000 nested calls, quickly exhausting the 16 KiB kernel stack. This overflow triggers a kernel panic when virtual mapping is enabled or results in memory corruption otherwise. The outcome is a loss of system availability and memory corruption, without a stated escalation to higher privileges.

Affected Systems

All variants of the Linux kernel that include the magicmouse HID driver are affected. No specific version information is provided, so any kernel containing this driver is vulnerable.

Risk and Exploitability

The EPSS score is not available and the vulnerability is not listed in the CISA KEV catalog, yet the potential impact makes it a severe issue. An attacker would need to physically connect a crafted HID device to the target machine, making the attack vector local via USB or other HID interfaces that load the magicmouse driver. Once the exploit is triggered, the kernel will either panic or suffer memory corruption, enabling denial of service and possible arbitrary code execution at kernel level when the stack corruption propagates.

Generated by OpenCVE AI on September 4, 2026 at 17:48 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Deploy the latest kernel update that contains the fix for magicmouse recursion
  • If a patch is unavailable, unload or block the magicmouse driver on systems that do not require it
  • Create a udev rule to reject HID devices that present a DOUBLE_REPORT_ID packet with a zero‑length payload

Generated by OpenCVE AI on September 4, 2026 at 17:48 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 04 Sep 2026 18:15:00 +0000

Type Values Removed Values Added
Weaknesses CWE-674

Fri, 04 Sep 2026 15:30:00 +0000

Type Values Removed Values Added
Description In the Linux kernel, the following vulnerability has been resolved: HID: magicmouse: prevent unbounded recursion in magicmouse_raw_event() magicmouse_raw_event() handles DOUBLE_REPORT_ID (0xf7) packets, which pack two touch reports into one, by splitting the packet and calling itself on each half. The only guard against runaway recursion is a "size < 1" check, which stops zero-sized calls but does not bound the recursion depth. A malicious HID device that matches this driver can send a report starting with DOUBLE_REPORT_ID and filled with the sequence [0xf7, 0x00]. Each level consumes two bytes and recurses on the remainder, so an incoming report of up to HID_MAX_BUFFER_SIZE (16 KiB) drives roughly 8000 nested calls. That easily exhausts the 16 KiB kernel stack, leading to a stack overflow: a panic with CONFIG_VMAP_STACK, or memory corruption without it. A double report only ever wraps two normal reports; it is never legitimately nested. Refuse to re-enter the DOUBLE_REPORT_ID case from a recursive call so the recursion depth is bounded to two, while all valid packets keep being parsed exactly as before.
Title HID: magicmouse: prevent unbounded recursion in magicmouse_raw_event()
First Time appeared Linux
Linux linux Kernel
CPEs cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*
Vendors & Products Linux
Linux linux Kernel
References

Subscriptions

Linux Linux Kernel
cve-icon MITRE

Status: PUBLISHED

Assigner: Linux

Published:

Updated: 2026-09-04T15:12:54.859Z

Reserved: 2026-08-26T14:34:25.792Z

Link: CVE-2026-80783

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-04T16:18:04.183

Modified: 2026-09-04T16:18:04.183

Link: CVE-2026-80783

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-04T19:15:07Z

Weaknesses