Skip to main content
← All vulnerabilities
CVE-2026-97608

netfilter: nf_log: unregister loggers before per-net teardown

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 5.15.222, 6.1.189, 6.6.158, 6.12.111, 6.18.53, and 1 more
None on Exploit-DB, Metasploit or GitHub

Summary

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.

Timeline

  1. CVE published
  2. Record last updated

Affected versions

  • Linux Linux

    From 5b023fc8d8e0997e0b7ea6506d243afd5478c96e · fixed in 51417230716b73f6aa1dc402b3a56d3382a694dc; From 5b023fc8d8e0997e0b7ea6506d243afd5478c96e · fixed in b0514ca1ee6f2b708d6c602ea946acdfc6a90e24; From 5b023fc8d8e0997e0b7ea6506d243afd5478c96e · fixed in 90166834b7dc6131aa42b6b14b8b4ed47be97079; From 5b023fc8d8e0997e0b7ea6506d243afd5478c96e · fixed in eaec35fae8f2052c1878a5c7cc7699d8357d79f2; From 5b023fc8d8e0997e0b7ea6506d243afd5478c96e · fixed in 64803ba0a05791cf9ca874466480e4c4cadaf7ab; From 5b023fc8d8e0997e0b7ea6506d243afd5478c96e · fixed in dce24f3a146948595bb1b86347f31e20b4975daa; From 5b023fc8d8e0997e0b7ea6506d243afd5478c96e · fixed in 2c018cc4842c33f0c732962e2ab58635e8ae5823

  • Linux Linux

    3.10

  • KernelLinux

    From 3.10.0 · fixed in 5.15.222; From 5.16.0 · fixed in 6.1.189; From 6.2.0 · fixed in 6.6.158; From 6.7.0 · fixed in 6.12.111; From 6.13.0 · fixed in 6.18.53; From 6.19.0 · fixed in 7.2.7

References 7

git.kernel.org