netfilter: nf_conntrack_helper: pass helper to expect cleanup
- Published
- Last modified
- Where the record stands: published, rejected by its publisher, or superseded by another id.What do these mean? →
- published
- Whether CISA lists it in its Known Exploited Vulnerabilities catalog: proof that attackers are using it.What do these mean? →
- Not listed in CISA KEV
- Fix
- Fixed in 5.10.253, 5.15.203, 6.1.168, 6.6.134, 6.12.81, and 2 more
- Whether working attack code is public (Exploit-DB, Metasploit, Nuclei or GitHub). Public code makes attacks easier.What do these mean? →
- None on Exploit-DB, Metasploit or GitHub
Summary
In the Linux kernel, the following vulnerability has been resolved: netfilter: nf_conntrack_helper: pass helper to expect cleanup nf_conntrack_helper_unregister() calls nf_ct_expect_iterate_destroy() to remove expectations belonging to the helper being unregistered. However, it passes NULL instead of the helper pointer as the data argument, so expect_iter_me() never matches any expectation and all of them survive the cleanup. After unregister returns, nfnl_cthelper_del() frees the helper object immediately. Subsequent expectation dumps or packet-driven init_conntrack() calls then dereference the freed exp->helper, causing a use-after-free. Pass the actual helper pointer so expectations referencing it are properly destroyed before the helper object is freed. BUG: KASAN: slab-use-after-free in string+0x38f/0x430 Read of size 1 at addr ffff888003b14d20 by task poc/103 Call Trace: string+0x38f/0x430 vsnprintf+0x3cc/0x1170 seq_printf+0x17a/0x240 exp_seq_show+0x2e5/0x560 seq_read_iter+0x419/0x1280 proc_reg_read+0x1ac/0x270 vfs_read+0x179/0x930 ksys_read+0xef/0x1c0 Freed by task 103: The buggy address is located 32 bytes inside of freed 192-byte region [ffff888003b14d00, ffff888003b14dc0)
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From ac7b848390036dadd4351899d2a23748075916bd · fixed in 5cf28d5c8dcbbe8af6d3b145babe491906d7bad1; From ac7b848390036dadd4351899d2a23748075916bd · fixed in 504ba4168466c91210c45acdc332479cfd5f2da6; From ac7b848390036dadd4351899d2a23748075916bd · fixed in dc1739eff48e34cc71d4e2f03715493fbcebd8af; From ac7b848390036dadd4351899d2a23748075916bd · fixed in 2cf2737c85a2ba2b52024dafe68ffad2676f97be; From ac7b848390036dadd4351899d2a23748075916bd · fixed in 2c16e4d64dd91227742dfe196a3e7b0568bef65a; From ac7b848390036dadd4351899d2a23748075916bd · fixed in 620f3d14c1ef51d425060a3056ad8dbae8f998a3; From ac7b848390036dadd4351899d2a23748075916bd · fixed in 90bd7e8501349db3006d21fbc09df9ffcb172965; From ac7b848390036dadd4351899d2a23748075916bd · fixed in a242a9ae58aa46ff7dae51ce64150a93957abe65
- Linux Linux
4.14
- KernelLinux
From 4.14.0 · fixed in 5.10.253; From 5.11.0 · fixed in 5.15.203; From 5.16.0 · fixed in 6.1.168; From 6.2.0 · fixed in 6.6.134; From 6.7.0 · fixed in 6.12.81; From 6.13.0 · fixed in 6.18.22; From 6.19.0 · fixed in 6.19.12
References 8
git.kernel.org
- stable/c/5cf28d5c8dcbbe8af6d3b145babe491906d7bad1
- stable/c/504ba4168466c91210c45acdc332479cfd5f2da6
- stable/c/dc1739eff48e34cc71d4e2f03715493fbcebd8af
- stable/c/2cf2737c85a2ba2b52024dafe68ffad2676f97be
- stable/c/2c16e4d64dd91227742dfe196a3e7b0568bef65a
- stable/c/620f3d14c1ef51d425060a3056ad8dbae8f998a3
- stable/c/90bd7e8501349db3006d21fbc09df9ffcb172965
- stable/c/a242a9ae58aa46ff7dae51ce64150a93957abe65