CVE-2024-56775 (GCVE-0-2024-56775)
Vulnerability from cvelistv5
Published
2025-01-08 17:49
Modified
2026-08-05 11:46
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/amd/display: Fix handling of plane refcount [Why] The mechanism to backup and restore plane states doesn't maintain refcount, which can cause issues if the refcount of the plane changes in between backup and restore operations, such as memory leaks if the refcount was supposed to go down, or double frees / invalid memory accesses if the refcount was supposed to go up. [How] Cache and re-apply current refcount when restoring plane states.
Impacted products
Vendor Product Version
Linux Linux Version: 4562236b3bc0a28aeb6ee93b2d8a849a4c4e1c7c
Version: 4562236b3bc0a28aeb6ee93b2d8a849a4c4e1c7c
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "cvssV3_1": {
              "attackComplexity": "LOW",
              "attackVector": "LOCAL",
              "availabilityImpact": "HIGH",
              "baseScore": 7.8,
              "baseSeverity": "HIGH",
              "confidentialityImpact": "HIGH",
              "integrityImpact": "HIGH",
              "privilegesRequired": "LOW",
              "scope": "UNCHANGED",
              "userInteraction": "NONE",
              "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
              "version": "3.1"
            }
          },
          {
            "other": {
              "content": {
                "id": "CVE-2024-56775",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "total"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2025-10-01T19:56:42.047459Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "problemTypes": [
          {
            "descriptions": [
              {
                "cweId": "CWE-415",
                "description": "CWE-415 Double Free",
                "lang": "en",
                "type": "CWE"
              }
            ]
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2025-10-01T19:57:24.727Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/display/dc/core/dc.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "8cb2f6793845f135b28361ba8e96901cae3e5790",
              "status": "affected",
              "version": "4562236b3bc0a28aeb6ee93b2d8a849a4c4e1c7c",
              "versionType": "git"
            },
            {
              "lessThan": "27227a234c1487cb7a684615f0749c455218833a",
              "status": "affected",
              "version": "4562236b3bc0a28aeb6ee93b2d8a849a4c4e1c7c",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/amd/display/dc/core/dc.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.15"
            },
            {
              "lessThan": "4.15",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.4",
              "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.12.4",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13",
                  "versionStartIncluding": "4.15",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/amd/display: Fix handling of plane refcount\n\n[Why]\nThe mechanism to backup and restore plane states doesn\u0027t maintain\nrefcount, which can cause issues if the refcount of the plane changes\nin between backup and restore operations, such as memory leaks if the\nrefcount was supposed to go down, or double frees / invalid memory\naccesses if the refcount was supposed to go up.\n\n[How]\nCache and re-apply current refcount when restoring plane states."
        }
      ],
      "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 code is reached only through DRM atomic-commit/page-flip ioctls on the local `/dev/dri/card*` node (amdgpu_dm_atomic_commit_tail \u2192 dc_update_planes_and_stream), which requires local access to the machine. There is no remote or network-facing path into the amdgpu display core.\nAC:L - Userspace directly controls the plane topology, so it can deterministically drive UPDATE_TYPE_FULL commits that add/remove MPO planes and force the minimal-transition path where a plane\u0027s refcount changes between backup and restore. No condition outside the attacker\u0027s control is needed, and the sequence can be repeated in a loop until the corrupted refcount reaches zero.\nPR:L - An ordinary unprivileged user with a graphical seat (logind session or `video` group membership) is DRM master on the primary node and may issue atomic commits with overlay planes; no root or CAP_SYS_ADMIN is required.\nUI:N - The attacker triggers the faulty backup/restore sequence entirely through its own atomic commits; no victim action such as mounting media or opening a file is involved.\nS:U - The corruption stays within the kernel of the same machine and the impact is on kernel memory under the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Stomping the kref with a stale lower value causes premature kvfree() of the kvzalloc\u0027d `dc_plane_state` while pipe contexts still reference it, so the attacker can reclaim the freed slab object and read back kernel memory through the dangling references \u2014 a use-after-free read primitive.\nI:H - The same use-after-free/double-free lets the attacker spray a controlled object into the freed allocation, and subsequent writes through the stale `plane_states[i]` pointers (including the function-pointer-bearing sub-structures freed in dc_plane_destruct) yield an arbitrary-write / control-flow-hijack primitive.\nA:H - Even without full exploitation, the mismatched refcount produces double frees and invalid memory accesses that oops or panic the kernel; the leak case (refcount restored too high) additionally exhausts memory over repeated commits."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:46:26.696Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/8cb2f6793845f135b28361ba8e96901cae3e5790"
        },
        {
          "url": "https://git.kernel.org/stable/c/27227a234c1487cb7a684615f0749c455218833a"
        }
      ],
      "title": "drm/amd/display: Fix handling of plane refcount",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-56775",
    "datePublished": "2025-01-08T17:49:13.907Z",
    "dateReserved": "2024-12-29T11:26:39.766Z",
    "dateUpdated": "2026-08-05T11:46:26.696Z",
    "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\": 7.8, \"attackVector\": \"LOCAL\", \"baseSeverity\": \"HIGH\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H\", \"integrityImpact\": \"HIGH\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"HIGH\", \"privilegesRequired\": \"LOW\", \"confidentialityImpact\": \"HIGH\"}}, {\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-56775\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"version\": \"2.0.3\", \"timestamp\": \"2025-10-01T19:56:42.047459Z\"}}}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-415\", \"description\": \"CWE-415 Double Free\"}]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2025-10-01T15:50:50.757Z\"}}], \"cna\": {\"title\": \"drm/amd/display: Fix handling of plane refcount\", \"metrics\": [{\"cvssV3_1\": {\"version\": \"3.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\"}, \"scenarios\": [{\"lang\": \"en\", \"value\": \"AV:L - The vulnerable code is reached only through DRM atomic-commit/page-flip ioctls on the local `/dev/dri/card*` node (amdgpu_dm_atomic_commit_tail \\u2192 dc_update_planes_and_stream), which requires local access to the machine. There is no remote or network-facing path into the amdgpu display core.\\nAC:L - Userspace directly controls the plane topology, so it can deterministically drive UPDATE_TYPE_FULL commits that add/remove MPO planes and force the minimal-transition path where a plane\u0027s refcount changes between backup and restore. No condition outside the attacker\u0027s control is needed, and the sequence can be repeated in a loop until the corrupted refcount reaches zero.\\nPR:L - An ordinary unprivileged user with a graphical seat (logind session or `video` group membership) is DRM master on the primary node and may issue atomic commits with overlay planes; no root or CAP_SYS_ADMIN is required.\\nUI:N - The attacker triggers the faulty backup/restore sequence entirely through its own atomic commits; no victim action such as mounting media or opening a file is involved.\\nS:U - The corruption stays within the kernel of the same machine and the impact is on kernel memory under the same security authority; no VM, IOMMU, or sandbox boundary is crossed.\\nC:H - Stomping the kref with a stale lower value causes premature kvfree() of the kvzalloc\u0027d `dc_plane_state` while pipe contexts still reference it, so the attacker can reclaim the freed slab object and read back kernel memory through the dangling references \\u2014 a use-after-free read primitive.\\nI:H - The same use-after-free/double-free lets the attacker spray a controlled object into the freed allocation, and subsequent writes through the stale `plane_states[i]` pointers (including the function-pointer-bearing sub-structures freed in dc_plane_destruct) yield an arbitrary-write / control-flow-hijack primitive.\\nA:H - Even without full exploitation, the mismatched refcount produces double frees and invalid memory accesses that oops or panic the kernel; the leak case (refcount restored too high) additionally exhausts memory over repeated commits.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"4562236b3bc0a28aeb6ee93b2d8a849a4c4e1c7c\", \"lessThan\": \"8cb2f6793845f135b28361ba8e96901cae3e5790\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"4562236b3bc0a28aeb6ee93b2d8a849a4c4e1c7c\", \"lessThan\": \"27227a234c1487cb7a684615f0749c455218833a\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/gpu/drm/amd/display/dc/core/dc.c\"], \"defaultStatus\": \"unaffected\"}, {\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"4.15\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"4.15\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.12.4\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.12.*\"}, {\"status\": \"unaffected\", \"version\": \"6.13\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/gpu/drm/amd/display/dc/core/dc.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/8cb2f6793845f135b28361ba8e96901cae3e5790\"}, {\"url\": \"https://git.kernel.org/stable/c/27227a234c1487cb7a684615f0749c455218833a\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\ndrm/amd/display: Fix handling of plane refcount\\n\\n[Why]\\nThe mechanism to backup and restore plane states doesn\u0027t maintain\\nrefcount, which can cause issues if the refcount of the plane changes\\nin between backup and restore operations, such as memory leaks if the\\nrefcount was supposed to go down, or double frees / invalid memory\\naccesses if the refcount was supposed to go up.\\n\\n[How]\\nCache and re-apply current refcount when restoring plane states.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.12.4\", \"versionStartIncluding\": \"4.15\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.13\", \"versionStartIncluding\": \"4.15\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:46:26.696Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-56775\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:46:26.696Z\", \"dateReserved\": \"2024-12-29T11:26:39.766Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2025-01-08T17:49:13.907Z\", \"assignerShortName\": \"Linux\"}",
      "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…