Linux: Use After Free
CVE-2026-31669 is a critical-severity use after free vulnerability in Linux, with a CVSS 3.1 base score of 9.8 out of 10. It can be exploited remotely over the network by an unauthenticated attacker, without any action from a user. The record lists versions f6e1f25fa5e733570f6d6fe37a4dfed2a0deba47, fb1f54b7d16f393b8b65d328410f78b4beea8fcc, 3fd6547f5b8ac99687be6d937a0321efda760597 as the first without the flaw, so updating Linux to one of those releases or later removes the exposure. There is no confirmed exploitation so far. EPSS estimates a 0.47% chance of exploitation within 30 days, which is low compared with other CVEs.
Critical severity: a successful attack would have severe impact.
What to do
- Update Linux to f6e1f25fa5e733570f6d6fe37a4dfed2a0deba47 or fb1f54b7d16f393b8b65d328410f78b4beea8fcc or 3fd6547f5b8ac99687be6d937a0321efda760597 or eb9c6aeb512f877cf397deb1e4526f646c70e4a7, whichever matches your release line, or a later version.
- Update Linux Kernel to 5.15.203 or 6.1.169 or 6.6.135 or 6.12.82, whichever matches your release line, or a later version.
- Until you can update, restrict network access to the affected service so it is not reachable from untrusted networks.
Affected products and versions
| Vendor | Product | Affected versions | Fixed in |
|---|---|---|---|
| Linux | Linux | b19bc2945b40b9fd38e835700907ffe8534ef0de up to, but not including, f6e1f25fa5e733570f6d6fe37a4dfed2a0deba47; b19bc2945b40b9fd38e835700907ffe8534ef0de up to, but not including, fb1f54b7d16f393b8b65d328410f78b4beea8fcc; b19bc2945b40b9fd38e835700907ffe8534ef0de up to, but not including, 3fd6547f5b8ac99687be6d937a0321efda760597; b19bc2945b40b9fd38e835700907ffe8534ef0de up to, but not including, eb9c6aeb512f877cf397deb1e4526f646c70e4a7; b19bc2945b40b9fd38e835700907ffe8534ef0de up to, but not including, 15fa9ead4d5e6b6b9c794e84144146c917f2cb62; b19bc2945b40b9fd38e835700907ffe8534ef0de up to, but not including, b313e9037d98c13938740e5ebda7852929366dff; b19bc2945b40b9fd38e835700907ffe8534ef0de up to, but not including, 9b55b253907e7431210483519c5ad711a37dafa1; 5.12 | f6e1f25fa5e733570f6d6fe37a4dfed2a0deba47, fb1f54b7d16f393b8b65d328410f78b4beea8fcc, 3fd6547f5b8ac99687be6d937a0321efda760597, eb9c6aeb512f877cf397deb1e4526f646c70e4a7, 15fa9ead4d5e6b6b9c794e84144146c917f2cb62, b313e9037d98c13938740e5ebda7852929366dff |
| Siemens | SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AB0) | V3.1.6 and later; V3.1.5 and later; V3.1.7 and later | Not stated |
| Siemens | SIMATIC S7-1500 CPU 1518-4 PN/DP MFP (6ES7518-4AX00-1AC0) | V3.1.6 and later; V3.1.5 and later; V3.1.7 and later | Not stated |
| Siemens | SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AB0) | V3.1.6 and later; V3.1.5 and later; V3.1.7 and later | Not stated |
| Siemens | SIMATIC S7-1500 CPU 1518F-4 PN/DP MFP (6ES7518-4FX00-1AC0) | V3.1.6 and later; V3.1.5 and later; V3.1.7 and later | Not stated |
| Siemens | SIPLUS S7-1500 CPU 1518-4 PN/DP MFP (6AG1518-4AX00-4AC0) | V3.1.6 and later; V3.1.5 and later; V3.1.7 and later | Not stated |
| Linux | Linux Kernel | 5.12.1 up to, but not including, 5.15.203; 5.16 up to, but not including, 6.1.169; 6.2 up to, but not including, 6.6.135; 6.7 up to, but not including, 6.12.82; 6.13 up to, but not including, 6.18.23; 6.19 up to, but not including, 6.19.13; 5.12; 7.0 | 5.15.203, 6.1.169, 6.6.135, 6.12.82, 6.18.23, 6.19.13 |
Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.
How the severity score breaks down
- Attack vector
- NetworkCan be exploited remotely over a network, including the internet.
- Attack complexity
- LowNo special conditions are needed; the attack works reliably.
- Privileges required
- NoneNo account or login is needed.
- User interaction
- NoneNo action by a victim is required.
- Scope
- UnchangedImpact stays within the vulnerable component.
- Confidentiality
- HighAll data handled by the component can be read.
- Integrity
- HighData or code can be modified at will.
- Availability
- HighThe component can be taken down completely.
Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Scored by CNA.
Official description
In the Linux kernel, the following vulnerability has been resolved: mptcp: fix slab-use-after-free in __inet_lookup_established The ehash table lookups are lockless and rely on SLAB_TYPESAFE_BY_RCU to guarantee socket memory stability during RCU read-side critical sections. Both tcp_prot and tcpv6_prot have their slab caches created with this flag via proto_register(). However, MPTCP's mptcp_subflow_init() copies tcpv6_prot into tcpv6_prot_override during inet_init() (fs_initcall, level 5), before inet6_init() (module_init/device_initcall, level 6) has called proto_register(&tcpv6_prot). At that point, tcpv6_prot.slab is still NULL, so tcpv6_prot_override.slab remains NULL permanently. This causes MPTCP v6 subflow child sockets to be allocated via kmalloc (falling into kmalloc-4k) instead of the TCPv6 slab cache. The kmalloc-4k cache lacks SLAB_TYPESAFE_BY_RCU, so when these sockets are freed without SOCK_RCU_FREE (which is cleared for child sockets by design), the memory can be immediately reused. Concurrent ehash lookups under rcu_read_lock can then access freed memory, triggering a slab-use-after-free in __inet_lookup_established. Fix this by splitting the IPv6-specific initialization out of mptcp_subflow_init() into a new mptcp_subflow_v6_init(), called from mptcp_proto_v6_init() before protocol registration. This ensures tcpv6_prot_override.slab correctly inherits the SLAB_TYPESAFE_BY_RCU slab cache.
Source: the CVE record as published by its numbering authority, via NVD and CVE.org.
The underlying weakness: Use After Free
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory belongs to the code that operates on the new pointer.
How developers prevent this class of flaw
- Choose a language that provides automatic memory management.
- When freeing pointers, be sure to set them to NULL once they are freed. However, the utilization of multiple or complex data structures may lower the usefulness of this strategy.
Timeline
- CVE record published.
- CISA published its SSVC assessment (exploitation: none, automatable: yes, technical impact: total).
- Record last changed materially (score, affected products, status or references).
References
Patches and release notes
- git.kernel.org/stable/c/15fa9ead4d5e6b6b9c794e84144146c917f2cb62
- git.kernel.org/stable/c/3fd6547f5b8ac99687be6d937a0321efda760597
- git.kernel.org/stable/c/9b55b253907e7431210483519c5ad711a37dafa1
- git.kernel.org/stable/c/b313e9037d98c13938740e5ebda7852929366dff
- git.kernel.org/stable/c/eb9c6aeb512f877cf397deb1e4526f646c70e4a7
- git.kernel.org/stable/c/f6e1f25fa5e733570f6d6fe37a4dfed2a0deba47
- git.kernel.org/stable/c/fb1f54b7d16f393b8b65d328410f78b4beea8fcc
Other references
Recent Use After Free vulnerabilities
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
- 7.8 High severity
Spotted an error? Tell us.