<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 14:15:31 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-80772 — HID: nintendo: fix out-of-bounds read in joycon_ctlr_read_handler()</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-80772</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;HID: nintendo: fix out-of-bounds read in joycon_ctlr_read_handler()&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;if (size &amp;gt;= 12) /* make sure it contains the input report */
		joycon_parse_report(ctlr, (struct joycon_input_report *)data);&lt;/p&gt;
&lt;p&gt;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()
-&amp;gt; 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 &amp;#34;(IMU)&amp;#34; input device, leaking
driver-internal memory. data[0] and size are fully controlled by a
malicious or spoofed Joy-Con/Pro Controller.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;The sibling subcmd path in joycon_ctlr_handle_event() already bounds the
same cast correctly:&lt;/p&gt;
&lt;p&gt;if (size &amp;lt; sizeof(struct joycon_input_report) ||
	    data[0] != JC_INPUT_SUBCMD_REPLY)
		break;&lt;/p&gt;
&lt;p&gt;Use the same sizeof(struct joycon_input_report) bound here.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Linux&lt;/p&gt;
&lt;p&gt;In the Linux kernel, the following vulnerability has been resolved:&lt;/p&gt;
&lt;p&gt;HID: nintendo: fix out-of-bounds read in joycon_ctlr_read_handler()&lt;/p&gt;
&lt;p&gt;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:&lt;/p&gt;
&lt;p&gt;if (size &amp;gt;= 12) /* make sure it contains the input report */
		joycon_parse_report(ctlr, (struct joycon_input_report *)data);&lt;/p&gt;
&lt;p&gt;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()
-&amp;gt; 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 &amp;#34;(IMU)&amp;#34; input device, leaking
driver-internal memory. data[0] and size are fully controlled by a
malicious or spoofed Joy-Con/Pro Controller.&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;The sibling subcmd path in joycon_ctlr_handle_event() already bounds the
same cast correctly:&lt;/p&gt;
&lt;p&gt;if (size &amp;lt; sizeof(struct joycon_input_report) ||
	    data[0] != JC_INPUT_SUBCMD_REPLY)
		break;&lt;/p&gt;
&lt;p&gt;Use the same sizeof(struct joycon_input_report) bound here.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-80772</guid>
    </item>
  </channel>
</rss>
