PT-2026-98548 · Linux · Linux

CVE-2026-97608

·

Published

2026-09-25

·

Updated

2026-09-25

CVSS v3.1

7.0

High

VectorAV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nf log: unregister loggers before per-net teardown
nf log syslog and nfnetlink log unregister their per-network namespace operations before unregistering their global logger backends. This leaves a window where a sysctl or netlink writer can rebind the still- registered logger after the per-net pre-exit callback cleared the old selection.
The race looks like this:
CPU 0 CPU 1

unregister pernet subsys() nf log unset(net, logger) net->nf.nf loggers[pf] = NULL
                lock nf log mutex
                find logger in loggers[][]
                net->nf.nf loggers[pf] = logger
                unlock nf log mutex
nf log unregister(logger) lock nf log mutex loggers[pf][type] = NULL unlock nf log mutex synchronize rcu() module exit returns module core frees backend memory
Later, a sysctl read or packet logging operation can dereference the stale per-net logger pointer.
Fix this by unregistering the global logger backends before tearing down per-net state. Once the global registrations are gone, later writers can no longer rebind the logger. unregister pernet subsys() already waits for an RCU grace period after the pre-exit callback clears the per-net selection, while nf log unregister() continues to cover readers of the global logger table.
Apply this ordering fix to both nf log backends that combine per-net teardown with global logger registration.

Fix

Found an issue in the description? Have something to add? Feel free to write us 👾

Related Identifiers

CVE-2026-97608

Affected Products

Linux