CVE-2021-47618
📋 TL;DR
This vulnerability in the Linux kernel causes a kernel panic when both KASAN (Kernel Address Sanitizer) and kprobes are enabled on ARM32 systems. The interaction between KASAN's register modifications and kprobes' instruction simulation leads to NULL pointer dereferences, resulting in system crashes. This affects ARM32 Linux systems with both debugging features enabled.
💻 Affected Systems
- Linux kernel
📦 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 →⚠️ Risk & Real-World Impact
Worst Case
Kernel panic leading to complete system crash and denial of service, potentially causing data loss or service disruption.
Likely Case
System crash when kprobes are used on KASAN-enabled ARM32 systems, requiring reboot to restore functionality.
If Mitigated
No impact if either KASAN or kprobes are disabled, or if the system is not ARM32 architecture.
🎯 Exploit Status
Exploitation requires local access and ability to load kprobes on a system with KASAN enabled. Primarily a denial of service issue rather than privilege escalation.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Patches available in stable kernel trees (commits: 1515e72aae803fc6b466adf918e71c4e4c9d5b3d, 8b59b0a53c840921b625378f137e88adfa87647e, ba1863be105b06e10d0e2f6b1b8a0570801cfc71)
Vendor Advisory: https://git.kernel.org/stable/c/1515e72aae803fc6b466adf918e71c4e4c9d5b3d
Restart Required: Yes
Instructions:
1. Update to a patched Linux kernel version. 2. Rebuild kernel if using custom build. 3. Reboot system to load new kernel.
🔧 Temporary Workarounds
Disable KASAN
linuxDisable Kernel Address Sanitizer feature
Rebuild kernel with CONFIG_KASAN=n
Disable kprobes
linuxDisable kernel probes debugging feature
Rebuild kernel with CONFIG_KPROBES=n or prevent kprobe usage
🧯 If You Can't Patch
- Ensure KASAN is disabled in kernel configuration
- Restrict kprobe usage to authorized users only
🔍 How to Verify
Check if Vulnerable:
Check if running ARM32 Linux with both KASAN and kprobes enabled: 'uname -m' should show armv7l or similar, and check kernel config for CONFIG_KASAN=y and CONFIG_KPROBES=y
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version includes the fix commits or test by attempting to use kprobes on KASAN-enabled system without panic
📡 Detection & Monitoring
Log Indicators:
- Kernel panic messages mentioning 'Unable to handle kernel NULL pointer dereference' during kprobe operations
- OOPs messages with references to emulate_ldr or kprobe_handler
Network Indicators:
- None - local vulnerability only
SIEM Query:
kernel:panic AND ("NULL pointer dereference" OR "emulate_ldr" OR "kprobe_handler")
🔗 References
- https://git.kernel.org/stable/c/1515e72aae803fc6b466adf918e71c4e4c9d5b3d
- https://git.kernel.org/stable/c/8b59b0a53c840921b625378f137e88adfa87647e
- https://git.kernel.org/stable/c/ba1863be105b06e10d0e2f6b1b8a0570801cfc71
- https://git.kernel.org/stable/c/1515e72aae803fc6b466adf918e71c4e4c9d5b3d
- https://git.kernel.org/stable/c/8b59b0a53c840921b625378f137e88adfa87647e
- https://git.kernel.org/stable/c/ba1863be105b06e10d0e2f6b1b8a0570801cfc71