{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-98491",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2026-09-25T10:25:14.353Z",
        "datePublished": "2026-10-18T15:16:20.069Z",
        "dateUpdated": "2026-10-24T14:09:06.117Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-10-24T14:09:06.117Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: openvswitch: conntrack: avoid modifying shared unconfirmed ct entry\n\nIn a case where skb with an unconfirmed ct entry gets cloned, we may\nend up committing both but with different sets of extensions.\n\nThe series of events:\n\n 1. The first clone wants to commit and runs the helpers wiring up\n    the extension pointer into the expectation list.\n 2. Then it looses the confirmation keeping the entry unconfirmed.\n 3. Second clone now wants to commit labels and adds the new extension\n    for that breaking the pointer in the expectation list causing\n    UAF on the destruction path later.\n\nWhile this is possible to trigger, there should be no practical\nnetwork pipeline where committing both clones without modifications\ninto the same zone is needed.  So, let's just reset the entry in case\nfor some reason we got an skb with a shared one during commit.  This\ndoesn't affect any known use cases, but avoids any potential problems\nwith sharing and modification of the unconfirmed ct entry.\n\nThe fixes tag points to the introduction of helpers, since that's the\nmain UAF trigger for the sharing."
                }
            ],
            "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 - Locally supplied OVS_PACKET_CMD_EXECUTE attributes traverse ovs_packet_cmd_execute()->ovs_execute_actions()->ovs_ct_execute()->ovs_ct_commit()->__ovs_ct_lookup(), the patched function. The required clone/CT action graph is locally configured; no routable protocol message alone creates it.\nAC:L - The attacker controls the packet clones, competing same-zone commits, helper payload, and label-setting commit; parallel repeated executes can make the helper-bearing clone lose confirmation and relocate the extension block. Both sides of the race and heap grooming are attacker-controlled.\nPR:L - dp_packet_genl_ops marks OVS_PACKET_CMD_EXECUTE with GENL_UNS_ADMIN_PERM, which genl_family_rcv_msg checks as CAP_NET_ADMIN in net->user_ns. An ordinary user can obtain that capability in a new user and network namespace, so init-namespace root is unnecessary.\nUI:N - After creating a private OVS datapath, the attacker’s own Netlink execute requests and injected packets drive the clone and commit sequence; no victim must configure, open, or approve anything.\nS:U - The stale nf_conn extension pointer and resulting writes affect the same host kernel that processes the attacker’s OVS actions; escalating from a user namespace into that kernel does not cross a CVSS security scope.\nC:H - nf_ct_ext_add() can krealloc and free the old block containing nf_conn_help while an expectation retains pointers into it. Reclaiming that block turns the teardown UAF into groomable kernel-object corruption that can support kernel-memory disclosure.\nI:H - nf_ct_remove_expectations() calls hlist_del_rcu(), whose __hlist_del() writes through exp->lnode.pprev into freed or reused extension memory. This is attacker-groomable kernel heap corruption capable of control-flow hijacking.\nA:H - The stale pprev write during expectation destruction can corrupt a reclaimed kernel object and cause an oops or panic, taking down the host kernel."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "include/net/netfilter/nf_conntrack.h",
                        "net/openvswitch/conntrack.c"
                    ],
                    "versions": [
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "e0fa5ea434b7e8467ef3adc64e3858b1ca2a642d",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "37e3c878b183a115f9a114067f9ef3b408ad27fb",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "707c2dc77891a874f4e8c52c285a511079164ec8",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "de41ee24f77b0fc45397db3e277cae2adbd43dfe",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "55e5256adf3940e71802e2f749cacf81518726b0",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "e2829ae5459ddb5fce526b2e84697edf6c0c3cef",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "457e0df1b5711fbeb7ba1b6bfd826f5ef30e7e55",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "26b2bd70d22457556e2fa01cbf1192cb1a94d619",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "include/net/netfilter/nf_conntrack.h",
                        "net/openvswitch/conntrack.c"
                    ],
                    "versions": [
                        {
                            "version": "4.3",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "4.3",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.10.271",
                            "lessThanOrEqual": "5.10.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.15.222",
                            "lessThanOrEqual": "5.15.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.189",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.158",
                            "lessThanOrEqual": "6.6.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.12.112",
                            "lessThanOrEqual": "6.12.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.18.55",
                            "lessThanOrEqual": "6.18.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.2.9",
                            "lessThanOrEqual": "7.2.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "7.3",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "5.10.271"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "5.15.222"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "6.1.189"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "6.6.158"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "6.12.112"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "6.18.55"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "7.2.9"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.3",
                                    "versionEndExcluding": "7.3"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/e0fa5ea434b7e8467ef3adc64e3858b1ca2a642d"
                },
                {
                    "url": "https://git.kernel.org/stable/c/37e3c878b183a115f9a114067f9ef3b408ad27fb"
                },
                {
                    "url": "https://git.kernel.org/stable/c/707c2dc77891a874f4e8c52c285a511079164ec8"
                },
                {
                    "url": "https://git.kernel.org/stable/c/de41ee24f77b0fc45397db3e277cae2adbd43dfe"
                },
                {
                    "url": "https://git.kernel.org/stable/c/55e5256adf3940e71802e2f749cacf81518726b0"
                },
                {
                    "url": "https://git.kernel.org/stable/c/e2829ae5459ddb5fce526b2e84697edf6c0c3cef"
                },
                {
                    "url": "https://git.kernel.org/stable/c/457e0df1b5711fbeb7ba1b6bfd826f5ef30e7e55"
                },
                {
                    "url": "https://git.kernel.org/stable/c/26b2bd70d22457556e2fa01cbf1192cb1a94d619"
                }
            ],
            "title": "net: openvswitch: conntrack: avoid modifying shared unconfirmed ct entry",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}