CVE-2026-31488Linux内核中的drm/amd/display组件存在一个高危漏洞。该漏洞源于DSC(显示流压缩)验证逻辑缺陷,当系统在处理包含MST/DSC配置变更及无关模式变更的原子提交时,驱动错误地重置了CRTC状态的mode_changed标志。这导致驱动未能正确管理显示流的生命周期,引发内存泄漏及释放后重用(UAF)问题。本地低权限攻击者可利用此漏洞导致系统崩溃(拒绝服务),甚至可能通过精心构造的显示操作实现内核级权限提升。
漏洞位于amdgpu驱行的DSC预验证函数中。当驱动重新计算DSC配置且发现时序未变时,会将`mode_changed`标志置false。然而,如果同一KMS原子提交中存在与DSC无关的模式变更(如外部MST显示器插拔触发集成面板HDR配置改变),此逻辑会错误地清除该标志。结果导致`dm_update_crtc_state()`创建了新流,但`amdgpu_dm_commit_streams()`因认为模式未变而不释放旧流,造成泄漏。随后`amdgpu_dm_atomic_commit_tail()`未获取新流引用,当流被禁用时,触发`dc_stream_release`中的UAF。攻击者需本地低权限即可触发,利用KMS接口进行特定的原子操作请求,从而破坏内核内存管理。