Skip to content
Heist/ feed
Back to feed
HighFix available

net: bridge: mdb: restart port group walk after deletion

Type: advisorySources: OSV

In the Linux kernel, the following vulnerability has been resolved: net: bridge: mdb: restart port group walk after deletion br_mdb_flush_pgs() keeps a pointer-to-pointer cursor while walking mp->ports. br_multicast_del_pg() can re-enter the same MDB entry through br_multicast_sg_del_exclude_ports() and unlink other port groups. If the cursor points into one of those groups, the next iteration dereferences a stale cursor and can leave mp->ports pointing at freed memory. A following RTM_GETMDB exposes the dangling pointer: BUG: KASAN: slab-use-after-free in br_mdb_dump Read of size 8 br_mdb_dump rtnl_mdb_dump rtnl_dumpit netlink_dump Reset the cursor to mp->ports after every deletion. The deletion removes at least the selected group, so the restarted walk always makes progress.

Products
Kernel
Affected versions
Not specified
Fixed versions
6.12.112, 6.18.55, 7.2.9
CVEs
CVE-2026-98487
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 17:24 UTC · Revision 1

Source evidence

net: bridge: mdb: restart port group walk after deletion

core-osv · Original source

Published 18 Oct 2026, 15:16 UTC

In the Linux kernel, the following vulnerability has been resolved: net: bridge: mdb: restart port group walk after deletion br_mdb_flush_pgs() keeps a pointer-to-pointer cursor while walking mp->ports. br_multicast_del_pg() can re-enter the same MDB entry through br_multicast_sg_del_exclude_ports() and unlink other port groups. If the cursor points into one of those groups, the next iteration dereferences a stale cursor and can leave mp->ports pointing at freed memory. A following RTM_GETMDB exposes the dangling pointer: BUG: KASAN: slab-use-after-free in br_mdb_dump Read of size 8 br_mdb_dump rtnl_mdb_dump rtnl_dumpit netlink_dump Reset the cursor to mp->ports after every deletion. The deletion removes at least the selected group, so the restarted walk always makes progress.

osv:CVE-2026-98487

Kernel

Fixed versions: 6.12.112, 6.18.55, 7.2.9

Complete source record
{
  "id": "72bccb0aa3055773c364f473487a09da25cb6e6e6c138a8d4574a6da3ebc16fc",
  "url": "https://osv.dev/vulnerability/CVE-2026-98487",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "net: bridge: mdb: restart port group walk after deletion",
    "summary": "In the Linux kernel, the following vulnerability has been resolved: net: bridge: mdb: restart port group walk after deletion br_mdb_flush_pgs() keeps a pointer-to-pointer cursor while walking mp->ports. br_multicast_del_pg() can re-enter the same MDB entry through br_multicast_sg_del_exclude_ports() and unlink other port groups. If the cursor points into one of those groups, the next iteration dereferences a stale cursor and can leave mp->ports pointing at freed memory. A following RTM_GETMDB exposes the dangling pointer: BUG: KASAN: slab-use-after-free in br_mdb_dump Read of size 8 br_mdb_dump rtnl_mdb_dump rtnl_dumpit netlink_dump Reset the cursor to mp->ports after every deletion. The deletion removes at least the selected group, so the restarted walk always makes progress.",
    "evidence": "osv:CVE-2026-98487",
    "products": [
      {
        "name": {
          "value": "Kernel",
          "evidence": "/affected/1/package/name"
        },
        "prerequisites": [],
        "fixed_versions": [
          {
            "value": "6.12.112",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "6.18.55",
            "evidence": "/affected/1/ranges"
          },
          {
            "value": "7.2.9",
            "evidence": "/affected/1/ranges"
          }
        ],
        "affected_versions": []
      }
    ],
    "severity": "high",
    "structured": {
      "id": "CVE-2026-98487",
      "aliases": [
        "CVE-2026-98487"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:L/AC:L/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": "a6acb535afb2a3b688a7858f05b61f0433e480d5"
                },
                {
                  "fixed": "46ec55855c972504258c371677ac039ba20e5d12"
                },
                {
                  "fixed": "ab3c4a4c85f2e1e8d04b5c1770dea8412d21c7fe"
                },
                {
                  "fixed": "fe2a42789c12eb7c5d3a42191e2cc735a6c35ead"
                },
                {
                  "fixed": "ab1404ac81154a89fb61ac50ae9a04cd8d4834dc"
                }
              ]
            }
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98487.json"
          }
        },
        {
          "ranges": [
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.8.0"
                },
                {
                  "fixed": "6.12.112"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.13.0"
                },
                {
                  "fixed": "6.18.55"
                }
              ]
            },
            {
              "type": "ECOSYSTEM",
              "events": [
                {
                  "introduced": "6.19.0"
                },
                {
                  "fixed": "7.2.9"
                }
              ]
            }
          ],
          "package": {
            "name": "Kernel",
            "ecosystem": "Linux"
          },
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-98487.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:30.663897823Z",
      "provider": "osv",
      "references": [
        "https://git.kernel.org/stable/c/46ec55855c972504258c371677ac039ba20e5d12",
        "https://git.kernel.org/stable/c/ab1404ac81154a89fb61ac50ae9a04cd8d4834dc",
        "https://git.kernel.org/stable/c/ab3c4a4c85f2e1e8d04b5c1770dea8412d21c7fe",
        "https://git.kernel.org/stable/c/fe2a42789c12eb7c5d3a42191e2cc735a6c35ead",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/98xxx/CVE-2026-98487.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-98487",
        "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-98487.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-98487",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 497795,
  "published_at": "2026-10-18T15:16:04.746+00:00"
}