CVE-2024-35810 (GCVE-0-2024-35810)
Vulnerability from cvelistv5
Published
2024-05-17 13:23
Modified
2026-08-05 11:30
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/vmwgfx: Fix the lifetime of the bo cursor memory The cleanup can be dispatched while the atomic update is still active, which means that the memory acquired in the atomic update needs to not be invalidated by the cleanup. The buffer objects in vmw_plane_state instead of using the builtin map_and_cache were trying to handle the lifetime of the mapped memory themselves, leading to crashes. Use the map_and_cache instead of trying to manage the lifetime of the buffer objects held by the vmw_plane_state. Fixes kernel oops'es in IGT's kms_cursor_legacy forked-bo.
Impacted products
Vendor Product Version
Linux Linux Version: bb6780aa5a1d99e86757c0c96bfae65a46cf839e
Version: bb6780aa5a1d99e86757c0c96bfae65a46cf839e
Version: bb6780aa5a1d99e86757c0c96bfae65a46cf839e
Version: bb6780aa5a1d99e86757c0c96bfae65a46cf839e
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2024-08-02T03:21:47.494Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/86cb706a40b7e6b2221ee49a298a65ad9b46c02d"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/104a5b2772bc7c0715ae7355ccf9d294a472765c"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/ed381800ea6d9a4c7f199235a471c0c48100f0ae"
          },
          {
            "tags": [
              "x_transferred"
            ],
            "url": "https://git.kernel.org/stable/c/9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76"
          }
        ],
        "title": "CVE Program Container"
      },
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2024-35810",
                "options": [
                  {
                    "Exploitation": "none"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2024-09-10T15:42:38.486904Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2024-09-11T17:32:51.914Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "86cb706a40b7e6b2221ee49a298a65ad9b46c02d",
              "status": "affected",
              "version": "bb6780aa5a1d99e86757c0c96bfae65a46cf839e",
              "versionType": "git"
            },
            {
              "lessThan": "104a5b2772bc7c0715ae7355ccf9d294a472765c",
              "status": "affected",
              "version": "bb6780aa5a1d99e86757c0c96bfae65a46cf839e",
              "versionType": "git"
            },
            {
              "lessThan": "ed381800ea6d9a4c7f199235a471c0c48100f0ae",
              "status": "affected",
              "version": "bb6780aa5a1d99e86757c0c96bfae65a46cf839e",
              "versionType": "git"
            },
            {
              "lessThan": "9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76",
              "status": "affected",
              "version": "bb6780aa5a1d99e86757c0c96bfae65a46cf839e",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.2"
            },
            {
              "lessThan": "6.2",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.24",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.7.*",
              "status": "unaffected",
              "version": "6.7.12",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.8.*",
              "status": "unaffected",
              "version": "6.8.3",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.9",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.24",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.7.12",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.8.3",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.9",
                  "versionStartIncluding": "6.2",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\ndrm/vmwgfx: Fix the lifetime of the bo cursor memory\n\nThe cleanup can be dispatched while the atomic update is still active,\nwhich means that the memory acquired in the atomic update needs to\nnot be invalidated by the cleanup. The buffer objects in vmw_plane_state\ninstead of using the builtin map_and_cache were trying to handle\nthe lifetime of the mapped memory themselves, leading to crashes.\n\nUse the map_and_cache instead of trying to manage the lifetime of the\nbuffer objects held by the vmw_plane_state.\n\nFixes kernel oops\u0027es in IGT\u0027s kms_cursor_legacy forked-bo."
        }
      ],
      "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 bug is reached only through DRM ioctls (DRM_IOCTL_MODE_CURSOR/CURSOR2/ATOMIC) on the local /dev/dri/card0 node of a VMware guest. There is no network-facing path into the vmwgfx KMS cursor plane code.\nAC:L - The attacker controls both sides of the race: legacy cursor updates are explicitly \"fully unsynced\" in the atomic helpers (flip_done is completed immediately), so the cleanup_fb worker overlaps the atomic_update by design, and forking processes that hammer cursor updates on a shared BO reproduces it reliably \u2014 this is precisely the IGT kms_cursor_legacy forked-bo reproducer.\nPR:L - An unprivileged local user with access to the DRM card node suffices \u2014 drm_master_open() grants mastership to the first opener when no master exists, with no capability check, and logind ACLs grant the console/session user that access in a VMware guest. No root or CAP_SYS_ADMIN is needed.\nUI:N - The attacker\u0027s own processes issue all the cursor ioctls that create and win the race; no action by any other user is required.\nS:U - The corrupted mappings and buffer objects are all guest-kernel memory managed by the same vmwgfx/TTM authority; there is no guest-to-host escape or IOMMU boundary crossing.\nC:H - After the concurrent ttm_bo_kunmap()/vunmap(), the vmalloc VA range can be reused by other kernel subsystems (kernel stacks, modules, BPF), and the stale pointer is then read by memcmp() and by memcpy(header + 1, image, image_size) into the cursor MOB that gets rendered as the visible cursor \u2014 a use-after-unmap read that discloses recycled kernel memory.\nI:H - This is a use-after-free/use-after-unmap class bug: racing kmap/kunmap on the shared vmw_bo-\u003emap allows double-vunmap of a VA that another subsystem may have re-mapped, and the concurrent cursor-MOB swap/put lets vmw_cursor_update_mob() memcpy into a buffer object that has been returned to the cache or freed, giving heap-spray and write primitives.\nA:H - The commit explicitly states it \"Fixes kernel oops\u0027es in IGT\u0027s kms_cursor_legacy forked-bo\"; dereferencing the vunmap\u0027d address faults in kernel context, and ttm_bo_kunmap()\u0027s default case is a BUG(), so the race yields a reliable kernel crash."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:30:04.778Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/86cb706a40b7e6b2221ee49a298a65ad9b46c02d"
        },
        {
          "url": "https://git.kernel.org/stable/c/104a5b2772bc7c0715ae7355ccf9d294a472765c"
        },
        {
          "url": "https://git.kernel.org/stable/c/ed381800ea6d9a4c7f199235a471c0c48100f0ae"
        },
        {
          "url": "https://git.kernel.org/stable/c/9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76"
        }
      ],
      "title": "drm/vmwgfx: Fix the lifetime of the bo cursor memory",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2024-35810",
    "datePublished": "2024-05-17T13:23:16.829Z",
    "dateReserved": "2024-05-17T12:19:12.342Z",
    "dateUpdated": "2026-08-05T11:30:04.778Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "vulnrichment": {
      "containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://git.kernel.org/stable/c/86cb706a40b7e6b2221ee49a298a65ad9b46c02d\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/104a5b2772bc7c0715ae7355ccf9d294a472765c\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/ed381800ea6d9a4c7f199235a471c0c48100f0ae\", \"tags\": [\"x_transferred\"]}, {\"url\": \"https://git.kernel.org/stable/c/9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76\", \"tags\": [\"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T03:21:47.494Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2024-35810\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T15:42:38.486904Z\"}}}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-11T12:42:13.136Z\"}}], \"cna\": {\"title\": \"drm/vmwgfx: Fix the lifetime of the bo cursor memory\", \"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 bug is reached only through DRM ioctls (DRM_IOCTL_MODE_CURSOR/CURSOR2/ATOMIC) on the local /dev/dri/card0 node of a VMware guest. There is no network-facing path into the vmwgfx KMS cursor plane code.\\nAC:L - The attacker controls both sides of the race: legacy cursor updates are explicitly \\\"fully unsynced\\\" in the atomic helpers (flip_done is completed immediately), so the cleanup_fb worker overlaps the atomic_update by design, and forking processes that hammer cursor updates on a shared BO reproduces it reliably \\u2014 this is precisely the IGT kms_cursor_legacy forked-bo reproducer.\\nPR:L - An unprivileged local user with access to the DRM card node suffices \\u2014 drm_master_open() grants mastership to the first opener when no master exists, with no capability check, and logind ACLs grant the console/session user that access in a VMware guest. No root or CAP_SYS_ADMIN is needed.\\nUI:N - The attacker\u0027s own processes issue all the cursor ioctls that create and win the race; no action by any other user is required.\\nS:U - The corrupted mappings and buffer objects are all guest-kernel memory managed by the same vmwgfx/TTM authority; there is no guest-to-host escape or IOMMU boundary crossing.\\nC:H - After the concurrent ttm_bo_kunmap()/vunmap(), the vmalloc VA range can be reused by other kernel subsystems (kernel stacks, modules, BPF), and the stale pointer is then read by memcmp() and by memcpy(header + 1, image, image_size) into the cursor MOB that gets rendered as the visible cursor \\u2014 a use-after-unmap read that discloses recycled kernel memory.\\nI:H - This is a use-after-free/use-after-unmap class bug: racing kmap/kunmap on the shared vmw_bo-\u003emap allows double-vunmap of a VA that another subsystem may have re-mapped, and the concurrent cursor-MOB swap/put lets vmw_cursor_update_mob() memcpy into a buffer object that has been returned to the cache or freed, giving heap-spray and write primitives.\\nA:H - The commit explicitly states it \\\"Fixes kernel oops\u0027es in IGT\u0027s kms_cursor_legacy forked-bo\\\"; dereferencing the vunmap\u0027d address faults in kernel context, and ttm_bo_kunmap()\u0027s default case is a BUG(), so the race yields a reliable kernel crash.\"}]}], \"affected\": [{\"repo\": \"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\", \"vendor\": \"Linux\", \"product\": \"Linux\", \"versions\": [{\"status\": \"affected\", \"version\": \"bb6780aa5a1d99e86757c0c96bfae65a46cf839e\", \"lessThan\": \"86cb706a40b7e6b2221ee49a298a65ad9b46c02d\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"bb6780aa5a1d99e86757c0c96bfae65a46cf839e\", \"lessThan\": \"104a5b2772bc7c0715ae7355ccf9d294a472765c\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"bb6780aa5a1d99e86757c0c96bfae65a46cf839e\", \"lessThan\": \"ed381800ea6d9a4c7f199235a471c0c48100f0ae\", \"versionType\": \"git\"}, {\"status\": \"affected\", \"version\": \"bb6780aa5a1d99e86757c0c96bfae65a46cf839e\", \"lessThan\": \"9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76\", \"versionType\": \"git\"}], \"programFiles\": [\"drivers/gpu/drm/vmwgfx/vmwgfx_kms.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.2\"}, {\"status\": \"unaffected\", \"version\": \"0\", \"lessThan\": \"6.2\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"6.6.24\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.6.*\"}, {\"status\": \"unaffected\", \"version\": \"6.7.12\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.7.*\"}, {\"status\": \"unaffected\", \"version\": \"6.8.3\", \"versionType\": \"semver\", \"lessThanOrEqual\": \"6.8.*\"}, {\"status\": \"unaffected\", \"version\": \"6.9\", \"versionType\": \"original_commit_for_fix\", \"lessThanOrEqual\": \"*\"}], \"programFiles\": [\"drivers/gpu/drm/vmwgfx/vmwgfx_kms.c\"], \"defaultStatus\": \"affected\"}], \"references\": [{\"url\": \"https://git.kernel.org/stable/c/86cb706a40b7e6b2221ee49a298a65ad9b46c02d\"}, {\"url\": \"https://git.kernel.org/stable/c/104a5b2772bc7c0715ae7355ccf9d294a472765c\"}, {\"url\": \"https://git.kernel.org/stable/c/ed381800ea6d9a4c7f199235a471c0c48100f0ae\"}, {\"url\": \"https://git.kernel.org/stable/c/9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76\"}], \"x_generator\": {\"engine\": \"bippy-1.2.0\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"In the Linux kernel, the following vulnerability has been resolved:\\n\\ndrm/vmwgfx: Fix the lifetime of the bo cursor memory\\n\\nThe cleanup can be dispatched while the atomic update is still active,\\nwhich means that the memory acquired in the atomic update needs to\\nnot be invalidated by the cleanup. The buffer objects in vmw_plane_state\\ninstead of using the builtin map_and_cache were trying to handle\\nthe lifetime of the mapped memory themselves, leading to crashes.\\n\\nUse the map_and_cache instead of trying to manage the lifetime of the\\nbuffer objects held by the vmw_plane_state.\\n\\nFixes kernel oops\u0027es in IGT\u0027s kms_cursor_legacy forked-bo.\"}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.6.24\", \"versionStartIncluding\": \"6.2\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.7.12\", \"versionStartIncluding\": \"6.2\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.8.3\", \"versionStartIncluding\": \"6.2\"}, {\"criteria\": \"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"6.9\", \"versionStartIncluding\": \"6.2\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"shortName\": \"Linux\", \"dateUpdated\": \"2026-08-05T11:30:04.778Z\"}}}",
      "cveMetadata": "{\"cveId\": \"CVE-2024-35810\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-08-05T11:30:04.778Z\", \"dateReserved\": \"2024-05-17T12:19:12.342Z\", \"assignerOrgId\": \"416baaa9-dc9f-4396-8d5f-8c081fb06d67\", \"datePublished\": \"2024-05-17T13:23:16.829Z\", \"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…