drm/vmwgfx: bound DMA command body size against suffix pointer
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.265, 5.15.216, 6.1.183, 6.6.151, 6.12.103, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
- Exploitation: none
- Automatable: no
- Technical impact: total
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/vmwgfx: bound DMA command body size against suffix pointer vmw_cmd_dma() locates the DMA suffix at (unsigned long) &cmd->body + header->size - sizeof(*suffix) without checking that header->size is large enough to contain both cmd->body and the suffix. An undersized header makes the suffix pointer underflow back into the previous command in the bounce buffer. The verifier later writes suffix->maximumOffset, clobbering verified fields of an already-relocated earlier command -- a TOCTOU on the device-visible command stream that lets one command rewrite another's GMR id, surface id, or other authenticated fields. Reject the command if the body is too small for the suffix to fit.
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in eb20f418933bea53375843b27b4022c1810be63b; From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in fcd1e56e7816b31a1050ccc67df722b20f6bb15d; From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in a4a37080a5ac777b59306cfcdf854cc05d7604d4; From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in 036e16ada95389bdc30f41068af04c1d0872fad0; From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in d5d7ada4e1296b00d89fe82b2ca850cc7809d6f7; From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in 7e40e6120fb232a10b543ffd994e5c6d8f3a2cc6; From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in 9759da60e38d7b9db44dc92713e4e0391883d221; From 4e4ddd47774313accc86b233d6ca2c6a9037a671 · fixed in f4f1db96bfd68b81053693ba53405b6f510ac16c
- Linux Linux
2.6.33
- KernelLinux
From 2.6.33 · fixed in 5.10.265; From 5.11.0 · fixed in 5.15.216; From 5.16.0 · fixed in 6.1.183; From 6.2.0 · fixed in 6.6.151; From 6.7.0 · fixed in 6.12.103; From 6.13.0 · fixed in 6.18.44; From 6.19.0 · fixed in 7.1.8
References 8
git.kernel.org
- stable/c/eb20f418933bea53375843b27b4022c1810be63b
- stable/c/fcd1e56e7816b31a1050ccc67df722b20f6bb15d
- stable/c/a4a37080a5ac777b59306cfcdf854cc05d7604d4
- stable/c/036e16ada95389bdc30f41068af04c1d0872fad0
- stable/c/d5d7ada4e1296b00d89fe82b2ca850cc7809d6f7
- stable/c/7e40e6120fb232a10b543ffd994e5c6d8f3a2cc6
- stable/c/9759da60e38d7b9db44dc92713e4e0391883d221
- stable/c/f4f1db96bfd68b81053693ba53405b6f510ac16c