drm/amd/display: Validate payload length and link_index in dc_process_dmub_aux_transfer_async
- 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.15.209, 6.1.175, 6.6.142, 6.12.92, 6.18.34, and 1 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/amd/display: Validate payload length and link_index in dc_process_dmub_aux_transfer_async [Why&How] dc_process_dmub_aux_transfer_async() copies payload->length bytes into a 16-byte stack buffer (dpaux.data[16]) guarded only by an ASSERT(), which is a no-op in release builds. If a caller ever passes length > 16 this results in a stack buffer overflow via memcpy. Additionally, link_index is used to dereference dc->links[] without bounds checking against dc->link_count, risking an out-of-bounds access. Replace the ASSERT with a hard runtime check that returns false when payload->length exceeds the destination buffer size, and add a bounds check for link_index before it is used. (cherry picked from commit ba4caa9fecdf7a38f98c878ad05a8a64148b6881)
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: total
- Record last updated
Affected versions
- Linux Linux
From 4f8e37dbaf584de6d38f58b3000b0bfd7eaf2ff6 · fixed in d6590e3f766e3111dd1beaf88b9384d117acfa6b; From 4f8e37dbaf584de6d38f58b3000b0bfd7eaf2ff6 · fixed in 16a5fa57565afb6bf37e18129921c270c93d8e2b; From 4f8e37dbaf584de6d38f58b3000b0bfd7eaf2ff6 · fixed in 90c398e822ca76e40548df0c061dd4f93ea92d71; From 4f8e37dbaf584de6d38f58b3000b0bfd7eaf2ff6 · fixed in 3265f3ed373fb8048be713aadcdf702579a0e53d; From 4f8e37dbaf584de6d38f58b3000b0bfd7eaf2ff6 · fixed in 1ecde19bfce6535bffddad1139ff466b6d401b8e; From 4f8e37dbaf584de6d38f58b3000b0bfd7eaf2ff6 · fixed in 1c8c6e912f2945b2a3e669afca6b52174b88e86e; From 4f8e37dbaf584de6d38f58b3000b0bfd7eaf2ff6 · fixed in 6c92f6d9600efa3ef0d9e560a2b52776d9803c29
- Linux Linux
5.13
- KernelLinux
From 5.13.0 · fixed in 5.15.209; From 5.16.0 · fixed in 6.1.175; From 6.2.0 · fixed in 6.6.142; From 6.7.0 · fixed in 6.12.92; From 6.13.0 · fixed in 6.18.34; From 6.19.0 · fixed in 7.0.11
References 7
git.kernel.org
- stable/c/d6590e3f766e3111dd1beaf88b9384d117acfa6b
- stable/c/16a5fa57565afb6bf37e18129921c270c93d8e2b
- stable/c/90c398e822ca76e40548df0c061dd4f93ea92d71
- stable/c/3265f3ed373fb8048be713aadcdf702579a0e53d
- stable/c/1ecde19bfce6535bffddad1139ff466b6d401b8e
- stable/c/1c8c6e912f2945b2a3e669afca6b52174b88e86e
- stable/c/6c92f6d9600efa3ef0d9e560a2b52776d9803c29