CVE-2026-52981: Linux Kernel neigh_xmit SKB Memory Leak Denial of Service
A memory leak has been identified in the Linux kernel's neighbor table networking subsystem. The vulnerability exists in the `neigh_xmit()` function, which is responsible for transmitting network packets through the kernel's neighbor discovery mechanism. Under specific conditions—particularly when a neighbor table is not initialized (such as when IPv6 is disabled but the function is still called)—the function returns an error without properly freeing the associated network buffer (SKB). This means memory is consumed and never released, potentially exhausting system memory over time.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 7.5 HIGH · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
- Weaknesses (CWE)
- CWE-401
- Affected products
- 2 configuration(s)
- Published / Modified
- 2026-06-24 / 2026-07-14
NVD description (verbatim)
In the Linux kernel, the following vulnerability has been resolved: neigh: let neigh_xmit take skb ownership neigh_xmit always releases the skb, except when no neighbour table is found. But even the first added user of neigh_xmit (mpls) relied on neigh_xmit to release the skb (or queue it for tx). sashiko reported: If neigh_xmit() is called with an uninitialized neighbor table (for example, NEIGH_ND_TABLE when IPv6 is disabled), it returns -EAFNOSUPPORT and bypasses its internal out_kfree_skb error path. Because the return value of neigh_xmit() is ignored here, does this leak the SKB? Assume full ownership and remove the last code path that doesn't xmit or free skb.
6 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
CVE-2026-52981 is a use-after-free and resource management defect in the Linux kernel's neighbor subsystem. The `neigh_xmit()` function is designed to assume full ownership of the socket buffer (SKB) passed to it, meaning it should either transmit the buffer or release its memory. However, a code path exists where the function returns -EAFNOSUPPORT when no valid neighbor table is found (for example, NEIGH_ND_TABLE when IPv6 is disabled), bypassing the internal `out_kfree_skb` error handling path. This allows the SKB to leak without being freed or queued for transmission. The issue affects callers—notably the MPLS subsystem—that rely on `neigh_xmit()` to manage SKB lifecycle. The kernel patch removes the unhandled return path and ensures the function always assumes and properly manages SKB ownership.
Business impact
This vulnerability can lead to denial of service through memory exhaustion. An attacker or malfunctioning application that repeatedly triggers the uninitialized neighbor table condition can cause the kernel to accumulate unreleased memory buffers. Over time, this degrades system performance, exhausts available memory, and ultimately causes the system to become unresponsive or crash. For cloud providers, container platforms, and organizations running Linux systems handling high-throughput network operations, the cumulative effect of SKB leaks can significantly impact availability.
Affected systems
The vulnerability affects the Linux kernel across distributions and versions prior to the patch release. Any system running a vulnerable kernel version that uses IPv6 neighbor discovery or MPLS routing is potentially at risk, particularly systems where IPv6 may be disabled or misconfigured. The exact affected kernel version range should be verified against your distribution's security advisory, as the vulnerability manifests through kernel subsystem interactions rather than userspace applications.
Exploitability
This vulnerability is not currently listed in CISA's Known Exploited Vulnerabilities (KEV) catalog, and no public exploit code is known at this time. However, exploitation does not require network-based attacks or elevated privileges. An unprivileged local process that can trigger neighbor table lookups for disabled protocol families can induce the leak. The attack surface includes any network interface configuration change, protocol binding attempt, or routing operation that causes `neigh_xmit()` to be called with an uninitialized table. Exploitation requires no user interaction and can be performed through normal network operations.
Remediation
Apply the kernel patch that resolves the SKB ownership issue in `neigh_xmit()`. The fix ensures the function always takes responsibility for freeing or transmitting the SKB, eliminating the code path that previously bypassed cleanup. Verify the patched kernel version with your Linux distribution vendor and test in a non-production environment before deployment. For systems unable to patch immediately, monitor memory usage closely and review neighbor table initialization configurations to minimize triggering conditions.
Patch guidance
Contact your Linux distribution vendor (Red Hat, Canonical, SUSE, etc.) for the patched kernel version addressing CVE-2026-52981. The upstream Linux kernel fix is available; coordinate with your vendor for backport availability and testing timelines. Apply patches to production systems following your change management process, typically requiring a reboot. Validate neighbor discovery functionality post-patch, particularly for IPv6 and MPLS environments. Coordinate patching windows to minimize availability impact.
Detection guidance
Monitor kernel memory usage patterns and swap pressure. A gradual increase in kernel memory consumption without corresponding user-space memory growth may indicate SKB leaks. Use kernel debugging tools (kmemleak, if enabled) to identify persistent memory objects. Network monitoring should track neighbor table state and protocol binding attempts. System logs may show out-of-memory (OOM) killer invocations under sustained leak conditions. Implement memory usage baselines and alert on sustained deviations above normal thresholds.
Why prioritize this
Although not yet widely exploited, this vulnerability carries a CVSS score of 7.5 (HIGH) due to its high attack complexity and availability impact. The lack of complexity requirements, absence of privilege escalation, and denial-of-service potential make this a priority remediation target. Systems under high network load or those with unstable IPv6/MPLS configurations face elevated risk. Organizations should prioritize patching based on workload criticality and network subsystem exposure.
Risk score, explained
The CVSS 3.1 score of 7.5 reflects a network-exploitable availability attack requiring no authentication or user interaction. The vector AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H indicates the vulnerability is remotely triggerable with low complexity and directly impacts system availability (denial of service). The lack of confidentiality and integrity impacts reflects that this is purely a resource exhaustion issue. The score appropriately weights the severity for production infrastructure reliant on kernel stability.
Frequently asked questions
Can this be exploited remotely without network access?
Yes. While the vulnerability is triggered through network operations, an unprivileged local process can induce the condition by attempting neighbor discovery or MPLS operations with disabled protocol families. No network packet from a remote attacker is required; the trigger is a local kernel function call pattern.
Does IPv6 being disabled completely eliminate the risk?
Not entirely. Although IPv6-specific neighbor tables may not be initialized when IPv6 is disabled, other neighbor table types (IPv4 ARP, etc.) could be affected by the same code pattern in different contexts. Patching is recommended regardless of IPv6 configuration.
What is the difference between a SKB leak and traditional memory leaks?
SKBs (socket buffers) are kernel-allocated network packet structures pooled and reused by the kernel. Leaking SKBs specifically exhausts the kernel's network buffer pool, degrading network subsystem performance before system-wide memory exhaustion occurs. This makes network-oriented denial-of-service impact more pronounced.
Will the patch affect IPv6 or MPLS functionality?
No. The patch fixes a code path that was incorrectly bypassing cleanup. The corrected path ensures proper SKB disposal while maintaining all legitimate IPv6 and MPLS neighbor discovery behavior. Functionality is preserved; reliability is improved.
This analysis is provided for informational purposes and should not be construed as legal or regulatory advice. The vulnerability details, patch guidance, and risk assessments are based on available source data as of the publication date. Specific vulnerability impact and patch availability vary by Linux distribution and kernel version; verify against your vendor's security advisory before implementing mitigations. No guarantee is made regarding the completeness or accuracy of detection signatures or remediation steps in all environments. Organizations should conduct independent testing and validation aligned with their change management and incident response procedures. Source: NVD (public-domain), retrieved 2026-07-30. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-46178HIGHLinux Kernel RDMA/mlx4 Resource Leak – HIGH Severity
- CVE-2026-46201HIGHLinux Xe Graphics Driver DMA-Buf Attachment Leak
- CVE-2026-46303HIGHLinux isofs Rock Ridge Information Disclosure Vulnerability
- CVE-2026-46309HIGHLinux xe GPU Driver Memory Disclosure via Incoherent Cache Access
- CVE-2026-52923HIGHLinux Kernel IPC Checkpoint/Restore Use-After-Free Vulnerability
- CVE-2026-52974HIGHLinux Kernel TLS Hardware Offload Memory Leak
- CVE-2026-46109MEDIUMLinux Kernel USB ULPI Memory Leak – CVSS 5.5 Medium
- CVE-2026-46141MEDIUMPowerPC XIVE Memory Leak in MSI-X Interrupt Allocation