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

HID: nintendo: fix out-of-bounds read in joycon_ctlr_read_handler()

joycon_ctlr_read_handler() casts an incoming HID input report to
struct joycon_input_report and parses it, guarding the cast only with a
12-byte length check:

if (size >= 12) /* make sure it contains the input report */
joycon_parse_report(ctlr, (struct joycon_input_report *)data);

struct joycon_input_report is 49 bytes: a 13-byte header followed by a
union whose IMU arm is 36 bytes. For an IMU report joycon_parse_report()
-> joycon_parse_imu_report() walks that union (struct offsets 13..48),
so a report of exactly 12 bytes with data[0] == JC_INPUT_IMU_DATA passes
the guard yet is read up to 37 bytes past its declared length. The
over-read bytes are decoded into accelerometer/gyroscope values and
forwarded to userspace through the "(IMU)" input device, leaking
driver-internal memory. data[0] and size are fully controlled by a
malicious or spoofed Joy-Con/Pro Controller.

Receive buffers are sized to the maximum report length, so this is an
over-read within the allocation rather than a slab OOB, but the decoded
bytes still reach userspace.

The sibling subcmd path in joycon_ctlr_handle_event() already bounds the
same cast correctly:

if (size < sizeof(struct joycon_input_report) ||
data[0] != JC_INPUT_SUBCMD_REPLY)
break;

Use the same sizeof(struct joycon_input_report) bound here.
Published: 2026-09-04
Score: n/a
EPSS: < 1% Very Low
KEV: No
Impact: Information Disclosure via out-of-bounds read
Action: Apply Patch
AI Analysis

Impact

The Linux kernel HID driver for Nintendo Joy‑Con and Pro Controllers performs a premature length check in the joycon_ctlr_read_handler routine, allowing an attacker to supply a 12‑byte report that is incorrectly processed as a 49‑byte IMU report. The over‑read propagates kernel memory into the (IMU) input device and forwards the data to userspace, causing a kernel memory disclosure. The flaw arises from the absence of a sizeof() comparison for the structure being parsed.

Affected Systems

All Linux kernel builds that include the HID driver for Nintendo Joy‑Con or Pro Controllers and that have not applied the commit adding a proper sizeof(struct joycon_input_report) guard are vulnerable. This includes all kernels released before the patch, regardless of major version.

Risk and Exploitability

An attacker only needs the ability to send a crafted HID report to a connected or spoofed Joy‑Con/Pro controller; no elevated privileges are required. The vulnerability is not listed in the CISA KEV catalog and no EPSS score is available, but the low barrier to exploitation and kernel memory leakage give the flaw a moderate‑to‑high risk potential.

Generated by OpenCVE AI on September 4, 2026 at 21:22 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade the Linux kernel to a version that incorporates the patch fixing the bounds check in joycon_ctlr_read_handler()
  • If a kernel upgrade cannot be performed immediately, disable or block Nintendo Joy‑Con/Pro controller devices to prevent malicious HID reports from being processed
  • Use device isolation or firewall rules to restrict Bluetooth HID traffic from untrusted sources

Generated by OpenCVE AI on September 4, 2026 at 21:22 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Debian DLA Debian DLA DLA-4777-1 linux security update
Debian DLA Debian DLA DLA-4788-1 linux-6.12 security update
History

Fri, 04 Sep 2026 21:45:00 +0000

Type Values Removed Values Added
Weaknesses CWE-125

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: nintendo: fix out-of-bounds read in joycon_ctlr_read_handler() joycon_ctlr_read_handler() casts an incoming HID input report to struct joycon_input_report and parses it, guarding the cast only with a 12-byte length check: if (size >= 12) /* make sure it contains the input report */ joycon_parse_report(ctlr, (struct joycon_input_report *)data); struct joycon_input_report is 49 bytes: a 13-byte header followed by a union whose IMU arm is 36 bytes. For an IMU report joycon_parse_report() -> joycon_parse_imu_report() walks that union (struct offsets 13..48), so a report of exactly 12 bytes with data[0] == JC_INPUT_IMU_DATA passes the guard yet is read up to 37 bytes past its declared length. The over-read bytes are decoded into accelerometer/gyroscope values and forwarded to userspace through the "(IMU)" input device, leaking driver-internal memory. data[0] and size are fully controlled by a malicious or spoofed Joy-Con/Pro Controller. Receive buffers are sized to the maximum report length, so this is an over-read within the allocation rather than a slab OOB, but the decoded bytes still reach userspace. The sibling subcmd path in joycon_ctlr_handle_event() already bounds the same cast correctly: if (size < sizeof(struct joycon_input_report) || data[0] != JC_INPUT_SUBCMD_REPLY) break; Use the same sizeof(struct joycon_input_report) bound here.
Title HID: nintendo: fix out-of-bounds read in joycon_ctlr_read_handler()
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:44.445Z

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

Link: CVE-2026-80772

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

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

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

Link: CVE-2026-80772

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-04T21:30:07Z

Weaknesses