CVE-2021-47153
📋 TL;DR
A vulnerability in the Linux kernel's i2c-i801 driver allows an out-of-bounds memory access when the driver attempts to recover from a timed-out transaction. This occurs because the interrupt handler processes interrupts incorrectly during bus resets. Systems using affected Linux kernel versions with i2c-i801 driver enabled are vulnerable.
💻 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 →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 →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, privilege escalation, or arbitrary code execution in kernel context.
Likely Case
System instability, kernel panic, or denial of service due to memory access violations.
If Mitigated
Minimal impact if proper kernel hardening and memory protection mechanisms are in place.
🎯 Exploit Status
Syzbot has reproduced the condition multiple times. Exploitation requires ability to trigger i2c transactions and cause timeouts.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Kernel versions containing commits: 04cc05e3716a, 09c9e79f4c10, 1f583d3813f2, b523feb7e8e4, c70e1ba2e7e6
Vendor Advisory: https://git.kernel.org/stable/c/04cc05e3716ae31b17ecdab7bc55c8170def1b8b
Restart Required: Yes
Instructions:
1. Update Linux kernel to patched version. 2. Check distribution-specific security advisories. 3. Reboot system after kernel update.
🔧 Temporary Workarounds
Disable i2c-i801 module
linuxPrevent loading of vulnerable driver if not needed
echo 'blacklist i2c_i801' >> /etc/modprobe.d/blacklist.conf
rmmod i2c_i801
🧯 If You Can't Patch
- Implement strict access controls to prevent unauthorized users from accessing i2c devices
- Enable kernel hardening features like KASLR and memory protection
🔍 How to Verify
Check if Vulnerable:
Check kernel version and if i2c_i801 module is loaded: 'uname -r' and 'lsmod | grep i2c_i801'
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version is after fix commits and test i2c functionality remains operational
📡 Detection & Monitoring
Log Indicators:
- Kernel panic logs
- Out-of-bounds memory access errors in dmesg
- i2c transaction timeout messages
SIEM Query:
source="kernel" AND ("panic" OR "Oops" OR "general protection fault") AND "i2c"
🔗 References
- https://git.kernel.org/stable/c/04cc05e3716ae31b17ecdab7bc55c8170def1b8b
- https://git.kernel.org/stable/c/09c9e79f4c10cfb6b9e0e1b4dd355232e4b5a3b3
- https://git.kernel.org/stable/c/1f583d3813f204449037cd2acbfc09168171362a
- https://git.kernel.org/stable/c/b523feb7e8e44652f92f3babb953a976e7ccbbef
- https://git.kernel.org/stable/c/c70e1ba2e7e65255a0ce004f531dd90dada97a8c
- https://git.kernel.org/stable/c/dfa8929e117b0228a7765f5c3f5988a4a028f3c6
- https://git.kernel.org/stable/c/e4d8716c3dcec47f1557024add24e1f3c09eb24b
- https://git.kernel.org/stable/c/f9469082126cebb7337db3992d143f5e4edfe629
- https://git.kernel.org/stable/c/04cc05e3716ae31b17ecdab7bc55c8170def1b8b
- https://git.kernel.org/stable/c/09c9e79f4c10cfb6b9e0e1b4dd355232e4b5a3b3
- https://git.kernel.org/stable/c/1f583d3813f204449037cd2acbfc09168171362a
- https://git.kernel.org/stable/c/b523feb7e8e44652f92f3babb953a976e7ccbbef
- https://git.kernel.org/stable/c/c70e1ba2e7e65255a0ce004f531dd90dada97a8c
- https://git.kernel.org/stable/c/dfa8929e117b0228a7765f5c3f5988a4a028f3c6
- https://git.kernel.org/stable/c/e4d8716c3dcec47f1557024add24e1f3c09eb24b
- https://git.kernel.org/stable/c/f9469082126cebb7337db3992d143f5e4edfe629