Skip to content
Heist/ feed
Back to feed
UnratedFix available

HID: mcp2221: validate report size in mcp2221_raw_event()

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: HID: mcp2221: validate report size in mcp2221_raw_event() mcp2221_raw_event() never validates the size of incoming HID reports. In the MCP2221_I2C_GET_DATA path it trusts the device-supplied data[3] as the copy length without checking that 4 + data[3] bytes actually exist in the received report. A malicious or misbehaving USB device can send a short report with a large data[3], causing the memcpy to read past the valid report data in the HID transfer buffer and leak uninitialized kernel memory back to userspace through the I2C/SMBus read path. Add a minimum size check at entry and validate that the source range fits within the received report before the copy.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.270, 5.15.221, 6.1.188, 6.12.109, 6.18.50, 6.6.157, 7.2.4
CVEs
CVE-2026-89621
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 02:25 UTC · Revision 1

Source evidence

HID: mcp2221: validate report size in mcp2221_raw_event()

core-osv · Original source

Published 11 Sept 2026, 19:45 UTC

In the Linux kernel, the following vulnerability has been resolved: HID: mcp2221: validate report size in mcp2221_raw_event() mcp2221_raw_event() never validates the size of incoming HID reports. In the MCP2221_I2C_GET_DATA path it trusts the device-supplied data[3] as the copy length without checking that 4 + data[3] bytes actually exist in the received report. A malicious or misbehaving USB device can send a short report with a large data[3], causing the memcpy to read past the valid report data in the HID transfer buffer and leak uninitialized kernel memory back to userspace through the I2C/SMBus read path. Add a minimum size check at entry and validate that the source range fits within the received report before the copy.

osv:CVE-2026-89621

Kernel

Fixed versions: 5.10.270, 5.15.221, 6.1.188, 6.6.157, 6.12.109, 6.18.50, 7.2.4

Complete source record
{
  "id": "ffb9c69dd00297201267d281dcbe299cc4cfa045e486008acfd21c694bd1dda4",
  "url": "https://osv.dev/vulnerability/CVE-2026-89621",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "HID: mcp2221: validate report size in mcp2221_raw_event()",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: HID: mcp2221: validate report size in mcp2221_raw_event() mcp2221_raw_event() never validates the size of incoming HID reports. In the MCP2221_I2C_GET_DATA path it trusts the device-supplied data[3] as the copy length without checking that 4 + data[3] bytes actually exist in the received report. A malicious or misbehaving USB device can send a short report with a large data[3], causing the memcpy to read past the valid report data in the HID transfer buffer and leak uninitialized kernel memory back to userspace through the I2C/SMBus read path. Add a minimum size check at entry and validate that the source range fits within the received report before the copy.",
    "evidence": "osv:CVE-2026-89621",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.10.270",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.221",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.188",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.157",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.109",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.50",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.2.4",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "unknown",
    "structured": {
      "id": "CVE-2026-89621",
      "aliases": [
        "CVE-2026-89621"
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "67a95c21463d066060b0f66d65a75d45bb386ffb"
                },
                {
                  "fixed": "cb38b1f149b7143355b37e86c841acf0076e5c2a"
                },
                {
                  "fixed": "b2c67dc0e30c308647bbd9b9e5d69a44c9d2733d"
                },
                {
                  "fixed": "fffcfa367072628c3144cca17d2a3c3c9e50c057"
                },
                {
                  "fixed": "c1c508e8923911cb458234997e55b7a4b9aa066f"
                },
                {
                  "fixed": "bdc6a3af0dd734a326acdb7d6401a3b6a9f4f149"
                },
                {
                  "fixed": "127de5919820f88a9d55e8371ad4ac49f625f4c5"
                },
                {
                  "fixed": "7c18fb36708a97ff6772825cc087b6d537bbf0d5"
                },
                {
                  "fixed": "2c9a6998c19503626c57a2267bf279e204113079"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89621.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.7.0"
                },
                {
                  "fixed": "5.10.270"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.221"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.188"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.157"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.109"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.50"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.2.4"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-89621.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:32.438149089Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/127de5919820f88a9d55e8371ad4ac49f625f4c5",
        "https://git.kernel.org/stable/c/2c9a6998c19503626c57a2267bf279e204113079",
        "https://git.kernel.org/stable/c/7c18fb36708a97ff6772825cc087b6d537bbf0d5",
        "https://git.kernel.org/stable/c/b2c67dc0e30c308647bbd9b9e5d69a44c9d2733d",
        "https://git.kernel.org/stable/c/bdc6a3af0dd734a326acdb7d6401a3b6a9f4f149",
        "https://git.kernel.org/stable/c/c1c508e8923911cb458234997e55b7a4b9aa066f",
        "https://git.kernel.org/stable/c/cb38b1f149b7143355b37e86c841acf0076e5c2a",
        "https://git.kernel.org/stable/c/fffcfa367072628c3144cca17d2a3c3c9e50c057",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89621.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-89621",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/89xxx/CVE-2026-89621.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-89621",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": null
  },
  "source_id": "core-osv",
  "document_id": 499671,
  "published_at": "2026-09-11T19:45:19.42+00:00"
}