net: openvswitch: conntrack: avoid modifying shared unconfirmed ct entry
- 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.271, 5.15.222, 6.1.189, 6.6.158, 6.12.112, 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: net: openvswitch: conntrack: avoid modifying shared unconfirmed ct entry In a case where skb with an unconfirmed ct entry gets cloned, we may end up committing both but with different sets of extensions. The series of events: 1. The first clone wants to commit and runs the helpers wiring up the extension pointer into the expectation list. 2. Then it looses the confirmation keeping the entry unconfirmed. 3. Second clone now wants to commit labels and adds the new extension for that breaking the pointer in the expectation list causing UAF on the destruction path later. While this is possible to trigger, there should be no practical network pipeline where committing both clones without modifications into the same zone is needed. So, let's just reset the entry in case for some reason we got an skb with a shared one during commit. This doesn't affect any known use cases, but avoids any potential problems with sharing and modification of the unconfirmed ct entry. The fixes tag points to the introduction of helpers, since that's the main UAF trigger for the sharing.
Timeline
- CVE published
- Record last updated
Affected versions
- Linux Linux
From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in e0fa5ea434b7e8467ef3adc64e3858b1ca2a642d; From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in 37e3c878b183a115f9a114067f9ef3b408ad27fb; From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in 707c2dc77891a874f4e8c52c285a511079164ec8; From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in de41ee24f77b0fc45397db3e277cae2adbd43dfe; From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in 55e5256adf3940e71802e2f749cacf81518726b0; From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in e2829ae5459ddb5fce526b2e84697edf6c0c3cef; From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in 457e0df1b5711fbeb7ba1b6bfd826f5ef30e7e55; From cae3a2627520c3795b54533c5328b77af3405dbe · fixed in 26b2bd70d22457556e2fa01cbf1192cb1a94d619
- Linux Linux
4.3
- KernelLinux
From 4.3.0 · fixed in 5.10.271; From 5.11.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.112; From 6.13.0 · fixed in 6.18.55; From 6.19.0 · fixed in 7.2.9
References 8
git.kernel.org
- stable/c/e0fa5ea434b7e8467ef3adc64e3858b1ca2a642d
- stable/c/37e3c878b183a115f9a114067f9ef3b408ad27fb
- stable/c/707c2dc77891a874f4e8c52c285a511079164ec8
- stable/c/de41ee24f77b0fc45397db3e277cae2adbd43dfe
- stable/c/55e5256adf3940e71802e2f749cacf81518726b0
- stable/c/e2829ae5459ddb5fce526b2e84697edf6c0c3cef
- stable/c/457e0df1b5711fbeb7ba1b6bfd826f5ef30e7e55
- stable/c/26b2bd70d22457556e2fa01cbf1192cb1a94d619