CVE-2023-53098
📋 TL;DR
A NULL pointer dereference vulnerability in the Linux kernel's gpio-ir-recv driver can cause a kernel panic when the driver is removed while runtime power management is enabled. This affects systems using GPIO-based infrared receivers with the affected driver. The vulnerability leads to denial of service but not privilege escalation.
💻 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
Kernel panic leading to system crash and denial of service, requiring physical or remote reboot.
Likely Case
System crash when unloading the gpio_ir_recv module or during driver removal operations.
If Mitigated
No impact if the driver isn't loaded or runtime PM is disabled.
🎯 Exploit Status
Exploitation requires ability to load/unload kernel modules (typically root or CAP_SYS_MODULE). The crash is triggered during normal driver removal operations.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Kernel versions with commits: 00e81f191bc00cb6faabf468960e96ebf0404a6c, 2ece4d2f7eac1cb51dc0e9859e09bfdb00faa28e, 30040818b338b8ebc956ce0ebd198f8d593586a6, 513572bb89e8075f5d2a2bb4c89f1152e44da9d8, a5c140d88a69eb43de2a030f1d7ff7b16bff3b1a
Vendor Advisory: https://git.kernel.org/stable/c/00e81f191bc00cb6faabf468960e96ebf0404a6c
Restart Required: Yes
Instructions:
1. Update Linux kernel to patched version from your distribution. 2. Reboot system. 3. Verify kernel version is updated.
🔧 Temporary Workarounds
Disable runtime PM for gpio_ir_recv
linuxPrevent the runtime suspend/resume operations that trigger the NULL pointer dereference
echo 0 > /sys/bus/platform/drivers/gpio_ir_recv/.../power/control
Blacklist gpio_ir_recv module
linuxPrevent loading of the vulnerable driver
echo 'blacklist gpio_ir_recv' >> /etc/modprobe.d/blacklist.conf
🧯 If You Can't Patch
- Restrict module loading to trusted users only (remove CAP_SYS_MODULE from untrusted users)
- Monitor for gpio_ir_recv module loading/unloading and investigate suspicious activity
🔍 How to Verify
Check if Vulnerable:
Check if gpio_ir_recv module is loaded: lsmod | grep gpio_ir_recv. Check kernel version against patched versions.
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version includes one of the fix commits. Test by loading/unloading gpio_ir_recv module with runtime PM enabled.
📡 Detection & Monitoring
Log Indicators:
- Kernel panic messages mentioning cpu_latency_qos_remove_request
- NULL pointer dereference at address 0x48 in kernel logs
- Driver removal errors for gpio_ir_recv
Network Indicators:
- None - local vulnerability only
SIEM Query:
source="kernel" AND ("cpu_latency_qos_remove_request" OR "gpio_ir_recv" AND "NULL pointer")
🔗 References
- https://git.kernel.org/stable/c/00e81f191bc00cb6faabf468960e96ebf0404a6c
- https://git.kernel.org/stable/c/2ece4d2f7eac1cb51dc0e9859e09bfdb00faa28e
- https://git.kernel.org/stable/c/30040818b338b8ebc956ce0ebd198f8d593586a6
- https://git.kernel.org/stable/c/513572bb89e8075f5d2a2bb4c89f1152e44da9d8
- https://git.kernel.org/stable/c/a5c140d88a69eb43de2a030f1d7ff7b16bff3b1a