Skip to content
Heist/ feed
Back to feed
HighFix available

net: dsa: mv88e6xxx: bound the policy rule dump by the caller's buffer size

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: net: dsa: mv88e6xxx: bound the policy rule dump by the caller's buffer size mv88e6xxx_get_rxnfc() uses rxnfc->rule_cnt as the write index while dumping the policy IDR, clobbering the input value before it has been looked at. That input is the number of 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 policy 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. Count into a local so the caller's limit survives the walk, and stop with -EMSGSIZE once it is reached.

Products
Kernel
Affected versions
Not specified
Fixed versions
5.10.271, 5.15.222, 6.1.189, 6.12.111, 6.18.53, 6.6.158, 7.2.7
CVEs
CVE-2026-98027
Confirmed fixed CVEs
Not specified
Updated in this feed
5 Nov 2026, 03:12 UTC · Revision 1

Source evidence

net: dsa: mv88e6xxx: bound the policy rule dump by the caller's buffer size

core-osv · Original source

Published 25 Sept 2026, 10:23 UTC

In the Linux kernel, the following vulnerability has been resolved: net: dsa: mv88e6xxx: bound the policy rule dump by the caller's buffer size mv88e6xxx_get_rxnfc() uses rxnfc->rule_cnt as the write index while dumping the policy IDR, clobbering the input value before it has been looked at. That input is the number of 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 policy 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. Count into a local so the caller's limit survives the walk, and stop with -EMSGSIZE once it is reached.

osv:CVE-2026-98027

Kernel

Fixed versions: 5.10.271, 5.15.222, 6.1.189, 6.6.158, 6.12.111, 6.18.53, 7.2.7

Complete source record
{
  "id": "882670ce161eaad5f705949d60333d6d59b6b16b95d5f1044c5b5342ed0ed961",
  "url": "https://osv.dev/vulnerability/CVE-2026-98027",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "net: dsa: mv88e6xxx: bound the policy rule dump by the caller's buffer size",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: net: dsa: mv88e6xxx: bound the policy rule dump by the caller's buffer size mv88e6xxx_get_rxnfc() uses rxnfc->rule_cnt as the write index while dumping the policy IDR, clobbering the input value before it has been looked at. That input is the number of 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 policy 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. Count into a local so the caller's limit survives the walk, and stop with -EMSGSIZE once it is reached.",
    "evidence": "osv:CVE-2026-98027",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "5.10.271",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "5.15.222",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.1.189",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.6.158",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.12.111",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.53",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.2.7",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-98027",
      "aliases": [
        "CVE-2026-98027"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "da7dc87553046a43be1620a783ce3d9f6583d322"
                },
                {
                  "fixed": "7e4bfc5f0b66feb22cba821303fc25ca22cd0887"
                },
                {
                  "fixed": "01124cd2cf4b71755b1130ac82d78dcfbd5d69e3"
                },
                {
                  "fixed": "609c4378f212cf580aae02250f1146caf63d873f"
                },
                {
                  "fixed": "c5b5c52b6524c9fb50def2260baac745c095ec3a"
                },
                {
                  "fixed": "44cd4674d9aa5bdf793b8a8b481c9e8536ed6070"
                },
                {
                  "fixed": "7a683c2b062810bca203e41866389daf387c235b"
                },
                {
                  "fixed": "cda5ac8fe8ac8e80b1703ebb8c4250726fc19739"
                },
                {
                  "fixed": "b1fffc273112e7284c5b705e186b43b5770cd3d5"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98027.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.4.0"
                },
                {
                  "fixed": "5.10.271"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.11.0"
                },
                {
                  "fixed": "5.15.222"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "5.16.0"
                },
                {
                  "fixed": "6.1.189"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.2.0"
                },
                {
                  "fixed": "6.6.158"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.7.0"
                },
                {
                  "fixed": "6.12.111"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.53"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.2.7"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98027.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:41.604583376Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/01124cd2cf4b71755b1130ac82d78dcfbd5d69e3",
        "https://git.kernel.org/stable/c/44cd4674d9aa5bdf793b8a8b481c9e8536ed6070",
        "https://git.kernel.org/stable/c/609c4378f212cf580aae02250f1146caf63d873f",
        "https://git.kernel.org/stable/c/7a683c2b062810bca203e41866389daf387c235b",
        "https://git.kernel.org/stable/c/7e4bfc5f0b66feb22cba821303fc25ca22cd0887",
        "https://git.kernel.org/stable/c/b1fffc273112e7284c5b705e186b43b5770cd3d5",
        "https://git.kernel.org/stable/c/c5b5c52b6524c9fb50def2260baac745c095ec3a",
        "https://git.kernel.org/stable/c/cda5ac8fe8ac8e80b1703ebb8c4250726fc19739",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98027.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-98027",
        "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git"
      ],
      "provider_metadata": {
        "cna_assigner": "Linux",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98027.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-98027",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 509554,
  "published_at": "2026-09-25T10:23:45.123+00:00"
}