CVE-2021-47535
📋 TL;DR
This CVE describes a memory allocation vulnerability in the Linux kernel's MSM A6xx GPU driver where insufficient memory is allocated for GMU registers during crash state capture. This leads to a slab-out-of-bounds write that can cause kernel crashes or potential privilege escalation. Affected systems are those running vulnerable Linux kernel versions with the MSM A6xx GPU driver.
💻 Affected Systems
- Linux kernel with MSM A6xx GPU driver
📦 What is this software?
Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →Linux Kernel by Linux
The Linux Kernel is the core component of the Linux operating system, serving as the critical interface between computer hardware and software processes. As the heart of millions of servers, cloud infrastructure, embedded systems, Android devices, and IoT deployments worldwide, the Linux Kernel mana...
Learn more about Linux Kernel →⚠️ Risk & Real-World Impact
Worst Case
Kernel memory corruption leading to system crash, denial of service, or potential privilege escalation to kernel mode.
Likely Case
Kernel panic or system crash when GPU crash state capture is triggered, causing denial of service.
If Mitigated
System remains stable as the vulnerability is only triggered during specific GPU failure conditions.
🎯 Exploit Status
Exploitation requires ability to trigger GPU crash state capture, which typically requires local access or specific GPU fault conditions.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Fixed in kernel commits 83e54fcf0b14ca2d869dd37abe1bb6542805f538 and others
Vendor Advisory: https://git.kernel.org/stable/c/83e54fcf0b14ca2d869dd37abe1bb6542805f538
Restart Required: Yes
Instructions:
1. Update Linux kernel to version containing the fix commit. 2. Rebuild kernel if compiling from source. 3. Reboot system to load patched kernel.
🔧 Temporary Workarounds
Disable GPU crash state capture
linuxPrevent triggering of the vulnerable code path by disabling GPU crash state capture functionality
echo 0 > /sys/module/msm/parameters/enable_crashstate
🧯 If You Can't Patch
- Restrict local user access to systems with vulnerable GPU drivers
- Monitor for GPU crash events and system instability indicators
🔍 How to Verify
Check if Vulnerable:
Check kernel version and if MSM A6xx GPU driver is loaded: 'uname -r' and 'lsmod | grep msm'
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version includes fix commit: 'grep -q 83e54fcf0b14ca2d869dd37abe1bb6542805f538 /proc/version'
📡 Detection & Monitoring
Log Indicators:
- KASAN slab-out-of-bounds warnings in kernel logs
- GPU crash state capture failures
- System crashes related to a6xx_gpu_state_get
Network Indicators:
- None - local vulnerability only
SIEM Query:
kernel: *KASAN* AND *slab-out-of-bounds* AND *a6xx* OR kernel: *BUG* AND *a6xx_get_gmu_registers*
🔗 References
- https://git.kernel.org/stable/c/83e54fcf0b14ca2d869dd37abe1bb6542805f538
- https://git.kernel.org/stable/c/b4d25abf9720b69a03465b09d0d62d1998ed6708
- https://git.kernel.org/stable/c/d646856a600e8635ba498f20b194219b158626e8
- https://git.kernel.org/stable/c/83e54fcf0b14ca2d869dd37abe1bb6542805f538
- https://git.kernel.org/stable/c/b4d25abf9720b69a03465b09d0d62d1998ed6708
- https://git.kernel.org/stable/c/d646856a600e8635ba498f20b194219b158626e8