All vulnerabilities
CVE-2026-97609

Linux: netfilter: cttimeout: prevent UAF during module unload

Linux LinuxOperating systems
CVSS
7.0High
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.14%Chance of exploitation activity in the next 30 days, higher than 3% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in73f353bec62509c776184e49a031c6145cec0d05Also 1f69c570a73f2dedf75ea5166d47622d5fa958c1CVE List
Published25 Sep 2026Updated 21 Oct 2026CVE List

What fixes it

  • 73f353bec62509c776184e49a031c6145cec0d05LinuxCVE List
  • 1f69c570a73f2dedf75ea5166d47622d5fa958c1LinuxCVE List

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

In the Linux kernel, the following vulnerability has been resolved:

netfilter: cttimeout: prevent UAF during module unload

nf_ct_set_timeout() protects the timeout hook dereference and policy lookup with rcu_read_lock(). cttimeout_exit(), however, unregisters the per-net operations before it clears the hook.

This allows the following interleaving:

CPU 0 CPU 1 cttimeout_exit() nf_ct_set_timeout() unregister_pernet_subsys() rcu_read_lock() kfree(pernet) h = nf_ct_timeout_hook h->timeout_find_get() nfct_timeout_pernet()

The hook still points to ctnl_timeout_find_get() when CPU 1 looks up the already freed per-net timeout list. KASAN reported:

BUG: KASAN: slab-use-after-free in ctnl_timeout_find_get Read of size 8 by task poc/90 Call Trace: ctnl_timeout_find_get+0x271/0x2a0 [nfnetlink_cttimeout] nf_ct_set_timeout+0x7b/0x3c0 xt_ct_tg_check+0x724/0xb20 xt_check_target+0x234/0xa90 do_ipt_set_ctl+0x570/0x1270 Allocated by task 89: __kmalloc_noprof+0x16e/0x460 ops_init+0x6d/0x420 register_pernet_operations+0x2f6/0x670 Freed by task 91: kfree+0x131/0x390 ops_undo_list+0x3d4/0x730 unregister_pernet_operations+0x232/0x490 unregister_pernet_subsys+0x1c/0x30 cttimeout_exit+0x52/0x970 [nfnetlink_cttimeout]

Clear the hook and wait for existing readers before unregistering the per-net operations. This blocks new policy lookups and ensures readers that observed the hook finish before the per-net storage is freed.

Text from CVE List

Affected versions 12

  • Linuxaffected: ebfbe67568a734a449203097b02c4ab884257535 before f664e06699829a31e95675a6864655a6c5f9904fCVE List
  • Linuxaffected: ebfbe67568a734a449203097b02c4ab884257535 before 73f353bec62509c776184e49a031c6145cec0d05CVE List
  • Linuxaffected: ebfbe67568a734a449203097b02c4ab884257535 before a7fdd86c386b7f7cc72a126389c2cdb55d035221CVE List
  • Linuxaffected: ebfbe67568a734a449203097b02c4ab884257535 before 1f69c570a73f2dedf75ea5166d47622d5fa958c1CVE List
  • Linuxaffected: ebfbe67568a734a449203097b02c4ab884257535 before fec9b1de0d02de8dafa3cc344bcb91cf28660643CVE List
  • Linuxaffected: 5.13CVE List
  • Linuxunaffected: all versions before 5.13CVE List
  • Linuxunaffected: 6.6.160 through 6.6.*CVE List
  • Linuxunaffected: 6.12.112 through 6.12.*CVE List
  • Linuxunaffected: 6.18.53 through 6.18.*CVE List
  • Linuxunaffected: 7.2.7 through 7.2.*CVE List
  • Linuxunaffected: 7.3CVE List

References 5