HIGH Introduced in 6.7
vxlan FdbFlush UAF
CVE-2026-80838
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
01Description
In the Linux kernel, the following vulnerability has been resolved: vxlan: keep the last remote linked during FDB flush A non-nexthop FDB entry is expected to have at least one remote while it remains reachable through the FDB hash table. A filtered bulk flush violates this invariant when every remote matches: It unlinks the last remote in vxlan_fdb_dst_destroy() and only afterwards tells vxlan_flush() to destroy the parent FDB entry. An RCU reader can find the parent during this interval. first_remote_rcu() then applies list_entry_rcu() to the empty list head, producing an invalid remote pointer that the receive learning path can read from and write to. When a matching remote is the sole remaining remote, leave it linked and ask the caller to destroy the entire FDB entry. vxlan_fdb_destroy() keeps the remote attached while sending the deletion notification and removing the parent from the lookup structures.
02KernelScan AI Analysis
Risk summary
A race condition in the VXLAN FDB flush path can leave a forwarding database entry with no remotes while it is still reachable via the hash table, allowing an RCU reader to obtain an invalid remote pointer and read or write through it. An attacker with local network configuration privileges (CAP_NET_ADMIN, obtainable in a user namespace) can trigger this via a filtered FDB flush, potentially leading to kernel memory corruption.
Vulnerability analysis
During a filtered bulk flush of VXLAN forwarding database entries, the code unlinks the last remaining remote from an FDB entry before scheduling the parent entry for destruction. In the interval between unlinking the remote and removing the parent from the hash table, an RCU reader can still find the parent entry and dereference its now-empty remote list, producing an invalid pointer that the receive learning path can read from and write to. The fix keeps the last remote linked when it is the sole remaining one and instead asks the caller to destroy the entire FDB entry, so the parent is never visible in the hash table with an empty remote list. The vulnerable path is reachable from a local process that can configure VXLAN FDB entries, which requires CAP_NET_ADMIN obtainable in a user namespace.
Lifecycle
03Fix Versions
| Branch | Introduced | Fixed in | Patch commit |
|---|---|---|---|
| 6.12 | 6.7 | 6.12.108 | 2a7c2f008432 |
| 6.18 | 6.7 | 6.18.49 | a8820c8a7718 |
| 7.1 | 6.7 | 7.1.13 | 8ba68fd6cdd1 |
| 7.2 | 6.7 | 7.2.3 | 4bbc76ee1b21 |
| mainline | 6.7 | 7.3 | d5d4a7b538b5 |
| cip/6.12 | 6.7 | 6.12.108-cip31 | 2a7c2f008432 |
04CIP Kernels
State of the newest release of each Civil Infrastructure Platform SLTS tree, from CIP's own fix records.
| CIP tree | State |
|---|---|
| cip/6.12 | Fixed in 6.12.108-cip31 |