CVE-2024-57986 (GCVE-0-2024-57986)
Vulnerability from cvelistv5
Published
2025-02-27 02:07
Modified
2026-08-05 11:47
Summary
In the Linux kernel, the following vulnerability has been resolved: HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections A report in 2019 by the syzbot fuzzer was found to be connected to two errors in the HID core associated with Resolution Multipliers. One of the errors was fixed by commit ea427a222d8b ("HID: core: Fix deadloop in hid_apply_multiplier."), but the other has not been fixed. This error arises because hid_apply_multipler() assumes that every Resolution Multiplier control is contained in a Logical Collection, i.e., there's no way the routine can ever set multiplier_collection to NULL. This is in spite of the fact that the function starts with a big comment saying: * "The Resolution Multiplier control must be contained in the same * Logical Collection as the control(s) to which it is to be applied. ... * If no Logical Collection is * defined, the Resolution Multiplier is associated with all * controls in the report." * HID Usage Table, v1.12, Section 4.3.1, p30 * * Thus, search from the current collection upwards until we find a * logical collection... The comment and the code overlook the possibility that none of the collections found may be a Logical Collection. The fix is to set the multiplier_collection pointer to NULL if the collection found isn't a Logical Collection.
Impacted products
Vendor Product Version
Linux Linux Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Version: 5a4abb36f312cf83206b1b7d1308ba47cba0b3cc
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-03T19:33:04.819Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "url": "https://lists.debian.org/debian-lts-announce/2025/05/msg00030.html"
          },
          {
            "url": "https://lists.debian.org/debian-lts-announce/2025/03/msg00028.html"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "affected": [
          {
            "defaultStatus": "unknown",
            "product": "SIMATIC S7-1500 TM MFP - GNU/Linux subsystem",
            "vendor": "Siemens",
            "versions": [
              {
                "lessThan": "*",
                "status": "affected",
                "version": "0",
                "versionType": "custom"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-05-12T12:01:47.655Z",
          "orgId": "0b142b55-0307-4c5a-b3c9-f314f3fb7c5e",
          "shortName": "siemens-SADP"
        },
        "references": [
          {
            "url": "https://cert-portal.siemens.com/productcert/html/ssa-265688.html"
          }
        ],
        "x_adpType": "supplier"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/hid/hid-core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "3a002e4029230d9a6be89f869b2328b258612f5c",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            },
            {
              "lessThan": "05dd7d10675b540b8b7b31035c0a8abb6e6f3b88",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            },
            {
              "lessThan": "a32ea3f982b389ea43a41ce77b6fb70d74006d9b",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            },
            {
              "lessThan": "bebf542e8d7c44a18a95f306b1b5dc160c823506",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            },
            {
              "lessThan": "ed3d3883476423f337aac0f22c521819b3f1e970",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            },
            {
              "lessThan": "ebaeca33d32c8bdb705a8c88267737a456f354b1",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            },
            {
              "lessThan": "a5498f1f864ea26f4c613c77f54409c776a95a90",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            },
            {
              "lessThan": "64f2657b579343cf923aa933f08074e6258eb07b",
              "status": "affected",
              "version": "5a4abb36f312cf83206b1b7d1308ba47cba0b3cc",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/hid/hid-core.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "5.0"
            },
            {
              "lessThan": "5.0",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.4.*",
              "status": "unaffected",
              "version": "5.4.291",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.235",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.179",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.129",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.76",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.13",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.13.*",
              "status": "unaffected",
              "version": "6.13.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.14",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.4.291",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.235",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.179",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.129",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.76",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.13",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13.2",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14",
                  "versionStartIncluding": "5.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nHID: core: Fix assumption that Resolution Multipliers must be in Logical Collections\n\nA report in 2019 by the syzbot fuzzer was found to be connected to two\nerrors in the HID core associated with Resolution Multipliers.  One of\nthe errors was fixed by commit ea427a222d8b (\"HID: core: Fix deadloop\nin hid_apply_multiplier.\"), but the other has not been fixed.\n\nThis error arises because hid_apply_multipler() assumes that every\nResolution Multiplier control is contained in a Logical Collection,\ni.e., there\u0027s no way the routine can ever set multiplier_collection to\nNULL.  This is in spite of the fact that the function starts with a\nbig comment saying:\n\n\t * \"The Resolution Multiplier control must be contained in the same\n\t * Logical Collection as the control(s) to which it is to be applied.\n\t   ...\n\t *  If no Logical Collection is\n\t * defined, the Resolution Multiplier is associated with all\n\t * controls in the report.\"\n\t * HID Usage Table, v1.12, Section 4.3.1, p30\n\t *\n\t * Thus, search from the current collection upwards until we find a\n\t * logical collection...\n\nThe comment and the code overlook the possibility that none of the\ncollections found may be a Logical Collection.\n\nThe fix is to set the multiplier_collection pointer to NULL if the\ncollection found isn\u0027t a Logical Collection."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.1,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - The malformed report descriptor is supplied entirely by the HID device and parsed automatically during enumeration; HID transports include Bluetooth HID/HoGP, making a remote-but-link-local attacker with a rogue HID peripheral a valid vector. This matches the established treatment of other drivers/hid/hid-core.c report-descriptor parsing flaws.\nAC:L - The attacker fully controls the report descriptor and simply omits a Logical Collection around the Resolution Multiplier item, which deterministically drives the collection walk to a non-Logical root every time. No race, timing, or memory-layout condition is involved.\nPR:N - No credentials or privileges on the target are needed \u2014 hid_open_report() runs from the enumeration/probe worker as soon as the device is attached or connects, before any userspace authorization. Locally, /dev/uhid offers the same descriptor-injection path.\nUI:N - Report descriptor parsing and hid_setup_resolution_multiplier() are invoked automatically on device attach/connect and again from hidinput_change_resolution_multipliers(); no victim action is required once the device is in range or plugged in.\nS:U - The mishandling and its consequences are confined to the kernel\u0027s HID subsystem and the input events it emits \u2014 the same security authority. No hypervisor, IOMMU, or sandbox boundary is crossed.\nC:N - The defect only causes a pointer to reference a valid-but-wrong collection entry; no out-of-bounds read occurs and no kernel memory contents or addresses are exposed to the attacker or to userspace.\nI:L - The kernel SET_REPORTs the device\u0027s Resolution Multiplier to logical_maximum but then fails to divide by it, so wheel/scroll values delivered to userspace are scaled by an attacker-chosen factor of up to 255x. This is corruption of data crossing into userspace, but gives no arbitrary-write or control-flow primitive.\nA:H - This commit is the designated fix for syzbot report ec5f884c4a135aa0dbb9, \"INFO: rcu detected stall in hub_event\" \u2014 a kernel hang in the USB enumeration worker triggered by a crafted HID descriptor reaching this Resolution Multiplier code. A stall of the hub_event work queue blocks device enumeration and is a complete availability loss."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:47:12.705Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/3a002e4029230d9a6be89f869b2328b258612f5c"
        },
        {
          "url": "https://git.kernel.org/stable/c/05dd7d10675b540b8b7b31035c0a8abb6e6f3b88"
        },
        {
          "url": "https://git.kernel.org/stable/c/a32ea3f982b389ea43a41ce77b6fb70d74006d9b"
        },
        {
          "url": "https://git.kernel.org/stable/c/bebf542e8d7c44a18a95f306b1b5dc160c823506"
        },
        {
          "url": "https://git.kernel.org/stable/c/ed3d3883476423f337aac0f22c521819b3f1e970"
        },
        {
          "url": "https://git.kernel.org/stable/c/ebaeca33d32c8bdb705a8c88267737a456f354b1"
        },
        {
          "url": "https://git.kernel.org/stable/c/a5498f1f864ea26f4c613c77f54409c776a95a90"
        },
        {
          "url": "https://git.kernel.org/stable/c/64f2657b579343cf923aa933f08074e6258eb07b"
        }
      ],
      "title": "HID: core: Fix assumption that Resolution Multipliers must be in Logical Collections",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-57986",
    "datePublished": "2025-02-27T02:07:10.621Z",
    "dateReserved": "2025-02-27T02:04:28.913Z",
    "dateUpdated": "2026-08-05T11:47:12.705Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…