Look up another CVE · open CVE-2026-68415 in the interactive tracker
CVE-2026-68415
xfrm: clear mode callbacks after failed mode setup
Published 2026-08-10 (2 months ago) by the Linux kernel CNA. Subsystem net/xfrm. Debian urgency: unimportant.
What to do, per Debian release
Debian's own status for CVE-2026-68415 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
| Release | Status | Version | What this means |
|---|---|---|---|
| Debian 12bookworm | not affected | 6.1.190-1 | Nothing to do. bookworm never shipped the vulnerable code. |
| Debian 13trixie | not affected | 6.12.113-1 | Nothing to do. trixie never shipped the vulnerable code. |
| Debian 14forky | fixed | 7.1.6-1 | Update the kernel and reboot. Fixed in 7.1.6-1. A running kernel keeps the old code until the machine restarts. |
| Debian unstablesid | fixed | 7.1.6-1 | Update the kernel and reboot. Fixed in 7.1.6-1. A running kernel keeps the old code until the machine restarts. |
The vulnerability
What the bug is
xfrm_state_gc_task can run long after a failed IPTFS state setup. In the reproduced case, __xfrm_init_state() cached x->mode_cbs, IPTFS setup returned -ENOMEM before publishing mode_data, and the temporary module reference from xfrm_get_mode_cbs() was dropped immediately. The dead state then kept x->mode_cbs until deferred GC ran after xfrm_iptfs had been unloaded. Clear x->mode_cbs when mode init or clone fails before publishing mode_data. Those states never installed mode-specific state or the long-term IPTFS module pin, so deferred GC has nothing mode-specific to destroy and must not retain a callback table pointer past the temporary lookup reference. The buggy scenario involves two paths, with each column showing the order within that path: failed setup path: 1. cache x->mode_cbs 2. mode setup fails before mode_data 3. drop the temporary module ref 4. dead state keeps x->mode_cbs cached GC/unload path: 1. xfrm_state_put() queues GC work 2. xfrm_iptfs unloads later 3. xfrm_state_gc_task runs 4. GC dereferences stale x->mode_cbs This also covers the failed clone path where clone_state() returns before publishing mode_data. Validation reproduced this kernel report: Kernel panic - not syncing: Fatal exception CONFIG_FAULT_INJECTION_STACKTRACE_FILTER=y failslab_stacktrace_filter matched xfrm_iptfs frames ack_error=-12 FAULT_INJECTION: forcing a failure BUG: unable to handle page fault Workqueue: events xfrm_state_gc_task RIP: xfrm_state_gc_task+0x142/0x650 Modules linked in: esp4_offload xfrm_user [last unloaded: xfrm_iptfs] Kernel panic - not syncing: Fatal exception
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.
net/xfrm/xfrm_state.c
- What this is
- NETWORKING [IPSEC]MAINTAINERS section matched on net/xfrm/ · netdev@vger.kernel.org · Maintained
Check it on the machine
grep -w CONFIG_XFRM /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.
Show whether Debian builds this, per release
Debian builds this code. Every release below compiles the affected file into the kernels it ships.
- bookworm, trixie, forky, sidy
- y
- built into the kernel image on every flavour - only a patch removes it
- Build switch
- CONFIG_XFRM
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-10 (2 months ago)source
- CVSS
- 7.8 high
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:Hsource recompute it - Attack vector
- local (AV:L)source
- EPSS
- 0.13%, higher than 2.6% of all CVEssource
- CISA KEV
- not listedthe KEV catalogue
- Debian urgency
- unimportantsource
- Subsystem
- net/xfrm
Upstream fixes
The versions the CNA records as introducing and fixing this, and the commit for each. source
| Introduced | Fixed in | Commit |
|---|---|---|
| 6.14 | 6.18.42 | 9845a35986a6 |
| 6.14 | 7.1.6 | c37a07923012 |
| 6.14 | 7.2 | 2538bd3cd1ff |
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 vulnerable paths are reached only through the XFRM configuration interface — netlink XFRM_MSG_NEWSA/XFRM_MSG_MIGRATE handled by xfrm_user.c — which requires a local socket on the machine; no remote peer data reaches this code.
- AC:LAttack complexity, low
- The attacker fully controls SA creation and the failing allocation size (XFRMA_IPTFS_REORDER_WINDOW up to 65535 slots, ~1MB order-8 kmalloc), so the -ENOMEM setup failure is attacker-inducible and repeatable, and unlimited poisoned dead states can be armed so the stale x->mode_cbs dereference in xfrm_state_gc_task is hit deterministically once xfrm_iptfs is unloaded.
- PR:LPrivileges required, low
- xfrm_user_rcv_msg() gates on netlink_net_capable(skb, CAP_NET_ADMIN), which is evaluated against the net namespace's user_ns, so any unprivileged local user obtains it with `unshare -Urn`; the IPTFS module is auto-loaded on demand by xfrm_get_mode_cbs().
- UI:NUser interaction, none
- The attacker performs the entire sequence with netlink messages from its own process; no victim action, mount, or file open is needed to arm or trigger the dead state's deferred GC.
- S:UScope, unchanged
- The stale callback dereference occurs in kernel context within the same security authority; no VM, IOMMU, or sandbox boundary is crossed.
- C:HConfidentiality impact, high
- xfrm_state_gc_task loads x->mode_cbs->destroy_state from module memory that was freed by module unload and can be reoccupied by attacker-influenced allocations, giving a stale-pointer read/indirect-call primitive that can be leveraged to disclose arbitrary kernel memory.
- I:HIntegrity impact, high
- Calling a function pointer read out of freed module text/rodata is a control-flow hijack primitive; combined with the missing module reference that lets the memory be recycled, this permits arbitrary kernel-state modification rather than a benign fault.
- A:HAvailability impact, high
- The commit's reproducer shows the direct outcome is "BUG: unable to handle page fault" in the events workqueue running xfrm_state_gc_task, escalating to "Kernel panic - not syncing: Fatal exception" — a full system crash.