Linux: net: openvswitch: conntrack: avoid modifying shared unconfirmed ct entry
What fixes it
- 37e3c878b183a115f9a114067f9ef3b408ad27fbLinuxCVE List
- 707c2dc77891a874f4e8c52c285a511079164ec8LinuxCVE List
- 55e5256adf3940e71802e2f749cacf81518726b0LinuxCVE List
- 457e0df1b5711fbeb7ba1b6bfd826f5ef30e7e55LinuxCVE List
- 26b2bd70d22457556e2fa01cbf1192cb1a94d619LinuxCVE 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:
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:
- The first clone wants to commit and runs the helpers wiring up
the extension pointer into the expectation list.
- Then it looses the confirmation keeping the entry unconfirmed.
- 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.
Text from CVE List
Affected versions 18
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before e0fa5ea434b7e8467ef3adc64e3858b1ca2a642dCVE List
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before 37e3c878b183a115f9a114067f9ef3b408ad27fbCVE List
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before 707c2dc77891a874f4e8c52c285a511079164ec8CVE List
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before de41ee24f77b0fc45397db3e277cae2adbd43dfeCVE List
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before 55e5256adf3940e71802e2f749cacf81518726b0CVE List
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before e2829ae5459ddb5fce526b2e84697edf6c0c3cefCVE List
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before 457e0df1b5711fbeb7ba1b6bfd826f5ef30e7e55CVE List
- Linuxaffected: cae3a2627520c3795b54533c5328b77af3405dbe before 26b2bd70d22457556e2fa01cbf1192cb1a94d619CVE List
- Linuxaffected: 4.3CVE List
- Linuxunaffected: all versions before 4.3CVE List
- Linuxunaffected: 5.10.271 through 5.10.*CVE List
- Linuxunaffected: 5.15.222 through 5.15.*CVE List
- Linuxunaffected: 6.1.189 through 6.1.*CVE List
- Linuxunaffected: 6.6.158 through 6.6.*CVE List
- Linuxunaffected: 6.12.112 through 6.12.*CVE List
- Linuxunaffected: 6.18.55 through 6.18.*CVE List
- Linuxunaffected: 7.2.9 through 7.2.*CVE List
- Linuxunaffected: 7.3CVE List
References 8
- git.kernel.org/stable/c/e0fa5ea434b7e8467ef3adc64e3858b1ca2a642dReferencevia CVE List
- git.kernel.org/stable/c/37e3c878b183a115f9a114067f9ef3b408ad27fbReferencevia CVE List
- git.kernel.org/stable/c/707c2dc77891a874f4e8c52c285a511079164ec8Referencevia CVE List
- git.kernel.org/stable/c/de41ee24f77b0fc45397db3e277cae2adbd43dfeReferencevia CVE List
- git.kernel.org/stable/c/55e5256adf3940e71802e2f749cacf81518726b0Referencevia CVE List
- git.kernel.org/stable/c/e2829ae5459ddb5fce526b2e84697edf6c0c3cefReferencevia CVE List
- git.kernel.org/stable/c/457e0df1b5711fbeb7ba1b6bfd826f5ef30e7e55Referencevia CVE List
- git.kernel.org/stable/c/26b2bd70d22457556e2fa01cbf1192cb1a94d619Referencevia CVE List