CVE-2024-39490
📋 TL;DR
A memory leak vulnerability exists in the Linux kernel's IPv6 Segment Routing (SRv6) implementation. When processing SRv6 packets, if skb_cow_head() fails due to insufficient headroom, the kernel fails to release the sk_buff, causing a memory leak. This affects all Linux systems with IPv6 SRv6 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 →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
An attacker could send specially crafted IPv6 SRv6 packets to trigger repeated memory allocation failures, leading to kernel memory exhaustion, system instability, and potential denial of service.
Likely Case
Memory leak leading to gradual performance degradation over time, potentially causing system crashes or service interruptions under sustained attack.
If Mitigated
Minimal impact if SRv6 is disabled or systems are patched; memory leak would be contained to specific network conditions.
🎯 Exploit Status
Exploitation requires sending IPv6 packets with SRH to a vulnerable system with SRv6 enabled. No authentication needed.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Fixed in kernel commits: 5447f9708d9e4c17a647b16a9cb29e9e02820bd9, 8f1fc3b86eaea70be6abcae2e9aa7e7b99453864, e8688218e38111ace457509d8f0cad75f79c1a7a, f4df8c7670a73752201cbde215254598efdf6ce8, f5fec1588642e415a3d72e02140160661b303940
Vendor Advisory: https://git.kernel.org/stable/c/5447f9708d9e4c17a647b16a9cb29e9e02820bd9
Restart Required: Yes
Instructions:
1. Update Linux kernel to version containing the fix commits. 2. Reboot system to load new kernel. 3. Verify SRv6 functionality if required.
🔧 Temporary Workarounds
Disable IPv6 Segment Routing
linuxDisable SRv6 functionality to prevent exploitation
sysctl -w net.ipv6.conf.all.seg6_enabled=0
sysctl -w net.ipv6.conf.default.seg6_enabled=0
🧯 If You Can't Patch
- Disable IPv6 Segment Routing via sysctl
- Implement network filtering to block SRv6 packets at perimeter
🔍 How to Verify
Check if Vulnerable:
Check kernel version and verify if SRv6 is enabled: sysctl net.ipv6.conf.all.seg6_enabled
Check Version:
uname -r
Verify Fix Applied:
Verify kernel version includes fix commits and SRv6 functionality works without memory leaks
📡 Detection & Monitoring
Log Indicators:
- Kernel oom-killer events
- Memory allocation failures in kernel logs
- System performance degradation
Network Indicators:
- Unusual IPv6 SRv6 traffic patterns
- Repeated SRH packet transmissions
SIEM Query:
source="kernel" AND ("oom" OR "memory allocation failure" OR "seg6")
🔗 References
- https://git.kernel.org/stable/c/5447f9708d9e4c17a647b16a9cb29e9e02820bd9
- https://git.kernel.org/stable/c/8f1fc3b86eaea70be6abcae2e9aa7e7b99453864
- https://git.kernel.org/stable/c/e8688218e38111ace457509d8f0cad75f79c1a7a
- https://git.kernel.org/stable/c/f4df8c7670a73752201cbde215254598efdf6ce8
- https://git.kernel.org/stable/c/f5fec1588642e415a3d72e02140160661b303940
- https://git.kernel.org/stable/c/5447f9708d9e4c17a647b16a9cb29e9e02820bd9
- https://git.kernel.org/stable/c/8f1fc3b86eaea70be6abcae2e9aa7e7b99453864
- https://git.kernel.org/stable/c/e8688218e38111ace457509d8f0cad75f79c1a7a
- https://git.kernel.org/stable/c/f4df8c7670a73752201cbde215254598efdf6ce8
- https://git.kernel.org/stable/c/f5fec1588642e415a3d72e02140160661b303940