CVE-2024-26599
📋 TL;DR
This CVE describes an out-of-bounds memory access vulnerability in the Linux kernel's PWM (Pulse Width Modulation) subsystem. When args->args_count equals 2, the code incorrectly accesses args->args[2] instead of args->args[1] for flags, potentially allowing kernel memory corruption. This affects all Linux systems using the PWM subsystem.
💻 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
Local privilege escalation to root, kernel panic causing system crash, or arbitrary code execution in kernel context leading to complete system compromise.
Likely Case
Kernel panic causing system crash or denial of service, potentially leading to privilege escalation if combined with other vulnerabilities.
If Mitigated
Limited to denial of service if proper kernel hardening and privilege separation are in place.
🎯 Exploit Status
Exploitation requires local access and specific conditions to trigger the vulnerable code path. The vulnerability is in kernel space but requires PWM subsystem interaction.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Patches available in stable kernel trees (commits: 7b85554c7c2aee91171e038e4d5442ffa130b282, a297d07b9a1e4fb8cda25a4a2363a507d294b7c9, bae45b7ebb31984b63b13c3519fd724b3ce92123, e5f2b4b62977fb6c2efcbc5779e0c9dce18215f7)
Vendor Advisory: https://git.kernel.org/stable/c/7b85554c7c2aee91171e038e4d5442ffa130b282
Restart Required: Yes
Instructions:
1. Update to a patched kernel version from your distribution's repositories. 2. For custom kernels, apply the relevant patch from the stable kernel tree. 3. Reboot the system to load the new kernel.
🔧 Temporary Workarounds
Disable PWM subsystem
linuxIf PWM functionality is not required, disable the PWM subsystem in kernel configuration to remove the vulnerable code path.
echo 'blacklist pwm' >> /etc/modprobe.d/blacklist.conf
update-initramfs -u
reboot
🧯 If You Can't Patch
- Restrict local user access to systems where PWM functionality is critical
- Implement strict privilege separation and limit users who can interact with hardware interfaces
🔍 How to Verify
Check if Vulnerable:
Check kernel version and compare with patched versions from your distribution. Examine if PWM modules are loaded: lsmod | grep pwm
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version after update matches patched version. Check that the system boots without issues and PWM functionality works if needed.
📡 Detection & Monitoring
Log Indicators:
- Kernel panic logs
- OOM killer messages related to kernel memory
- System crash/reboot events
Network Indicators:
- None - this is a local vulnerability
SIEM Query:
source="kernel" AND ("panic" OR "Oops" OR "general protection fault") AND process="kernel"
🔗 References
- https://git.kernel.org/stable/c/7b85554c7c2aee91171e038e4d5442ffa130b282
- https://git.kernel.org/stable/c/a297d07b9a1e4fb8cda25a4a2363a507d294b7c9
- https://git.kernel.org/stable/c/bae45b7ebb31984b63b13c3519fd724b3ce92123
- https://git.kernel.org/stable/c/e5f2b4b62977fb6c2efcbc5779e0c9dce18215f7
- https://git.kernel.org/stable/c/7b85554c7c2aee91171e038e4d5442ffa130b282
- https://git.kernel.org/stable/c/a297d07b9a1e4fb8cda25a4a2363a507d294b7c9
- https://git.kernel.org/stable/c/bae45b7ebb31984b63b13c3519fd724b3ce92123
- https://git.kernel.org/stable/c/e5f2b4b62977fb6c2efcbc5779e0c9dce18215f7