← Back to CVE Explorer

CVE-2026-98029

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: eth: nfp: bound the ntuple rule dump by the caller's buffer size nfp_net_get_fs_loc() dumps every entry of nn->fs.list into rule_locs[] without consulting cmd->rule_cnt, which is how many entries the caller had room for. ETHTOOL_GRXCLSRLALL requires no CAP_NET_ADMIN and the ioctl sizes the buffer from the rule_cnt userspace passes in, so once an admin has installed flow steering rules any user can ask for fewer slots than there are rules and run off the end of the allocation. A rule_cnt of 0 leaves the buffer pointer NULL and the walk dereferences it. Bail out with -EMSGSIZE when the buffer fills up, the way the other ntuple capable drivers do, and report how many locations were filled so a shrinking rule list does not leave the caller reading stale slots.

Severity
HIGH
CVSS score
7.0 (v3.1)
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-09-25 11:17:31.560000
Last modified
2026-10-19 10:17:56.877000
View original CVE JSON
{
  "id": "CVE-2026-98029",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-09-25T11:17:31.560",
  "lastModified": "2026-10-19T10:17:56.877",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\neth: nfp: bound the ntuple rule dump by the caller's buffer size\n\nnfp_net_get_fs_loc() dumps every entry of nn->fs.list into rule_locs[]\nwithout consulting cmd->rule_cnt, which is how many entries the caller\nhad room for.  ETHTOOL_GRXCLSRLALL requires no CAP_NET_ADMIN and the\nioctl sizes the buffer from the rule_cnt userspace passes in, so once an\nadmin has installed flow steering rules any user can ask for fewer slots\nthan there are rules and run off the end of the allocation.  A rule_cnt\nof 0 leaves the buffer pointer NULL and the walk dereferences it.\n\nBail out with -EMSGSIZE when the buffer fills up, the way the other\nntuple capable drivers do, and report how many locations were filled so\na shrinking rule list does not leave the caller reading stale slots."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "9eb03bb1c035ff6e2c3a34046419446588253dda",
              "lessThan": "82812583b9c69c241da6da4186f14e9df2516488",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9eb03bb1c035ff6e2c3a34046419446588253dda",
              "lessThan": "a7e023c63e855761c1426cee8d17c2bca32aa339",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9eb03bb1c035ff6e2c3a34046419446588253dda",
              "lessThan": "ecebfdaab72a504c10f4907bd00fc3b705ec3b12",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9eb03bb1c035ff6e2c3a34046419446588253dda",
              "lessThan": "f1986bf87b0709c95126fe196cf39e5b8c8453a1",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/net/ethernet/netronome/nfp/nfp_net_ethtool.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "6.8",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "6.8",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.111",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.53",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.7",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "lessThanOrEqual": "*",
              "versionType": "original_commit_for_fix",
              "status": "unaffected"
            }
          ]
        }
      ]
    }
  ],
  "metrics": {
    "cvssMetricV31": [
      {
        "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "type": "Secondary",
        "cvssData": {
          "version": "3.1",
          "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
          "baseScore": 7.0,
          "baseSeverity": "HIGH",
          "attackVector": "LOCAL",
          "attackComplexity": "HIGH",
          "privilegesRequired": "LOW",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "HIGH",
          "integrityImpact": "HIGH",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 1.0,
        "impactScore": 5.9
      }
    ]
  },
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/82812583b9c69c241da6da4186f14e9df2516488",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/a7e023c63e855761c1426cee8d17c2bca32aa339",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/ecebfdaab72a504c10f4907bd00fc3b705ec3b12",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/f1986bf87b0709c95126fe196cf39e5b8c8453a1",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}