data built 2026-10-19T13:16:53Z

Look up another CVE · open CVE-2026-74615 in the interactive tracker

CVE-2026-74615

vxlan: do not arm the ageing timer on a device that is down

8.8 EPSS 0.1% AV:L

Published 2026-08-22 (2 months ago) by the Linux kernel CNA. Subsystem drivers/net. Debian urgency: not yet assigned.

What to do, per Debian release

Debian's own status for CVE-2026-74615 in every release this site tracks, and what each one means in practice. Every status below is the one the Debian Security Team publishes for this CVE. source

ReleaseStatus VersionWhat this means
Debian 12bookwormfixedDLA-4777-1 · 2026-09-08 · text6.1.187-1Update the kernel and reboot. DLA-4777-1 shipped the fix on 2026-09-08, in 6.1.187-1. A running kernel keeps the old code until the machine restarts.
Debian 13trixiefixedDSA-6466-1 · 2026-08-25 · text6.12.105-1Update the kernel and reboot. DSA-6466-1 shipped the fix on 2026-08-25, in 6.12.105-1. A running kernel keeps the old code until the machine restarts.
Debian 14forkyfixed7.1.9-1Update the kernel and reboot. Fixed in 7.1.9-1. A running kernel keeps the old code until the machine restarts.
Debian unstablesidfixed7.1.9-1Update the kernel and reboot. Fixed in 7.1.9-1. A running kernel keeps the old code until the machine restarts.
Debian 12bookworm · linux-6.12fixedDLA-4788-1 · 2026-09-19 · text6.12.107-1~deb12u1Update the kernel and reboot. DLA-4788-1 shipped the fix on 2026-09-19, in 6.12.107-1~deb12u1. A running kernel keeps the old code until the machine restarts.

The vulnerability

What the bug is

vxlan_changelink() arms vxlan->age_timer whenever the requested ageing interval differs from the configured one: if (conf.age_interval != vxlan->cfg.age_interval) mod_timer(&vxlan->age_timer, jiffies); There is no netif_running() test, so the timer is armed even on a device that was never brought up. The only synchronous cancel in the driver is the timer_delete_sync() in vxlan_stop(), which is .ndo_stop. netif_close_many() drops devices without IFF_UP before __dev_close_many() runs, so that cancel is skipped for such a device. vxlan_setup() sets dev->needs_free_netdev = true and age_timer is a member of struct vxlan_dev, so free_netdev() releases the allocation the timer lives in while it is still queued on a timer_base. expire_timers() unlinks the entry before it loads timer->function, so the timer core writes through the freed object's list pointers: BUG: KASAN: slab-use-after-free in __run_timers+0x208/0x654 Write of size 8 at addr ffff00001adace68 by task true/192 __asan_store8+0x84/0xac __run_timers+0x208/0x654 run_timer_softirq+0x154/0x18c Allocated by task 189: alloc_netdev_mqs+0x64/0x720 rtnl_create_link+0x4ac/0x520 rtnl_newlink+0x758/0xd00 Freed by task 191: netdev_release+0x40/0x58 netdev_run_todo+0x4a4/0x8c0 rtnl_dellink+0x200/0x4e8 The rtnl operations involved are netns-scoped, so an unprivileged user can perform them in a new user and network namespace. Arming the timer on a down device never had an effect: vxlan_cleanup() returns early on !netif_running(), and vxlan_open() arms the timer for any non-zero interval once the device is brought up. Add the missing test. Discovered by XBOW, triaged by Baul Lee <baul.lee@xbow.com>

Where it lives

The fix touches these files. If the subsystem is one you do not use, the practical exposure is lower, though the package is still the vulnerable one.

drivers/net/vxlan/vxlan_core.c

What this is
NETWORKING DRIVERSMAINTAINERS section matched on drivers/net/ · netdev@vger.kernel.org · Maintained
Kernel module
vxlan

Check it on the machine

grep -w CONFIG_VXLAN /boot/config-$(uname -r)

Reads the booted kernel's own configuration, on the machine and nowhere else. =y is built in, =m is a module, and an is not set line means the code is not there.

