CVE-2026-98490 (GCVE-0-2026-98490)
Vulnerability from cvelistv5
Published
2026-10-18 15:16
Modified
2026-10-30 12:38
Severity ?
Summary
In the Linux kernel, the following vulnerability has been resolved: net: openvswitch: conntrack: fix helper UAF due to extensions realloc While calling the helpers, a raw pointer to the extensions area is wired into expectations list: -> nf_ct_helper() -> helper->help() -> nf_ct_expect_related_report() -> nf_ct_expect_insert() -> hlist_add_head_rcu(&exp->lnode, &master_help->expectations) In case the connection is not confirmed yet, more extensions can be added afterwards with *_ext_add() calls reallocating the extension space and leaving the now invalid pointer in the expectations list that is later accessed while removing the expectation. Make sure that helpers are called at the end after all the other extensions are already added. Note that the helper rejection now leaves the mark and labels set, but that's not different from how the NAT was handled before or how the mark and the labels were handled on confirmation failure. And there are no atomicity guarantees provided by the API anyway.
Impacted products
Vendor Product Version
Linux Linux Version: cae3a2627520c3795b54533c5328b77af3405dbe
Version: cae3a2627520c3795b54533c5328b77af3405dbe
Version: cae3a2627520c3795b54533c5328b77af3405dbe
Version: cae3a2627520c3795b54533c5328b77af3405dbe
Version: cae3a2627520c3795b54533c5328b77af3405dbe
Version: cae3a2627520c3795b54533c5328b77af3405dbe
Version: cae3a2627520c3795b54533c5328b77af3405dbe
Version: cae3a2627520c3795b54533c5328b77af3405dbe
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/openvswitch/conntrack.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "f53d13a286fb275bda0efdf445b8a1e4dfcb717b",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            },
            {
              "lessThan": "84d47a83b7b717576de0defab46b8823a22853b0",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            },
            {
              "lessThan": "9f308197395c1a524b736e401cbc8a2ed7d246c9",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            },
            {
              "lessThan": "18866dc1f525f9ee4de7709529d1ae1af8d8e8be",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            },
            {
              "lessThan": "afcf362625190c5260530b1d6c7daa98831f6b83",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            },
            {
              "lessThan": "5f23080a625dd7855ab91485c8d691a54a1979f0",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            },
            {
              "lessThan": "e02a83bb0b7a203f6a22f55ad5f426765560f811",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            },
            {
              "lessThan": "1a4151e6be57b098b7a5ebfbde58585e83200cdc",
              "status": "affected",
              "version": "cae3a2627520c3795b54533c5328b77af3405dbe",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/openvswitch/conntrack.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.3"
            },
            {
              "lessThan": "4.3",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.10.*",
              "status": "unaffected",
              "version": "5.10.273",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "5.15.*",
              "status": "unaffected",
              "version": "5.15.224",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.191",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.160",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.112",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.55",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.9",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.10.273",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "5.15.224",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.191",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.160",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.112",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.55",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.9",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3",
                  "versionStartIncluding": "4.3",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "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  -\u003e nf_ct_helper()\n   -\u003e helper-\u003ehelp()\n    -\u003e nf_ct_expect_related_report()\n     -\u003e nf_ct_expect_insert()\n      -\u003e hlist_add_head_rcu(\u0026exp-\u003elnode, \u0026master_help-\u003eexpectations)\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\u0027s 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": {
            "baseScore": 9.8,
            "baseSeverity": "CRITICAL",
            "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:N - A remote UDP TFTP RRQ/WRQ received by an OVS vport follows netdev_frame_hook()-\u003eovs_dp_process_packet()-\u003eovs_ct_execute(); a matching committing CT action with helper=tftp lets tftp_help() create the expectation before vulnerable ovs_ct_commit() grows ct-\u003eext.\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-\u003eext; 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-\u003eext block, exp-\u003elnode.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-\u003elnode.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."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-30T12:38:17.458Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/f53d13a286fb275bda0efdf445b8a1e4dfcb717b"
        },
        {
          "url": "https://git.kernel.org/stable/c/84d47a83b7b717576de0defab46b8823a22853b0"
        },
        {
          "url": "https://git.kernel.org/stable/c/9f308197395c1a524b736e401cbc8a2ed7d246c9"
        },
        {
          "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"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98490",
    "datePublished": "2026-10-18T15:16:19.215Z",
    "dateReserved": "2026-09-25T10:25:14.352Z",
    "dateUpdated": "2026-10-30T12:38:17.458Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…