{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-98490",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2026-09-25T10:25:14.352Z",
        "datePublished": "2026-10-18T15:16:19.215Z",
        "dateUpdated": "2026-10-24T14:09:05.058Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-10-24T14:09:05.058Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nnet: openvswitch: conntrack: fix helper UAF due to extensions realloc\n\nWhile calling the helpers, a raw pointer to the extensions area is\nwired into expectations list:\n\n  -> nf_ct_helper()\n   -> helper->help()\n    -> nf_ct_expect_related_report()\n     -> nf_ct_expect_insert()\n      -> hlist_add_head_rcu(&exp->lnode, &master_help->expectations)\n\nIn case the connection is not confirmed yet, more extensions can be\nadded afterwards with *_ext_add() calls reallocating the extension\nspace and leaving the now invalid pointer in the expectations list\nthat is later accessed while removing the expectation.\n\nMake sure that helpers are called at the end after all the other\nextensions are already added.\n\nNote that the helper rejection now leaves the mark and labels set,\nbut that's not different from how the NAT was handled before or how\nthe mark and the labels were handled on confirmation failure.  And\nthere are no atomicity guarantees provided by the API anyway."
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 9.8,
                        "baseSeverity": "CRITICAL"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:N - A remote UDP TFTP RRQ/WRQ received by an OVS vport follows netdev_frame_hook()->ovs_dp_process_packet()->ovs_ct_execute(); a matching committing CT action with helper=tftp lets tftp_help() create the expectation before vulnerable ovs_ct_commit() grows ct->ext.\nAC:L - In the affected helper/NAT/timeout action, the sender can issue one RRQ/WRQ to create the expectation and a duplicate to make __nf_ct_expect_check() unlink it after nf_conn_act_ct_ext_add() moves ct->ext; no race or separate actor is needed.\nPR:N - The netdev_frame_hook() packet path has no capability or authentication check for the peer; GENL_UNS_ADMIN_PERM gates only prior installation of the OVS action, not the remote sender whose TFTP message triggers tftp_help().\nUI:N - The remote peer creates and then unlinks the stale expectation by sending protocol messages; no victim must mount, open, approve, or otherwise interact with anything.\nS:U - The stale expectation linkage corrupts memory within the same host kernel executing ovs_ct_commit(); this is ordinary kernel compromise, not a VM, IOMMU, or other security-authority boundary crossing.\nC:H - After nf_ct_ext_add() frees the old ct->ext block, exp->lnode.pprev retains an address in that allocation; reclaiming the freed slab permits UAF exploitation against kernel heap contents and arbitrary disclosure.\nI:H - When the expectation is removed, __hlist_del() executes WRITE_ONCE(*pprev, next) through stale exp->lnode.pprev into freed or reused slab memory, providing exploitable kernel heap corruption and control-flow potential.\nA:H - A duplicate expectation or nf_ct_remove_expectations() activates the dangling list pointer, so the resulting invalid write can corrupt the heap and cause a kernel oops or panic."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/openvswitch/conntrack.c"
                    ],
                    "versions": [
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "18866dc1f525f9ee4de7709529d1ae1af8d8e8be",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "afcf362625190c5260530b1d6c7daa98831f6b83",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "5f23080a625dd7855ab91485c8d691a54a1979f0",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "e02a83bb0b7a203f6a22f55ad5f426765560f811",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
                            "lessThan": "1a4151e6be57b098b7a5ebfbde58585e83200cdc",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/openvswitch/conntrack.c"
                    ],
                    "versions": [
                        {
                            "version": "4.3",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "4.3",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.160",
                            "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": "6.6.160"
                                },
                                {
                                    "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/18866dc1f525f9ee4de7709529d1ae1af8d8e8be"
                },
                {
                    "url": "https://git.kernel.org/stable/c/afcf362625190c5260530b1d6c7daa98831f6b83"
                },
                {
                    "url": "https://git.kernel.org/stable/c/5f23080a625dd7855ab91485c8d691a54a1979f0"
                },
                {
                    "url": "https://git.kernel.org/stable/c/e02a83bb0b7a203f6a22f55ad5f426765560f811"
                },
                {
                    "url": "https://git.kernel.org/stable/c/1a4151e6be57b098b7a5ebfbde58585e83200cdc"
                }
            ],
            "title": "net: openvswitch: conntrack: fix helper UAF due to extensions realloc",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}