Linux Kernel
CVE-2024-35857
HIGH
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Network-reachable via ICMP with no auth or interaction; impact is availability-only (kernel panic), no confidentiality or integrity effect.
Primary rating from Vendor (416baaa9-dc9f-4396-8d5f-8c081fb06d67).
CVSS VectorVendor: 416baaa9-dc9f-4396-8d5f-8c081fb06d67
Lifecycle Timeline
7DescriptionCVE.org
In the Linux kernel, the following vulnerability has been resolved:
icmp: prevent possible NULL dereferences from icmp_build_probe()
First problem is a double call to __in_dev_get_rcu(), because the second one could return NULL.
if (__in_dev_get_rcu(dev) && __in_dev_get_rcu(dev)->ifa_list)
Second problem is a read from dev->ip6_ptr with no NULL check:
if (!list_empty(&rcu_dereference(dev->ip6_ptr)->addr_list))
Use the correct RCU API to fix these.
v2: add missing include <net/addrconf.h>
AnalysisAI
Null pointer dereferences in the Linux kernel's icmp_build_probe() function expose network-reachable systems to unauthenticated denial-of-service. Two distinct code paths are vulnerable: a double call to __in_dev_get_rcu() where the second invocation can return NULL even if the first succeeded, and an unguarded dereference of dev->ip6_ptr without a NULL check. An unauthenticated remote attacker can send crafted ICMP probe packets to trigger a kernel panic, crashing the affected system. No public exploit code exists and the vulnerability is not listed in CISA KEV, but the AV:N/PR:N CVSS vector confirms remote unauthenticated exploitability with EPSS at 0.89% (55th percentile).
Technical ContextAI
The flaw resides in the Linux kernel's ICMP subsystem, specifically in the icmp_build_probe() function responsible for handling ICMP probe messages. Two RCU (Read-Copy-Update) API misuses are present: first, the condition checks __in_dev_get_rcu(dev) and then immediately re-calls __in_dev_get_rcu(dev)->ifa_list in the same expression - because RCU read-side critical sections do not guarantee the pointer stays non-NULL across two separate calls, the second invocation can return NULL, causing a dereference fault. Second, dev->ip6_ptr is dereferenced via rcu_dereference() inside a list_empty() call without any prior NULL guard, meaning if the IPv6 private pointer is not initialized on the interface, a NULL dereference follows. CWE-476 (NULL Pointer Dereference) is the root cause class. The fix applies the correct RCU API pattern - storing the result of __in_dev_get_rcu() in a local variable and checking once - and adds a NULL check on ip6_ptr before accessing its addr_list member. Affected CPEs cover cpe:2.3:o:linux:linux_kernel including release candidates 6.9-rc1 through 6.9-rc5.
RemediationAI
The upstream fix is available as patch commits in the Linux kernel stable tree, confirmed by NVD references at https://git.kernel.org/stable/c/23b7ee4a8d559bf38eac7ce5bb2f6ebf76f9c401, https://git.kernel.org/stable/c/3e2979bf080c40da4f7c93aff8575ab8bc62b767, https://git.kernel.org/stable/c/599c9ad5e1d43f5c12d869f5fd406ba5d8c55270, https://git.kernel.org/stable/c/c58e88d49097bd12dfcfef4f075b43f5d5830941, and https://git.kernel.org/stable/c/d68dc711d84fdcf698e5d45308c3ddeede586350. A specific patched release version number is not independently confirmed from the available data - apply the latest stable kernel release from your distribution (Red Hat, Ubuntu, Debian, SUSE, etc.) once their respective security advisories incorporate these commits. As a compensating control where patching is not immediately possible, deploying firewall or ACL rules to block inbound ICMP probe packets from untrusted networks reduces attack surface; note this may affect legitimate network diagnostic and reachability-probe functionality. There are no documented workarounds that address the kernel code path itself without patching.
Same weakness CWE-476 – NULL Pointer Dereference
View allSame technique Denial Of Service
View allShare
External POC / Exploit Code
Leaving vuln.today