Improper Validation of Array Index Affecting linux-6.12 package, versions <6.12.100-1~deb12u1


Severity

Recommended
0.0
high
0
10

Snyk's Security Team recommends NVD's CVSS assessment. Learn more

Threat Intelligence

EPSS
0.17% (7th percentile)

Do your applications use this vulnerable package?

In a few clicks we can analyze your entire application and see what components are vulnerable in your application, and suggest you quick fixes.

Test your applications
  • Snyk IDSNYK-ECHOLATEST-LINUX612-18579143
  • published7 Aug 2026
  • disclosed25 Jul 2026

Introduced: 25 Jul 2026

CVE-2026-64273  (opens in a new tab)
CWE-129  (opens in a new tab)

How to fix?

Upgrade Echo:latest linux-6.12 to version 6.12.100-1~deb12u1 or higher.

NVD Description

Note: Versions mentioned in the description apply only to the upstream linux-6.12 package and not the linux-6.12 package as distributed by Echo. See How to fix? for Echo:latest relevant fixed versions and status.

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

Input: iforce - bound the device-reported force-feedback effect index

iforce_process_packet() handles a status report (packet id 0x02) by taking a force-feedback effect index straight from the device wire and using it to address the per-effect state array:

i = data[1] &amp; 0x7f;
if (data[1] &amp; 0x80) {
    if (!test_and_set_bit(FF_CORE_IS_PLAYED,
                  iforce-&gt;core_effects[i].flags))
        ...
} else if (test_and_clear_bit(FF_CORE_IS_PLAYED,
                  iforce-&gt;core_effects[i].flags)) {
    ...
}

The index is masked only with 0x7f, so it ranges 0..127, but core_effects[] holds only IFORCE_EFFECTS_MAX (32) entries. For an index of 32..127 the test_and_set_bit()/test_and_clear_bit() is an out-of-bounds single-bit read-modify-write past the array. core_effects[] is the second-to-last member of struct iforce, so the write lands in the trailing members and beyond the embedding kzalloc()'d iforce_serio / iforce_usb object.

data[1] is unvalidated device payload on both transports (the USB interrupt endpoint and serio), and the status path is not gated on force feedback being present, so a malicious or counterfeit device can set or clear a bit at an attacker-chosen offset past the object.

Reject an out-of-range index instead of indexing with it. Bound against the array dimension IFORCE_EFFECTS_MAX rather than dev->ff->max_effects so the check guarantees memory safety regardless of how many effects the device registered. A legitimate "effect started/stopped" status always carries an index below IFORCE_EFFECTS_MAX, so well-formed devices are unaffected; the neighbouring mark_core_as_ready() loop is already bounded and is left untouched.

CVSS Base Scores

version 3.1