drm/xe: Add bounds check on pat_index to prevent OOB kernel read in madvise
- 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 6.18.16, 6.19.6
- 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: partial
Summary
In the Linux kernel, the following vulnerability has been resolved: drm/xe: Add bounds check on pat_index to prevent OOB kernel read in madvise When user provides a bogus pat_index value through the madvise IOCTL, the xe_pat_index_get_coh_mode() function performs an array access without validating bounds. This allows a malicious user to trigger an out-of-bounds kernel read from the xe->pat.table array. The vulnerability exists because the validation in madvise_args_are_sane() directly calls xe_pat_index_get_coh_mode(xe, args->pat_index.val) without first checking if pat_index is within [0, xe->pat.n_entries). Although xe_pat_index_get_coh_mode() has a WARN_ON to catch this in debug builds, it still performs the unsafe array access in production kernels. v2(Matthew Auld) • Using array_index_nospec() to mitigate spectre attacks when the value is used v3(Matthew Auld) • Put the declarations at the start of the block (cherry picked from commit 944a3329b05510d55c69c2ef455136e2fc02de29)
Timeline
- CVE published
- CISA SSVC assessment
Exploitation: none · Automatable: no · Technical impact: partial
- Record last updated
Affected versions
- Linux Linux
From ada7486c5668db542a7d361268df931aca5b726a · fixed in ffba51100ff61792fefbae11ca38ac1987a818dd; From ada7486c5668db542a7d361268df931aca5b726a · fixed in 79f52655567a6471ff3d0d6325ede91bb14461f4; From ada7486c5668db542a7d361268df931aca5b726a · fixed in fbbe32618e97eff81577a01eb7d9adcd64a216d7
- Linux Linux
6.18
- KernelLinux
From 6.18.0 · fixed in 6.18.16; From 6.19.0 · fixed in 6.19.6