CVE-2026-68404 (GCVE-0-2026-68404)

Vulnerability from cvelistv5 – Published: 2026-08-10 12:04 – Updated: 2026-08-17 05:04
VLAI
Title
wifi: cfg80211: use wiphy work for socket owner autodisconnect
Summary
In the Linux kernel, the following vulnerability has been resolved: wifi: cfg80211: use wiphy work for socket owner autodisconnect nl80211_netlink_notify() walks the cfg80211 wireless device list when a NETLINK_GENERIC socket is released. If the socket owns a connection, the notifier queues the embedded wdev->disconnect_wk work item. That work is a plain work_struct today. NETDEV_GOING_DOWN cancels it, but a NETLINK_URELEASE notifier that already observed conn_owner_nlportid can queue it after that cancel returns. _cfg80211_unregister_wdev() then removes the wdev from the list and waits for RCU readers, but synchronize_net() does not drain work queued by such a reader. Make the autodisconnect work a wiphy_work instead. The callback already needs the wiphy mutex, and wiphy_work runs under that mutex. This lets teardown cancel pending autodisconnect work while holding the mutex, without a cancel_work_sync() vs. worker locking concern. Also cancel the wiphy work after list_del_rcu() and synchronize_net(). Any NETLINK_URELEASE notifier that had already reached the wdev list has then either queued the work and it is removed, or can no longer find the wdev.
Impacted products
Vendor Product Version CPE status
Linux Linux Affected: bd2522b168847106c1885f0319a2833bdf88bf9a , < 6d6123fef5a4af175cc6b6b12a03dd0f3c240b79 (git)
Affected: bd2522b168847106c1885f0319a2833bdf88bf9a , < 0c2ed186bbe14304415476d6707b747dddcd8583 (git)
guessed Create a notification for this product.
Linux Linux Affected: 4.11
Unaffected: 0 , < 4.11 (semver)
Unaffected: 7.1.6 , ≤ 7.1.* (semver)
Unaffected: 7.2 , ≤ * (original_commit_for_fix)
guessed Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "include/net/cfg80211.h",
            "net/wireless/core.c",
            "net/wireless/core.h",
            "net/wireless/nl80211.c",
            "net/wireless/sme.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "6d6123fef5a4af175cc6b6b12a03dd0f3c240b79",
              "status": "affected",
              "version": "bd2522b168847106c1885f0319a2833bdf88bf9a",
              "versionType": "git"
            },
            {
              "lessThan": "0c2ed186bbe14304415476d6707b747dddcd8583",
              "status": "affected",
              "version": "bd2522b168847106c1885f0319a2833bdf88bf9a",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "include/net/cfg80211.h",
            "net/wireless/core.c",
            "net/wireless/core.h",
            "net/wireless/nl80211.c",
            "net/wireless/sme.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "4.11"
            },
            {
              "lessThan": "4.11",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "7.1.*",
              "status": "unaffected",
              "version": "7.1.6",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "7.2",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.1.6",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "7.2",
                  "versionStartIncluding": "4.11",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: cfg80211: use wiphy work for socket owner autodisconnect\n\nnl80211_netlink_notify() walks the cfg80211 wireless device list when a\nNETLINK_GENERIC socket is released. If the socket owns a connection, the\nnotifier queues the embedded wdev-\u003edisconnect_wk work item.\n\nThat work is a plain work_struct today. NETDEV_GOING_DOWN cancels it, but a\nNETLINK_URELEASE notifier that already observed conn_owner_nlportid can\nqueue it after that cancel returns. _cfg80211_unregister_wdev() then\nremoves the wdev from the list and waits for RCU readers, but\nsynchronize_net() does not drain work queued by such a reader.\n\nMake the autodisconnect work a wiphy_work instead. The callback already\nneeds the wiphy mutex, and wiphy_work runs under that mutex. This lets\nteardown cancel pending autodisconnect work while holding the mutex,\nwithout a cancel_work_sync() vs. worker locking concern.\n\nAlso cancel the wiphy work after list_del_rcu() and synchronize_net(). Any\nNETLINK_URELEASE notifier that had already reached the wdev list has then\neither queued the work and it is removed, or can no longer find the wdev."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:L - The vulnerability is reached through local nl80211/generic-netlink operations: setting NL80211_ATTR_SOCKET_OWNER on a connect/join command, closing the owning netlink socket, and tearing down the wireless interface. No network or radio traffic is required, so the attack vector is Local.\nAC:L - The attacker controls both sides of the race \u2014 the NETLINK_URELEASE notification (by closing its own socket) and the wdev teardown (by downing/deleting the interface) \u2014 and can repeat the sequence in a tight loop until the work is queued after the cancel window.\nPR:L - The relevant nl80211 commands use GENL_UNS_ADMIN_PERM and the family is netnsok, and mac80211_hwsim\u0027s HWSIM_CMD_NEW_RADIO likewise creates a wiphy in the caller\u0027s netns (wiphy_net_set(genl_info_net(info))), so an unprivileged user in a user+net namespace (unshare -Urn) obtains the required CAP_NET_ADMIN.\nUI:N - The entire sequence \u2014 creating/owning the connection, closing the socket, and removing the interface \u2014 is performed by the attacker\u0027s own process with no victim action required.\nS:U - The use-after-free corrupts kernel heap memory within the same kernel security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - The freed wireless_dev lives in the net_device private allocation; a use-after-free on that slab lets an attacker reclaim and inspect kernel heap contents, and cfg80211_autodisconnect_wk dereferences the stale object, enabling disclosure of arbitrary kernel memory.\nI:H - Queueing writes work list pointers into freed memory, and process_one_work() later loads work-\u003efunc from the reclaimed allocation, giving an attacker who sprays the slab a controlled kernel function pointer call and thus arbitrary write/code execution.\nA:H - Running cfg80211_autodisconnect_wk against a freed wireless_dev dereferences stale pointers and drives disconnect paths on destroyed state, reliably producing an oops or panic even without successful exploitation."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-17T05:04:54.332Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/6d6123fef5a4af175cc6b6b12a03dd0f3c240b79"
        },
        {
          "url": "https://git.kernel.org/stable/c/0c2ed186bbe14304415476d6707b747dddcd8583"
        }
      ],
      "title": "wifi: cfg80211: use wiphy work for socket owner autodisconnect",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2026-68404",
    "datePublished": "2026-08-10T12:04:24.241Z",
    "dateReserved": "2026-07-30T09:28:09.390Z",
    "dateUpdated": "2026-08-17T05:04:54.332Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-68404",
      "date": "2026-08-20",
      "epss": "0.00154",
      "percentile": "0.0508"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2026-68404\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2026-08-10T13:20:33.947\",\"lastModified\":\"2026-08-17T06:17:49.230\",\"vulnStatus\":\"Received\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nwifi: cfg80211: use wiphy work for socket owner autodisconnect\\n\\nnl80211_netlink_notify() walks the cfg80211 wireless device list when a\\nNETLINK_GENERIC socket is released. If the socket owns a connection, the\\nnotifier queues the embedded wdev-\u003edisconnect_wk work item.\\n\\nThat work is a plain work_struct today. NETDEV_GOING_DOWN cancels it, but a\\nNETLINK_URELEASE notifier that already observed conn_owner_nlportid can\\nqueue it after that cancel returns. _cfg80211_unregister_wdev() then\\nremoves the wdev from the list and waits for RCU readers, but\\nsynchronize_net() does not drain work queued by such a reader.\\n\\nMake the autodisconnect work a wiphy_work instead. The callback already\\nneeds the wiphy mutex, and wiphy_work runs under that mutex. This lets\\nteardown cancel pending autodisconnect work while holding the mutex,\\nwithout a cancel_work_sync() vs. worker locking concern.\\n\\nAlso cancel the wiphy work after list_del_rcu() and synchronize_net(). Any\\nNETLINK_URELEASE notifier that had already reached the wdev list has then\\neither queued the work and it is removed, or can no longer find the wdev.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"include/net/cfg80211.h\",\"net/wireless/core.c\",\"net/wireless/core.h\",\"net/wireless/nl80211.c\",\"net/wireless/sme.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"bd2522b168847106c1885f0319a2833bdf88bf9a\",\"lessThan\":\"6d6123fef5a4af175cc6b6b12a03dd0f3c240b79\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"bd2522b168847106c1885f0319a2833bdf88bf9a\",\"lessThan\":\"0c2ed186bbe14304415476d6707b747dddcd8583\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"include/net/cfg80211.h\",\"net/wireless/core.c\",\"net/wireless/core.h\",\"net/wireless/nl80211.c\",\"net/wireless/sme.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"4.11\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"4.11\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.1.6\",\"lessThanOrEqual\":\"7.1.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"7.2\",\"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:L/PR:L/UI:N/S:U/C:H/I:H/A:H\",\"baseScore\":7.8,\"baseSeverity\":\"HIGH\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"HIGH\",\"integrityImpact\":\"HIGH\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":5.9}]},\"references\":[{\"url\":\"https://git.kernel.org/stable/c/0c2ed186bbe14304415476d6707b747dddcd8583\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"},{\"url\":\"https://git.kernel.org/stable/c/6d6123fef5a4af175cc6b6b12a03dd0f3c240b79\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\"}]}}",
    "redhat_vex": {
      "aggregate_severity": "Moderate",
      "current_release_date": "2026-08-13T23:28:03+00:00",
      "cve": "CVE-2026-68404",
      "id": "CVE-2026-68404",
      "initial_release_date": "2026-08-10T00:00:00+00:00",
      "product_status:known_affected": "234",
      "product_status:known_not_affected": "42",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: wifi: cfg80211: use wiphy work for socket owner autodisconnect",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-68404.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "important",
      "current_release_date": "2026-08-13T16:22:12Z",
      "cve": "CVE-2026-68404",
      "id": "CVE-2026-68404",
      "initial_release_date": "2026-08-13T16:22:12Z",
      "product_status:known_affected": "290",
      "product_status:known_not_affected": "6",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2026-68404",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-68404.json",
      "version": "2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

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.

Loading…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…