{"id":"CVE-2026-31665","state":"PUBLISHED","title":"netfilter: nft_ct: fix use-after-free in timeout object destroy","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nft_ct: fix use-after-free in timeout object destroy\n\nnft_ct_timeout_obj_destroy() frees the timeout object with kfree()\nimmediately after nf_ct_untimeout(), without waiting for an RCU grace\nperiod. Concurrent packet processing on other CPUs may still hold\nRCU-protected references to the timeout object obtained via\nrcu_dereference() in nf_ct_timeout_data().\n\nAdd an rcu_head to struct nf_ct_timeout and use kfree_rcu() to defer\nfreeing until after an RCU grace period, matching the approach already\nused in nfnetlink_cttimeout.c.\n\nKASAN report:\n BUG: KASAN: slab-use-after-free in nf_conntrack_tcp_packet+0x1381/0x29d0\n Read of size 4 at addr ffff8881035fe19c by task exploit/80\n\n Call Trace:\n  nf_conntrack_tcp_packet+0x1381/0x29d0\n  nf_conntrack_in+0x612/0x8b0\n  nf_hook_slow+0x70/0x100\n  __ip_local_out+0x1b2/0x210\n  tcp_sendmsg_locked+0x722/0x1580\n  __sys_sendto+0x2d8/0x320\n\n Allocated by task 75:\n  nft_ct_timeout_obj_init+0xf6/0x290\n  nft_obj_init+0x107/0x1b0\n  nf_tables_newobj+0x680/0x9c0\n  nfnetlink_rcv_batch+0xc29/0xe00\n\n Freed by task 26:\n  nft_obj_destroy+0x3f/0xa0\n  nf_tables_trans_destroy_work+0x51c/0x5c0\n  process_one_work+0x2c4/0x5a0","publishedAt":"2026-04-24T14:45:14.613Z","updatedAt":"2026-10-19T18:56:02.639Z","severity":{"score":7.8,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","source":"Linux"},"assigner":"Linux","products":["Linux Linux"],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"c458fc1c278a65ad5381083121d39a479973ebed","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"c581e5c8f2b59158f62efe61c1a3dc36189081ff","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"f16fe84879a5280f05ebbcea593a189ba0f3e79a","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"070abdf1b04325b21a20a2a0c39a2208af107275","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"aa7cfa16f98f8ec3e6d47c34e1a8c1ae4b9b8b77","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"b42aca3660dc2627a29a38131597ca610dc451f9","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"d0983b48c10d1509fd795c155f8b1e832e1369ff","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"f8dca15a1b190787bbd03285304b569631160eda","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/netfilter/nf_conntrack_timeout.h","net/netfilter/nft_ct.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.19","versionType":"semver"},{"version":"5.10.253","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.203","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.169","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.135","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.82","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.23","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.13","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/netfilter/nf_conntrack_timeout.h","net/netfilter/nft_ct.c"]}],"references":["https://git.kernel.org/stable/c/c458fc1c278a65ad5381083121d39a479973ebed","https://git.kernel.org/stable/c/c581e5c8f2b59158f62efe61c1a3dc36189081ff","https://git.kernel.org/stable/c/f16fe84879a5280f05ebbcea593a189ba0f3e79a","https://git.kernel.org/stable/c/070abdf1b04325b21a20a2a0c39a2208af107275","https://git.kernel.org/stable/c/aa7cfa16f98f8ec3e6d47c34e1a8c1ae4b9b8b77","https://git.kernel.org/stable/c/b42aca3660dc2627a29a38131597ca610dc451f9","https://git.kernel.org/stable/c/d0983b48c10d1509fd795c155f8b1e832e1369ff","https://git.kernel.org/stable/c/f8dca15a1b190787bbd03285304b569631160eda","https://cert-portal.siemens.com/productcert/html/ssa-082556.html","https://cert-portal.siemens.com/productcert/html/ssa-019113.html","https://cert-portal.siemens.com/productcert/html/ssa-457936.html"],"weaknesses":["CWE-416"],"ingestedAt":"2026-10-29T20:11:40.391Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/31xxx/CVE-2026-31665.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-31665","state":"PUBLISHED","datePublished":"2026-04-24T14:45:14.613Z","dateUpdated":"2026-10-19T18:56:02.639Z","assignerShortName":"Linux","assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateReserved":"2026-03-09T15:48:24.129Z"},"containers":{"cna":{"title":"netfilter: nft_ct: fix use-after-free in timeout object destroy","descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nnetfilter: nft_ct: fix use-after-free in timeout object destroy\n\nnft_ct_timeout_obj_destroy() frees the timeout object with kfree()\nimmediately after nf_ct_untimeout(), without waiting for an RCU grace\nperiod. Concurrent packet processing on other CPUs may still hold\nRCU-protected references to the timeout object obtained via\nrcu_dereference() in nf_ct_timeout_data().\n\nAdd an rcu_head to struct nf_ct_timeout and use kfree_rcu() to defer\nfreeing until after an RCU grace period, matching the approach already\nused in nfnetlink_cttimeout.c.\n\nKASAN report:\n BUG: KASAN: slab-use-after-free in nf_conntrack_tcp_packet+0x1381/0x29d0\n Read of size 4 at addr ffff8881035fe19c by task exploit/80\n\n Call Trace:\n  nf_conntrack_tcp_packet+0x1381/0x29d0\n  nf_conntrack_in+0x612/0x8b0\n  nf_hook_slow+0x70/0x100\n  __ip_local_out+0x1b2/0x210\n  tcp_sendmsg_locked+0x722/0x1580\n  __sys_sendto+0x2d8/0x320\n\n Allocated by task 75:\n  nft_ct_timeout_obj_init+0xf6/0x290\n  nft_obj_init+0x107/0x1b0\n  nf_tables_newobj+0x680/0x9c0\n  nfnetlink_rcv_batch+0xc29/0xe00\n\n Freed by task 26:\n  nft_obj_destroy+0x3f/0xa0\n  nf_tables_trans_destroy_work+0x51c/0x5c0\n  process_one_work+0x2c4/0x5a0"}],"affected":[{"vendor":"Linux","product":"Linux","defaultStatus":"unaffected","versions":[{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"c458fc1c278a65ad5381083121d39a479973ebed","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"c581e5c8f2b59158f62efe61c1a3dc36189081ff","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"f16fe84879a5280f05ebbcea593a189ba0f3e79a","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"070abdf1b04325b21a20a2a0c39a2208af107275","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"aa7cfa16f98f8ec3e6d47c34e1a8c1ae4b9b8b77","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"b42aca3660dc2627a29a38131597ca610dc451f9","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"d0983b48c10d1509fd795c155f8b1e832e1369ff","versionType":"git"},{"version":"7e0b2b57f01d183e1c84114f1f2287737358d748","status":"affected","lessThan":"f8dca15a1b190787bbd03285304b569631160eda","versionType":"git"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/netfilter/nf_conntrack_timeout.h","net/netfilter/nft_ct.c"]},{"vendor":"Linux","product":"Linux","defaultStatus":"affected","versions":[{"version":"4.19","status":"affected"},{"version":"0","status":"unaffected","lessThan":"4.19","versionType":"semver"},{"version":"5.10.253","status":"unaffected","lessThanOrEqual":"5.10.*","versionType":"semver"},{"version":"5.15.203","status":"unaffected","lessThanOrEqual":"5.15.*","versionType":"semver"},{"version":"6.1.169","status":"unaffected","lessThanOrEqual":"6.1.*","versionType":"semver"},{"version":"6.6.135","status":"unaffected","lessThanOrEqual":"6.6.*","versionType":"semver"},{"version":"6.12.82","status":"unaffected","lessThanOrEqual":"6.12.*","versionType":"semver"},{"version":"6.18.23","status":"unaffected","lessThanOrEqual":"6.18.*","versionType":"semver"},{"version":"6.19.13","status":"unaffected","lessThanOrEqual":"6.19.*","versionType":"semver"},{"version":"7.0","status":"unaffected","lessThanOrEqual":"*","versionType":"original_commit_for_fix"}],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","programFiles":["include/net/netfilter/nf_conntrack_timeout.h","net/netfilter/nft_ct.c"]}],"references":[{"url":"https://git.kernel.org/stable/c/c458fc1c278a65ad5381083121d39a479973ebed"},{"url":"https://git.kernel.org/stable/c/c581e5c8f2b59158f62efe61c1a3dc36189081ff"},{"url":"https://git.kernel.org/stable/c/f16fe84879a5280f05ebbcea593a189ba0f3e79a"},{"url":"https://git.kernel.org/stable/c/070abdf1b04325b21a20a2a0c39a2208af107275"},{"url":"https://git.kernel.org/stable/c/aa7cfa16f98f8ec3e6d47c34e1a8c1ae4b9b8b77"},{"url":"https://git.kernel.org/stable/c/b42aca3660dc2627a29a38131597ca610dc451f9"},{"url":"https://git.kernel.org/stable/c/d0983b48c10d1509fd795c155f8b1e832e1369ff"},{"url":"https://git.kernel.org/stable/c/f8dca15a1b190787bbd03285304b569631160eda"}],"metrics":[{"cvssV3_1":{"version":"3.1","vectorString":"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H","baseScore":7.8,"baseSeverity":"HIGH"},"scenarios":[{"lang":"en","value":"AV:L - The vulnerable timeout object is created and destroyed through nftables netlink operations, and the stale pointer is exercised by local packet/syscall activity such as sendto through conntrack. Netfilter/nftables control-plane access is a local attack surface, not a remotely unauthenticated one.\nAC:L - The attacker can create the timeout object, attach it to conntrack state, delete it, and generate concurrent packet processing themselves. The UAF race is between attacker-controlled netlink teardown and attacker-controlled traffic, with no external condition required.\nPR:L - nfnetlink requires CAP_NET_ADMIN, but this is checked against the network namespace user_ns, so an unprivileged user can reach it via user and network namespaces on common configurations. This is therefore low privileges rather than real init-namespace root.\nUI:N - No victim interaction is required once the attacker has local execution. The attacker can perform the nftables operations and packet generation directly.\nS:U - The vulnerability is in the kernel netfilter/conntrack subsystem and impacts the same kernel security authority. It does not cross a VM, hypervisor, or separate authorization boundary.\nC:H - This is a use-after-free of an RCU-protected conntrack timeout object during packet processing. A kernel UAF can be shaped through heap reuse and is defensibly treated as enabling high confidentiality impact.\nI:H - Use-after-free in kernel heap memory can be leveraged through heap spraying and object replacement toward memory corruption or control-flow manipulation. Under the required overestimation rule, integrity impact is high.\nA:H - The fix commit includes a KASAN slab-use-after-free report in nf_conntrack_tcp_packet, and such UAFs can crash or destabilize the kernel. Repeated local triggering makes high availability impact appropriate."}]}],"providerMetadata":{"shortName":"Linux","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","dateUpdated":"2026-08-05T12:24:15.035Z"},"cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"5.10.253"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"5.15.203"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.1.169"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.6.135"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.12.82"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.18.23"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"6.19.13"},{"vulnerable":true,"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionStartIncluding":"4.19","versionEndExcluding":"7.0"}]}]}],"x_generator":{"engine":"bippy-1.2.0"}},"adp":[{"affected":[{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.6","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.5","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.7","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.6","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.5","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.7","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.6","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.5","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.7","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.6","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.5","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.7","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIPLUS S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.6","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIPLUS S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.5","status":"affected","lessThan":"*","versionType":"custom"}]},{"vendor":"Siemens","product":"SIPLUS S7-1500 CPU 1518-4 PN/DP MFP","defaultStatus":"unknown","versions":[{"version":"V3.1.7","status":"affected","lessThan":"*","versionType":"custom"}]}],"references":[{"url":"https://cert-portal.siemens.com/productcert/html/ssa-082556.html"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-019113.html"},{"url":"https://cert-portal.siemens.com/productcert/html/ssa-457936.html"}],"providerMetadata":{"shortName":"siemens-SADP","orgId":"0b142b55-0307-4c5a-b3c9-f314f3fb7c5e","dateUpdated":"2026-10-15T01:17:36.166Z"},"x_adpType":"supplier"},{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"id":"CVE-2026-31665","role":"CISA Coordinator","options":[{"Exploitation":"none"},{"Automatable":"no"},{"Technical Impact":"total"}],"version":"2.0.3","timestamp":"2026-10-16T15:11:49.929083Z"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-416","lang":"en","type":"CWE","description":"CWE-416 Use After Free"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-19T18:56:02.639Z"}}]}}}