CVE-2025-21906 (GCVE-0-2025-21906)

Vulnerability from cvelistv5 – Published: 2025-04-01 15:40 – Updated: 2026-08-05 11:55
VLAI
Title
wifi: iwlwifi: mvm: clean up ROC on failure
Summary
In the Linux kernel, the following vulnerability has been resolved: wifi: iwlwifi: mvm: clean up ROC on failure If the firmware fails to start the session protection, then we do call iwl_mvm_roc_finished() here, but that won't do anything at all because IWL_MVM_STATUS_ROC_P2P_RUNNING was never set. Set IWL_MVM_STATUS_ROC_P2P_RUNNING in the failure/stop path. If it started successfully before, it's already set, so that doesn't matter, and if it didn't start it needs to be set to clean up. Not doing so will lead to a WARN_ON() later on a fresh remain- on-channel, since the link is already active when activated as it was never deactivated.
Assigner
Impacted products
Vendor Product Version
Linux Linux Affected: 35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8 , < a88c18409b5d69f426d5acc583c053eac71756a3 (git)
Affected: 35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8 , < d1a12fcb9051bbf38b2e5af310ffb102a0fab6f9 (git)
Affected: 35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8 , < f9751163bffd3fe60794929829f810968c6de73d (git)
Create a notification for this product.
Linux Linux Affected: 6.9
Unaffected: 0 , < 6.9 (semver)
Unaffected: 6.12.19 , ≤ 6.12.* (semver)
Unaffected: 6.13.7 , ≤ 6.13.* (semver)
Unaffected: 6.14 , ≤ * (original_commit_for_fix)
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/wireless/intel/iwlwifi/mvm/time-event.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "a88c18409b5d69f426d5acc583c053eac71756a3",
              "status": "affected",
              "version": "35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8",
              "versionType": "git"
            },
            {
              "lessThan": "d1a12fcb9051bbf38b2e5af310ffb102a0fab6f9",
              "status": "affected",
              "version": "35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8",
              "versionType": "git"
            },
            {
              "lessThan": "f9751163bffd3fe60794929829f810968c6de73d",
              "status": "affected",
              "version": "35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8",
              "versionType": "git"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "drivers/net/wireless/intel/iwlwifi/mvm/time-event.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.9"
            },
            {
              "lessThan": "6.9",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.19",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.13.*",
              "status": "unaffected",
              "version": "6.13.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.14",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.19",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.13.7",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.14",
                  "versionStartIncluding": "6.9",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: iwlwifi: mvm: clean up ROC on failure\n\nIf the firmware fails to start the session protection, then we\ndo call iwl_mvm_roc_finished() here, but that won\u0027t do anything\nat all because IWL_MVM_STATUS_ROC_P2P_RUNNING was never set.\nSet IWL_MVM_STATUS_ROC_P2P_RUNNING in the failure/stop path.\nIf it started successfully before, it\u0027s already set, so that\ndoesn\u0027t matter, and if it didn\u0027t start it needs to be set to\nclean up.\n\nNot doing so will lead to a WARN_ON() later on a fresh remain-\non-channel, since the link is already active when activated as\nit was never deactivated."
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 7.6,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - The affected code is the iwlwifi P2P remain-on-channel/session-protection path, which is driven over the air by adjacent Wi-Fi Direct peers \u2014 an attacker in radio range performing P2P discovery/GO negotiation causes the target to issue repeated ROC cycles, and RF congestion on the same segment is what makes the firmware fail to start session protection. No routable-network path exists, so this is Adjacent rather than Network.\nAC:L - The attacker can drive ROC attempts repeatedly and indefinitely at no cost, and each attempt that the firmware fails to start leaks a station ID and leaves the link active; there is no memory layout to guess, no race to win, and no lockout, so success is only a matter of retrying.\nPR:N - An adjacent P2P peer needs no credentials on the target \u2014 P2P discovery, provision discovery and GO negotiation are entirely pre-association, and the target\u0027s supplicant responds automatically by requesting off-channel ROC on the P2P_DEVICE interface.\nUI:N - On devices where Wi-Fi Direct/P2P is active (Android phones, Miracast/Chromecast-capable systems, wpa_supplicant with P2P enabled), the P2P device sits in listen/find state and answers peer frames automatically, so no victim action is required at exploitation time.\nS:U - The corrupted state, the WARN, and the leaked station/queue resources are all confined to the kernel\u0027s own iwlwifi driver state within the same host; no VM, IOMMU, or sandbox boundary is crossed.\nC:L - The resulting `WARN_ON_ONCE()` in `iwl_mvm_link_changed()` dumps a full backtrace with kernel text/module addresses and register contents into the ring buffer, exposing KASLR-relevant pointers on the common `dmesg_restrict=0` configurations; the leak is bounded to that log record with no out-of-bounds or arbitrary read.\nI:L - The skipped cleanup leaves stale kernel/firmware state \u2014 the link remains active, a firmware station entry and the p2p_dev queue are orphaned and overwritten on the next ROC, and unflushed off-channel frames are documented to be transmitted during a later, unrelated time event (i.e. on the wrong channel/context). The modification is limited to driver/device state, not arbitrary kernel memory.\nA:H - The bug reliably produces a kernel `WARN_ON_ONCE`, which panics immediately on the many production, cloud, hardened, Android and CI configurations that set `panic_on_warn=1`; even without that, repeated triggering leaks firmware station IDs until `iwl_mvm_find_free_sta_id()` returns `IWL_INVALID_STA`, breaking remain-on-channel, P2P and association until the interface or firmware is reset."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T11:55:17.575Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/a88c18409b5d69f426d5acc583c053eac71756a3"
        },
        {
          "url": "https://git.kernel.org/stable/c/d1a12fcb9051bbf38b2e5af310ffb102a0fab6f9"
        },
        {
          "url": "https://git.kernel.org/stable/c/f9751163bffd3fe60794929829f810968c6de73d"
        }
      ],
      "title": "wifi: iwlwifi: mvm: clean up ROC on failure",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-21906",
    "datePublished": "2025-04-01T15:40:47.059Z",
    "dateReserved": "2024-12-29T08:45:45.786Z",
    "dateUpdated": "2026-08-05T11:55:17.575Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2025-21906",
      "date": "2026-08-07",
      "epss": "0.00208",
      "percentile": "0.11024"
    },
    "nvd": "{\"cve\":{\"id\":\"CVE-2025-21906\",\"sourceIdentifier\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"published\":\"2025-04-01T16:15:21.110\",\"lastModified\":\"2026-07-30T06:21:56.500\",\"vulnStatus\":\"Modified\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"In the Linux kernel, the following vulnerability has been resolved:\\n\\nwifi: iwlwifi: mvm: clean up ROC on failure\\n\\nIf the firmware fails to start the session protection, then we\\ndo call iwl_mvm_roc_finished() here, but that won\u0027t do anything\\nat all because IWL_MVM_STATUS_ROC_P2P_RUNNING was never set.\\nSet IWL_MVM_STATUS_ROC_P2P_RUNNING in the failure/stop path.\\nIf it started successfully before, it\u0027s already set, so that\\ndoesn\u0027t matter, and if it didn\u0027t start it needs to be set to\\nclean up.\\n\\nNot doing so will lead to a WARN_ON() later on a fresh remain-\\non-channel, since the link is already active when activated as\\nit was never deactivated.\"},{\"lang\":\"es\",\"value\":\"En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad: wifi: iwlwifi: mvm: clean up ROC on fault () Si el firmware no inicia la protecci\u00f3n de sesi\u00f3n, entonces llamamos a iwl_mvm_roc_finished() aqu\u00ed, pero eso no har\u00e1 nada en absoluto porque IWL_MVM_STATUS_ROC_P2P_RUNNING nunca se configur\u00f3. Establezca IWL_MVM_STATUS_ROC_P2P_RUNNING en la ruta de error/detenci\u00f3n. Si se inici\u00f3 correctamente antes, ya est\u00e1 configurado, por lo que no importa, y si no se inici\u00f3, debe configurarse para limpiar. No hacerlo conducir\u00e1 a un WARN_ON() m\u00e1s tarde en un nuevo canal restante, ya que el enlace ya est\u00e1 activo cuando se activ\u00f3, ya que nunca se desactiv\u00f3.\"}],\"affected\":[{\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"affectedData\":[{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"unaffected\",\"programFiles\":[\"drivers/net/wireless/intel/iwlwifi/mvm/time-event.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8\",\"lessThan\":\"a88c18409b5d69f426d5acc583c053eac71756a3\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8\",\"lessThan\":\"d1a12fcb9051bbf38b2e5af310ffb102a0fab6f9\",\"versionType\":\"git\",\"status\":\"affected\"},{\"version\":\"35c1bbd93c4e6969b3ac238b48a8bdff3e223ed8\",\"lessThan\":\"f9751163bffd3fe60794929829f810968c6de73d\",\"versionType\":\"git\",\"status\":\"affected\"}]},{\"vendor\":\"Linux\",\"product\":\"Linux\",\"defaultStatus\":\"affected\",\"programFiles\":[\"drivers/net/wireless/intel/iwlwifi/mvm/time-event.c\"],\"repo\":\"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git\",\"versions\":[{\"version\":\"6.9\",\"status\":\"affected\"},{\"version\":\"0\",\"lessThan\":\"6.9\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.12.19\",\"lessThanOrEqual\":\"6.12.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.13.7\",\"lessThanOrEqual\":\"6.13.*\",\"versionType\":\"semver\",\"status\":\"unaffected\"},{\"version\":\"6.14\",\"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:A/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:H\",\"baseScore\":7.6,\"baseSeverity\":\"HIGH\",\"attackVector\":\"ADJACENT_NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"LOW\",\"integrityImpact\":\"LOW\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":2.8,\"impactScore\":4.7},{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H\",\"baseScore\":5.5,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"LOCAL\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"LOW\",\"userInteraction\":\"NONE\",\"scope\":\"UNCHANGED\",\"confidentialityImpact\":\"NONE\",\"integrityImpact\":\"NONE\",\"availabilityImpact\":\"HIGH\"},\"exploitabilityScore\":1.8,\"impactScore\":3.6}]},\"weaknesses\":[{\"source\":\"nvd@nist.gov\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-665\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.9\",\"versionEndExcluding\":\"6.12.19\",\"matchCriteriaId\":\"A346EB95-654A-4E16-AA02-F4B3D0ED1B8A\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*\",\"versionStartIncluding\":\"6.13\",\"versionEndExcluding\":\"6.13.7\",\"matchCriteriaId\":\"842F5A44-3E71-4546-B4FD-43B0ACE3F32B\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.14:rc1:*:*:*:*:*:*\",\"matchCriteriaId\":\"186716B6-2B66-4BD0-852E-D48E71C0C85F\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.14:rc2:*:*:*:*:*:*\",\"matchCriteriaId\":\"0D3E781C-403A-498F-9DA9-ECEE50F41E75\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.14:rc3:*:*:*:*:*:*\",\"matchCriteriaId\":\"66619FB8-0AAF-4166-B2CF-67B24143261D\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.14:rc4:*:*:*:*:*:*\",\"matchCriteriaId\":\"D3D6550E-6679-4560-902D-AF52DCFE905B\"},{\"vulnerable\":true,\"criteria\":\"cpe:2.3:o:linux:linux_kernel:6.14:rc5:*:*:*:*:*:*\",\"matchCriteriaId\":\"45B90F6B-BEC7-4D4E-883A-9DBADE021750\"}]}]}],\"references\":[{\"url\":\"https://git.kernel.org/stable/c/a88c18409b5d69f426d5acc583c053eac71756a3\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/d1a12fcb9051bbf38b2e5af310ffb102a0fab6f9\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]},{\"url\":\"https://git.kernel.org/stable/c/f9751163bffd3fe60794929829f810968c6de73d\",\"source\":\"416baaa9-dc9f-4396-8d5f-8c081fb06d67\",\"tags\":[\"Patch\"]}]}}",
    "redhat_vex": {
      "aggregate_severity": "Low",
      "current_release_date": "2026-07-30T10:12:49+00:00",
      "cve": "CVE-2025-21906",
      "id": "CVE-2025-21906",
      "initial_release_date": "2025-04-01T00:00:00+00:00",
      "product_status:known_affected": "212",
      "product_status:known_not_affected": "62",
      "source": "Red Hat CSAF VEX",
      "status": "final",
      "title": "kernel: wifi: iwlwifi: mvm: clean up ROC on failure",
      "url": "https://security.access.redhat.com/data/csaf/v2/vex/2025/cve-2025-21906.json",
      "version": "3"
    },
    "suse_vex": {
      "aggregate_severity": "moderate",
      "current_release_date": "2026-07-17T13:15:30Z",
      "cve": "CVE-2025-21906",
      "id": "CVE-2025-21906",
      "initial_release_date": "2025-04-02T13:29:22Z",
      "product_status:known_affected": "440",
      "product_status:known_not_affected": "260",
      "product_status:recommended": "395",
      "source": "SUSE CSAF VEX",
      "status": "interim",
      "title": "SUSE CVE CVE-2025-21906",
      "url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2025-21906.json",
      "version": "40"
    }
  }
}



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…