CVE-2024-26946
📋 TL;DR
A kernel memory access vulnerability in Linux kprobes subsystem where arch_adjust_kprobe_addr() could read from inaccessible memory addresses, causing kernel panic. This affects Linux systems with kprobes enabled, primarily impacting kernel developers and systems using kernel debugging/tracing tools. The vulnerability requires local access to trigger.
💻 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 →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
Local denial of service through kernel panic leading to system crash and potential data loss.
Likely Case
Local denial of service causing system instability or crash when malicious user triggers the bug.
If Mitigated
Minimal impact if kprobes are disabled or proper access controls restrict local users.
🎯 Exploit Status
Requires local access and ability to interact with kprobes interface. Found by Syzcaller fuzzer.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Multiple stable kernel versions with fixes available (see references)
Vendor Advisory: https://git.kernel.org/stable/c/20fdb21eabaeb8f78f8f701f56d14ea0836ec861
Restart Required: Yes
Instructions:
1. Identify current kernel version. 2. Apply appropriate kernel patch from stable tree. 3. Rebuild kernel if using custom build. 4. Reboot system to load patched kernel.
🔧 Temporary Workarounds
Disable kprobes
linuxPrevent kprobes subsystem from being used by disabling it at kernel boot or module loading
Add 'nokprobe' to kernel boot parameters in GRUB or systemd-boot configuration
Restrict kprobes access
linuxUse kernel capabilities or SELinux/AppArmor to restrict which users can use kprobes
setcap -r /sys/kernel/debug/kprobes
Use appropriate SELinux/AppArmor policies
🧯 If You Can't Patch
- Disable kprobes functionality completely if not required
- Implement strict access controls to prevent unauthorized users from interacting with kprobes interface
🔍 How to Verify
Check if Vulnerable:
Check if kprobes is enabled and kernel version matches affected range: cat /proc/kallsyms | grep -i kprobe && uname -r
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version after update and check that kprobes functions properly without panic: uname -r && test kprobe functionality
📡 Detection & Monitoring
Log Indicators:
- Kernel panic messages in /var/log/kern.log or dmesg
- OOPs messages related to kprobes or memory access faults
Network Indicators:
- None - local vulnerability only
SIEM Query:
source="kernel" AND ("panic" OR "Oops") AND ("kprobe" OR "arch_adjust_kprobe_addr")
🔗 References
- https://git.kernel.org/stable/c/20fdb21eabaeb8f78f8f701f56d14ea0836ec861
- https://git.kernel.org/stable/c/4e51653d5d871f40f1bd5cf95cc7f2d8b33d063b
- https://git.kernel.org/stable/c/6417684315087904fffe8966d27ca74398c57dd6
- https://git.kernel.org/stable/c/b69f577308f1070004cafac106dd1a44099e5483
- https://git.kernel.org/stable/c/f13edd1871d4fb4ab829aff629d47914e251bae3
- https://git.kernel.org/stable/c/20fdb21eabaeb8f78f8f701f56d14ea0836ec861
- https://git.kernel.org/stable/c/4e51653d5d871f40f1bd5cf95cc7f2d8b33d063b
- https://git.kernel.org/stable/c/6417684315087904fffe8966d27ca74398c57dd6
- https://git.kernel.org/stable/c/b69f577308f1070004cafac106dd1a44099e5483
- https://git.kernel.org/stable/c/f13edd1871d4fb4ab829aff629d47914e251bae3