lsmod | grep -w vxlan

Prints a line if that module is loaded right now, and nothing if it is not. One that is not loaded can still be loaded later by anything that needs it.

Show whether Debian builds this, per release

Debian builds this as a loadable module. Every release below compiles it as a module on every flavour, so whether the code is in the running kernel depends on whether that module is loaded.

  • bookworm, trixie, forky, sid, bookworm · linux-6.12m
m
a loadable module on every flavour - check lsmod, can be blacklisted
Build switch
CONFIG_VXLAN

From the configuration Debian publishes for every kernel flavour it builds. It covers only the architectures Debian ships a linux-config package for, and nothing about a kernel you built yourself. Debian's own status above stays authoritative about the source package.MAINTAINERS kbuild Makefiles Debian linux-config packages

Signals

Published
2026-08-22 (2 months ago)source
CVSS
8.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:Hsource recompute it
Attack vector
local (AV:L)source
EPSS
0.13%, higher than 2.0% of all CVEssource
CISA KEV
not listedthe KEV catalogue
Debian urgency
not yet assignedsource
Subsystem
drivers/net

Upstream fixes

The versions the CNA records as introducing and fixing this, and the commit for each. source

IntroducedFixed inCommit
5.05.10.265be44d79d14d7
5.05.15.21626c179d47403
5.06.1.1839dc561f0522c
5.06.6.152619dd29045e4
5.06.12.1046b095e99b9e6
5.06.18.4546bb297ad776
5.07.1.96b4119af5449
5.07.2b37971686ec5

Debian advisories

AdvisoryDateShipped toDebian
DLA-4788-12026-09-19bookworm 6.12.107-1~deb12u1tracker
DLA-4777-12026-09-08bookworm 6.1.187-1tracker
DSA-6466-12026-08-25trixie 6.12.105-1tracker

Why the CNA scored it this way

Quoted from the kernel CNA's own scoring file, word for word. A highlighted metric carries the most severe value CVSS v3.1 defines for it, which is what pushes the score up. source

AV:LAttack vector, local
The bug is reached only via local RTNETLINK on AF_NETLINK: RTM_NEWLINK creates a vxlan netdev, changelink with IFLA_VXLAN_AGEING arms age_timer, and RTM_DELLINK frees it; remote VXLAN encapsulation/packet receive is not involved.
AC:LAttack complexity, low
The attacker fully controls a deterministic sequence on a never-up device: changelink calls mod_timer(jiffies) and dellink frees netdev while the timer stays queued because netif_close_many skips IFF_UP-less devices so vxlan_stop/timer_delete_sync never runs.
PR:LPrivileges required, low
rtnetlink_rcv_msg requires CAP_NET_ADMIN for RTM_NEWLINK, RTM_SETLINK, and RTM_DELLINK; unprivileged local users obtain this capability inside a new user and network namespace (unshare -Urn), as stated in the fix commit.
UI:NUser interaction, none
No victim interaction is required; the attacker alone issues netlink create/changelink/delete operations on their own down vxlan interface without bringing the device up or requiring mounts or file access.
S:CScope, changed
Slab UAF corruption triggered from CAP_NET_ADMIN inside an unprivileged user/network namespace affects host kernel timer-list memory outside the namespace sandbox, crossing the container-to-host security boundary.
C:HConfidentiality impact, high
KASAN reports slab-use-after-free with an 8-byte write through freed vxlan_dev->age_timer list pointers in __run_timers; UAF on kernel timer structures enables arbitrary kernel memory disclosure via slab heap reuse.
I:HIntegrity impact, high
expire_timers() writes to freed timer_list entry fields before loading the callback, providing controlled slab corruption; UAF on embedded vxlan_dev timers is exploitable for arbitrary kernel writes and privilege escalation.
A:HAvailability impact, high
Confirmed KASAN slab-use-after-free in run_timer_softirq can kernel oops/panic; the dangling timer remains armed after rtnl_dellink and the sequence can be repeated for reliable denial of service.