CVE-2026-98331 (GCVE-0-2026-98331)

Vulnerability from cvelistv5 – Published: 2026-10-06 08:46 – Updated: 2026-10-07 06:50
VLAI
Title
wifi: mac80211: unlist vifs when their netdev is unregistered
Summary
In the Linux kernel, the following vulnerability has been resolved: wifi: mac80211: unlist vifs when their netdev is unregistered mac80211 only removes vifs from the local->interfaces list when an interface is removed via ieee80211_if_remove(), before it unregisters the netdev. However, it's possible for a netdev to be unregistered without going through that: When the netns that holds the wiphy is destroyed, the wiphy is supposed to move to the init_ns, but that can run into allocation failures. Then, mac80211 has an interface listed that doesn't exist, and will eventually hit BUG: failure at net/wireless/core.h:141/wiphy_to_rdev()! ... _cfg80211_unregister_wdev+0x24/0x36a [cfg80211] cfg80211_unregister_wdev+0x15/0x1d [cfg80211] ieee80211_remove_interfaces+0x1ff/0x257 [mac80211] ieee80211_unregister_hw+0x73/0x1d1 [mac80211] mac80211_hwsim_del_radio+0x114/0x166 [mac80211_hwsim] Remove the interface from the list in ->ndo_uninit if it's still around to avoid this.
Assigner
Linux CNA under the mitre root
CNA scorecard D 53/100 over 6666 records in the last 180 days details
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: 463d018323851a608eef52a9427b0585005c647f , < a22c02863439993095acd0c3db97fa53cd515f4f (git)
Affected: 463d018323851a608eef52a9427b0585005c647f , < 20a56e96a6f7b4dfbd13f8732fd2673409fc7ba0 (git)
Affected: 463d018323851a608eef52a9427b0585005c647f , < b735ad1a9aca6080192c1316cf2706e5e1318762 (git)
Affected: 463d018323851a608eef52a9427b0585005c647f , < d45bf731ec7085d2cc2c5d179d3b3b6c743d4fb1 (git)
Affected: 463d018323851a608eef52a9427b0585005c647f , < 821bab0456dfca12acef6df702c8f2477d313227 (git)
Affected: 463d018323851a608eef52a9427b0585005c647f , < eee2efd82867b623982ac51925b5a1812a74c50d (git)
guessed Create a notification for this product.
Linux Linux Affected: 2.6.32
Unaffected: 0 , < 2.6.32 (semver)
Unaffected: 6.1.189 , ≤ 6.1.* (semver)
Unaffected: 6.6.158 , ≤ 6.6.* (semver)
Unaffected: 6.12.112 , ≤ 6.12.* (semver)
Unaffected: 6.18.54 , ≤ 6.18.* (semver)
Unaffected: 7.2.8 , ≤ 7.2.* (semver)
Unaffected: 7.3-rc4 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/mac80211/iface.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a22c02863439993095acd0c3db97fa53cd515f4f",
              "status": "affected",
              "version": "463d018323851a608eef52a9427b0585005c647f",
              "versionType": "git"
            },
            {
              "lessThan": "20a56e96a6f7b4dfbd13f8732fd2673409fc7ba0",
              "status": "affected",
              "version": "463d018323851a608eef52a9427b0585005c647f",
              "versionType": "git"
            },
            {
              "lessThan": "b735ad1a9aca6080192c1316cf2706e5e1318762",
              "status": "affected",
              "version": "463d018323851a608eef52a9427b0585005c647f",
              "versionType": "git"
            },
            {
              "lessThan": "d45bf731ec7085d2cc2c5d179d3b3b6c743d4fb1",
              "status": "affected",
              "version": "463d018323851a608eef52a9427b0585005c647f",
              "versionType": "git"
            },
            {
              "lessThan": "821bab0456dfca12acef6df702c8f2477d313227",
              "status": "affected",
              "version": "463d018323851a608eef52a9427b0585005c647f",
              "versionType": "git"
            },
            {
              "lessThan": "eee2efd82867b623982ac51925b5a1812a74c50d",
              "status": "affected",
              "version": "463d018323851a608eef52a9427b0585005c647f",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/mac80211/iface.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "2.6.32"
            },
            {
              "lessThan": "2.6.32",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.189",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.158",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.112",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.18.*",
              "status": "unaffected",
              "version": "6.18.54",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.2.*",
              "status": "unaffected",
              "version": "7.2.8",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.3-rc4",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.189",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.158",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.112",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.18.54",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2.8",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.3-rc4",
                  "versionStartIncluding": "2.6.32",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mac80211: unlist vifs when their netdev is unregistered\n\nmac80211 only removes vifs from the local-\u003einterfaces list when\nan interface is removed via ieee80211_if_remove(), before it\nunregisters the netdev. However, it\u0027s possible for a netdev to\nbe unregistered without going through that: When the netns that\nholds the wiphy is destroyed, the wiphy is supposed to move to\nthe init_ns, but that can run into allocation failures.\n\nThen, mac80211 has an interface listed that doesn\u0027t exist, and\nwill eventually hit\n\n  BUG: failure at net/wireless/core.h:141/wiphy_to_rdev()!\n  ...\n  _cfg80211_unregister_wdev+0x24/0x36a [cfg80211]\n  cfg80211_unregister_wdev+0x15/0x1d [cfg80211]\n  ieee80211_remove_interfaces+0x1ff/0x257 [mac80211]\n  ieee80211_unregister_hw+0x73/0x1d1 [mac80211]\n  mac80211_hwsim_del_radio+0x114/0x166 [mac80211_hwsim]\n\nRemove the interface from the list in -\u003endo_uninit if it\u0027s still\naround to avoid this."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The trigger is local: tearing down a netns that holds a mac80211 wiphy runs cfg80211_pernet_exit()-\u003ecfg80211_switch_netns(). When dev_change_net_namespace() fails there, default_device_exit_batch() unregisters the netdev while ieee80211_uninit() leaves its sdata on local-\u003einterfaces. No WiFi frame supplies the failing state.\nAC:H - It needs a wiphy already moved into an attacker-controlled netns (an admin step), plus a failed move back. The attacker can force the failure: an altname on the wlan netdev that clashes with an init_net name makes __dev_change_net_namespace() return -EEXIST, because cfg80211 doesn\u0027t strip altnames. The rare alternative is an allocation failure.\nPR:L - With a phy delegated to a container, root in that user-namespace-owned netns, which is unprivileged on the host, can add the altname via RTM_NEWLINKPROP and destroy the netns. Moving a phy out of init_net yourself needs init-ns CAP_NET_ADMIN, and hwsim radios made in a user netns are deleted by hwsim_exit_net() before cfg80211 runs.\nUI:N - The container root adds the altname and exits the namespace on their own. No other user has to do anything.\nS:U - This is memory corruption in the host kernel\u0027s mac80211 interface list. Exploiting it is ordinary kernel privilege escalation within the same kernel authority; no hypervisor or IOMMU boundary is involved.\nC:H - The netdev is freed via needs_free_netdev, but its sdata stays on local-\u003einterfaces. Every received frame then makes __ieee80211_rx_handle_packet() read the freed sdata through list_for_each_entry_rcu(), which gives a use-after-free read of an object an attacker can reallocate.\nI:H - Later removal of a neighbouring interface (list_del_rcu) and ieee80211_remove_interfaces() write into and dereference the stale sdata. That is a use-after-free write that heap reallocation could turn into memory corruption.\nA:H - The dangling entry crashes the kernel: the commit shows a BUG in wiphy_to_rdev() reached from ieee80211_remove_interfaces() during ieee80211_unregister_hw(), and frame RX can touch freed memory."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-10-07T06:50:06.466Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/a22c02863439993095acd0c3db97fa53cd515f4f"
        },
        {
          "url": "https://git.kernel.org/stable/c/20a56e96a6f7b4dfbd13f8732fd2673409fc7ba0"
        },
        {
          "url": "https://git.kernel.org/stable/c/b735ad1a9aca6080192c1316cf2706e5e1318762"
        },
        {
          "url": "https://git.kernel.org/stable/c/d45bf731ec7085d2cc2c5d179d3b3b6c743d4fb1"
        },
        {
          "url": "https://git.kernel.org/stable/c/821bab0456dfca12acef6df702c8f2477d313227"
        },
        {
          "url": "https://git.kernel.org/stable/c/eee2efd82867b623982ac51925b5a1812a74c50d"
        }
      ],
      "title": "wifi: mac80211: unlist vifs when their netdev is unregistered",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-98331",
    "datePublished": "2026-10-06T08:46:23.481Z",
    "dateReserved": "2026-09-25T10:25:14.341Z",
    "dateUpdated": "2026-10-07T06:50:06.466Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-98331",
      "date": "2026-10-16",
      "epss": "0.00131",
      "percentile": "0.02375"
    },
    "microsoft_vex": {
      "current_release_date": "2026-10-15T02:17:15.000Z",
      "cve": "CVE-2026-98331",
      "id": "msrc_CVE-2026-98331",
      "initial_release_date": "2026-10-07T01:12:02.000Z",
      "product_status:fixed": "1",
      "product_status:known_affected": "1",
      "source": "Microsoft CSAF VEX",
      "status": "final",
      "title": "wifi: mac80211: unlist vifs when their netdev is unregistered",
      "url": "https://msrc.microsoft.com/csaf/vex/2026/msrc_cve-2026-98331.json",
      "version": "3"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "defaultStatus": "unaffected",
                "product": "Linux",
                "programFiles": [
                  "net/mac80211/iface.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "lessThan": "a22c02863439993095acd0c3db97fa53cd515f4f",
                    "status": "affected",
                    "version": "463d018323851a608eef52a9427b0585005c647f",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "20a56e96a6f7b4dfbd13f8732fd2673409fc7ba0",
                    "status": "affected",
                    "version": "463d018323851a608eef52a9427b0585005c647f",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "b735ad1a9aca6080192c1316cf2706e5e1318762",
                    "status": "affected",
                    "version": "463d018323851a608eef52a9427b0585005c647f",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "d45bf731ec7085d2cc2c5d179d3b3b6c743d4fb1",
                    "status": "affected",
                    "version": "463d018323851a608eef52a9427b0585005c647f",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "821bab0456dfca12acef6df702c8f2477d313227",
                    "status": "affected",
                    "version": "463d018323851a608eef52a9427b0585005c647f",
                    "versionType": "git"
                  },
                  {
                    "lessThan": "eee2efd82867b623982ac51925b5a1812a74c50d",
                    "status": "affected",
                    "version": "463d018323851a608eef52a9427b0585005c647f",
                    "versionType": "git"
                  }
                ]
              },
              {
                "defaultStatus": "affected",
                "product": "Linux",
                "programFiles": [
                  "net/mac80211/iface.c"
                ],
                "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                "vendor": "Linux",
                "versions": [
                  {
                    "status": "affected",
                    "version": "2.6.32"
                  },
                  {
                    "lessThan": "2.6.32",
                    "status": "unaffected",
                    "version": "0",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.1.*",
                    "status": "unaffected",
                    "version": "6.1.189",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.6.*",
                    "status": "unaffected",
                    "version": "6.6.158",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.12.*",
                    "status": "unaffected",
                    "version": "6.12.112",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "6.18.*",
                    "status": "unaffected",
                    "version": "6.18.54",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "7.2.*",
                    "status": "unaffected",
                    "version": "7.2.8",
                    "versionType": "semver"
                  },
                  {
                    "lessThanOrEqual": "*",
                    "status": "unaffected",
                    "version": "7.3-rc4",
                    "versionType": "original_commit_for_fix"
                  }
                ]
              }
            ],
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mac80211: unlist vifs when their netdev is unregistered\n\nmac80211 only removes vifs from the local-\u003einterfaces list when\nan interface is removed via ieee80211_if_remove(), before it\nunregisters the netdev. However, it\u0027s possible for a netdev to\nbe unregistered without going through that: When the netns that\nholds the wiphy is destroyed, the wiphy is supposed to move to\nthe init_ns, but that can run into allocation failures.\n\nThen, mac80211 has an interface listed that doesn\u0027t exist, and\nwill eventually hit\n\n  BUG: failure at net/wireless/core.h:141/wiphy_to_rdev()!\n  ...\n  _cfg80211_unregister_wdev+0x24/0x36a [cfg80211]\n  cfg80211_unregister_wdev+0x15/0x1d [cfg80211]\n  ieee80211_remove_interfaces+0x1ff/0x257 [mac80211]\n  ieee80211_unregister_hw+0x73/0x1d1 [mac80211]\n  mac80211_hwsim_del_radio+0x114/0x166 [mac80211_hwsim]\n\nRemove the interface from the list in -\u003endo_uninit if it\u0027s still\naround to avoid this."
          }
        ],
        "id": "CVE-2026-98331",
        "lastModified": "2026-10-07T07:17:09.387",
        "metrics": {
          "cvssMetricV31": [
            {
              "cvssData": {
                "attackComplexity": "HIGH",
                "attackVector": "LOCAL",
                "availabilityImpact": "HIGH",
                "baseScore": 7.0,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "HIGH",
                "integrityImpact": "HIGH",
                "privilegesRequired": "LOW",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H",
                "version": "3.1"
              },
              "exploitabilityScore": 1.0,
              "impactScore": 5.9,
              "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
              "type": "Secondary"
            }
          ]
        },
        "published": "2026-10-06T09:18:25.517",
        "references": [
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/20a56e96a6f7b4dfbd13f8732fd2673409fc7ba0"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/821bab0456dfca12acef6df702c8f2477d313227"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/a22c02863439993095acd0c3db97fa53cd515f4f"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/b735ad1a9aca6080192c1316cf2706e5e1318762"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/d45bf731ec7085d2cc2c5d179d3b3b6c743d4fb1"
          },
          {
            "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
            "url": "https://git.kernel.org/stable/c/eee2efd82867b623982ac51925b5a1812a74c50d"
          }
        ],
        "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "vulnStatus": "Received"
      }
    },
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-10-10T09:35:29+00:00",
      "cve": "CVE-2026-98331",
      "id": "CVE-2026-98331",
      "initial_release_date": "2026-10-06T00:00:00+00:00",
      "product_status:known_affected": "277",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: wifi: mac80211: unlist vifs when their netdev is unregistered",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-98331.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-10-07T00:00:37Z",
      "cve": "CVE-2026-98331",
      "id": "CVE-2026-98331",
      "initial_release_date": "2026-10-07T00:00:37Z",
      "product_status:known_affected": "269",
      "product_status:known_not_affected": "78",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-98331",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-98331.json",
      "version": "2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Drag nodes to arrange them. Double-click a related vulnerability to open it, or a source to visit its link. The Physics button on the left tunes the layout and the simulation; the legend at the bottom left hides or shows nodes by kind and by sighting type.

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Vulnerability timeline

Sightings and recorded dates, grouped by day · UTC

JSON
Events included in the timeline

Loading timeline…


    Loading…

    Loading…

    Loading…

    Related by attack behaviour

    Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.