CVE-2024-56540 (GCVE-0-2024-56540)
Vulnerability from cvelistv5
Published
2024-12-27 14:11
Modified
2026-08-05 11:44
Summary
In the Linux kernel, the following vulnerability has been resolved: accel/ivpu: Prevent recovery invocation during probe and resume Refactor IPC send and receive functions to allow correct handling of operations that should not trigger a recovery process. Expose ivpu_send_receive_internal(), which is now utilized by the D0i3 entry, DCT initialization, and HWS initialization functions. These functions have been modified to return error codes gracefully, rather than initiating recovery. The updated functions are invoked within ivpu_probe() and ivpu_resume(), ensuring that any errors encountered during these stages result in a proper teardown or shutdown sequence. The previous approach of triggering recovery within these functions could lead to a race condition, potentially causing undefined behavior and kernel crashes due to null pointer dereferences.
Impacted products
Vendor Product Version
Linux Linux Version: 45e45362e0955fc3b0b622e8a0d788097f3de902
Version: 45e45362e0955fc3b0b622e8a0d788097f3de902
Version: 45e45362e0955fc3b0b622e8a0d788097f3de902
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "HIGH",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 4.7,
              "baseSeverity": "MEDIUM",
              "confidentialityImpact": "NONE",
              "integrityImpact": "NONE",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2024-56540",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2025-10-01T20:02:29.458816Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "cweId": "CWE-476",
                "description": "CWE-476 NULL Pointer Dereference",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2025-10-01T20:07:16.787Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/accel/ivpu/ivpu_ipc.c",
            "drivers/accel/ivpu/ivpu_ipc.h",
            "drivers/accel/ivpu/ivpu_jsm_msg.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "cac822772c4dc27a285f09caf30072ab76d2bf38",
              "status": "affected",
              "version": "45e45362e0955fc3b0b622e8a0d788097f3de902",
              "versionType": "git"
            },
            {
              "lessThan": "362ef76020ea6219a4df4ac5b738672b59527239",
              "status": "affected",
              "version": "45e45362e0955fc3b0b622e8a0d788097f3de902",
              "versionType": "git"
            },
            {
              "lessThan": "5eaa497411197c41b0813d61ba3fbd6267049082",
              "status": "affected",
              "version": "45e45362e0955fc3b0b622e8a0d788097f3de902",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/accel/ivpu/ivpu_ipc.c",
            "drivers/accel/ivpu/ivpu_ipc.h",
            "drivers/accel/ivpu/ivpu_jsm_msg.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.8"
            },
            {
              "lessThan": "6.8",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.11.*",
              "status": "unaffected",
              "version": "6.11.11",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.2",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.13",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.11.11",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.2",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13",
                  "versionStartIncluding": "6.8",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\naccel/ivpu: Prevent recovery invocation during probe and resume\n\nRefactor IPC send and receive functions to allow correct\nhandling of operations that should not trigger a recovery process.\n\nExpose ivpu_send_receive_internal(), which is now utilized by the D0i3\nentry, DCT initialization, and HWS initialization functions.\nThese functions have been modified to return error codes gracefully,\nrather than initiating recovery.\n\nThe updated functions are invoked within ivpu_probe() and ivpu_resume(),\nensuring that any errors encountered during these stages result in a proper\nteardown or shutdown sequence. The previous approach of triggering recovery\nwithin these functions could lead to a race condition, potentially causing\nundefined behavior and kernel crashes due to null pointer dereferences."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerable paths are reached through the DRM accel character device (`/dev/accel/accelN`) via `ivpu_submit_ioctl`/`ivpu_rpm_get()` driving runtime PM resume/suspend, or via local driver probe and system suspend/resume. No network or remote input is involved.\nAC:L - The attacker controls both sides of the race \u2014 it drives runtime resume/suspend cycles via repeated ioctls while the queued `recovery_work` runs on `system_long_wq`, and can wedge the NPU firmware with its own submitted workload to produce the required IPC timeouts. Per the race-condition guidance this is Low, and the window is widened arbitrarily by repeated triggering.\nPR:L - An open file descriptor on the accel device node is sufficient; all ivpu ioctls including `IVPU_SUBMIT` are declared with flags `0` (no `DRM_ROOT_ONLY`, no `DRM_MASTER`), and distributions shipping the Intel NPU userspace stack grant the unprivileged `render` group access to `/dev/accel/accelN`. No real root or capability is needed.\nUI:N - The attacking process performs every step itself \u2014 submitting jobs, forcing autosuspend, and re-triggering resume through ioctls. No victim action such as mounting media or opening a file is required.\nS:U - The corruption and crash are confined to kernel memory managed by the ivpu driver within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - When probe fails, `ivpu_dev_init()`\u0027s error paths never call `ivpu_pm_cancel_recovery()`, so the queued `recovery_work` operates on the `devm`-freed `struct ivpu_device`, a use-after-free of a large heap object the attacker can spray and read back through `ivpu_dev_coredump()`/firmware-log paths, and the concurrent `ivpu_fw_load()`/`ivpu_bo_vaddr()` accesses read freed firmware buffers.\nI:H - The same use-after-free gives a write primitive \u2014 `ivpu_pm_recovery_work()` writes into the freed `vdev` (`atomic_inc(\u0026vdev-\u003epm-\u003ereset_counter)`, `down_write(\u0026vdev-\u003epm-\u003ereset_lock)`, `INIT`/list operations) and the concurrent `ivpu_suspend()`/`ivpu_resume()` on the same device state performs unsynchronized MMU and firmware-memory reinitialization, which is exploitable for heap corruption and control-flow hijack.\nA:H - The commit message explicitly states the race causes \"undefined behavior and kernel crashes due to null pointer dereferences\"; `ivpu_pm_prepare_warm_boot()` dereferences `ivpu_bo_vaddr(fw-\u003emem)` after teardown, and recovery re-entering `pm_runtime_resume_and_get()` from inside a runtime PM callback while holding `reset_lock` can deadlock the device."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:44:56.351Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/cac822772c4dc27a285f09caf30072ab76d2bf38"
        },
        {
          "url": "https://git.kernel.org/stable/c/362ef76020ea6219a4df4ac5b738672b59527239"
        },
        {
          "url": "https://git.kernel.org/stable/c/5eaa497411197c41b0813d61ba3fbd6267049082"
        }
      ],
      "title": "accel/ivpu: Prevent recovery invocation during probe and resume",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-56540",
    "datePublished": "2024-12-27T14:11:22.207Z",
    "dateReserved": "2024-12-27T14:03:05.987Z",
    "dateUpdated": "2026-08-05T11:44:56.351Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 4.7, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:H\", \"integrityImpact\": \"NONE\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"HIGH\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"NONE\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-56540\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2025-10-01T20:02:29.458816Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-476\", \"description\": \"CWE-476 NULL Pointer Dereference\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2025-10-01T15:40:49.945Z\"}}], \"cna\": {\"title\": \"accel/ivpu: Prevent recovery invocation during probe and resume\", \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"45e45362e0955fc3b0b622e8a0d788097f3de902\", \"lessThan\": \"cac822772c4dc27a285f09caf30072ab76d2bf38\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"45e45362e0955fc3b0b622e8a0d788097f3de902\", \"lessThan\": \"362ef76020ea6219a4df4ac5b738672b59527239\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"45e45362e0955fc3b0b622e8a0d788097f3de902\", \"lessThan\": \"5eaa497411197c41b0813d61ba3fbd6267049082\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/accel/ivpu/ivpu_ipc.c\", \"drivers/accel/ivpu/ivpu_ipc.h\", \"drivers/accel/ivpu/ivpu_jsm_msg.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"6.8\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.8\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.11.11\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.11.*\"}, {\"status\": \"unaffected\", \"version\": \"6.12.2\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.12.*\"}, {\"status\": \"unaffected\", \"version\": \"6.13\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/accel/ivpu/ivpu_ipc.c\", \"drivers/accel/ivpu/ivpu_ipc.h\", \"drivers/accel/ivpu/ivpu_jsm_msg.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/cac822772c4dc27a285f09caf30072ab76d2bf38\"}, {\"url\": \"https://git.kernel.org/stable/c/362ef76020ea6219a4df4ac5b738672b59527239\"}, {\"url\": \"https://git.kernel.org/stable/c/5eaa497411197c41b0813d61ba3fbd6267049082\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\naccel/ivpu: Prevent recovery invocation during probe and resume\\n\\nRefactor IPC send and receive functions to allow correct\\nhandling of operations that should not trigger a recovery process.\\n\\nExpose ivpu_send_receive_internal(), which is now utilized by the D0i3\\nentry, DCT initialization, and HWS initialization functions.\\nThese functions have been modified to return error codes gracefully,\\nrather than initiating recovery.\\n\\nThe updated functions are invoked within ivpu_probe() and ivpu_resume(),\\nensuring that any errors encountered during these stages result in a proper\\nteardown or shutdown sequence. The previous approach of triggering recovery\\nwithin these functions could lead to a race condition, potentially causing\\nundefined behavior and kernel crashes due to null pointer dereferences.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.11.11\", \"versionStartIncluding\": \"6.8\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.12.2\", \"versionStartIncluding\": \"6.8\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.13\", \"versionStartIncluding\": \"6.8\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2025-05-04T09:57:44.823Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-56540\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2025-10-01T20:07:16.787Z\", \"dateReserved\": \"2024-12-27T14:03:05.987Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-12-27T14:11:22.207Z\", \"assignerShortName\": \"Linux\"}",
      "dataType": "CVE_RECORD",
      "dataVersion": "5.1"
    }
  }
}


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…