{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2024-35810","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","state":"PUBLISHED","assignerShortName":"Linux","dateReserved":"2024-05-17T12:19:12.342Z","datePublished":"2024-05-17T13:23:16.829Z","dateUpdated":"2026-08-05T11:30:04.778Z"},"containers":{"cna":{"providerMetadata":{"orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux","dateUpdated":"2026-08-05T11:30:04.778Z"},"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'es in IGT's kms_cursor_legacy forked-bo."}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"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 — 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 — 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's 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 — 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->map 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'es in IGT's kms_cursor_legacy forked-bo\"; dereferencing the vunmap'd address faults in kernel context, and ttm_bo_kunmap()'s default case is a BUG(), so the race yields a reliable kernel crash."}]}],"affected":[{"product":"Linux","vendor":"Linux","defaultStatus":"unaffected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"],"versions":[{"version":"bb6780aa5a1d99e86757c0c96bfae65a46cf839e","lessThan":"86cb706a40b7e6b2221ee49a298a65ad9b46c02d","status":"affected","versionType":"git"},{"version":"bb6780aa5a1d99e86757c0c96bfae65a46cf839e","lessThan":"104a5b2772bc7c0715ae7355ccf9d294a472765c","status":"affected","versionType":"git"},{"version":"bb6780aa5a1d99e86757c0c96bfae65a46cf839e","lessThan":"ed381800ea6d9a4c7f199235a471c0c48100f0ae","status":"affected","versionType":"git"},{"version":"bb6780aa5a1d99e86757c0c96bfae65a46cf839e","lessThan":"9a9e8a7159ca09af9b1a300a6c8e8b6ff7501c76","status":"affected","versionType":"git"}]},{"product":"Linux","vendor":"Linux","defaultStatus":"affected","repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["drivers/gpu/drm/vmwgfx/vmwgfx_kms.c"],"versions":[{"version":"6.2","status":"affected"},{"version":"0","lessThan":"6.2","status":"unaffected","versionType":"semver"},{"version":"6.6.24","lessThanOrEqual":"6.6.*","status":"unaffected","versionType":"semver"},{"version":"6.7.12","lessThanOrEqual":"6.7.*","status":"unaffected","versionType":"semver"},{"version":"6.8.3","lessThanOrEqual":"6.8.*","status":"unaffected","versionType":"semver"},{"version":"6.9","lessThanOrEqual":"*","status":"unaffected","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.2","versionEndExcluding":"6.6.24"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.2","versionEndExcluding":"6.7.12"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.2","versionEndExcluding":"6.8.3"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"6.2","versionEndExcluding":"6.9"}]}]}],"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"}},"adp":[{"providerMetadata":{"orgId":"af854a3a-2127-422b-91ae-364da2661108","shortName":"CVE","dateUpdated":"2024-08-02T03:21:47.494Z"},"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"]}]},{"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"}}}],"title":"CISA ADP Vulnrichment","providerMetadata":{"orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP","dateUpdated":"2024-09-11T17:32:51.914Z"}}]}}