CVE-2025-38512 (GCVE-0-2025-38512)
Vulnerability from cvelistv5
Published
2025-08-16 10:54
Modified
2026-08-05 12:02
Summary
In the Linux kernel, the following vulnerability has been resolved: wifi: prevent A-MSDU attacks in mesh networks This patch is a mitigation to prevent the A-MSDU spoofing vulnerability for mesh networks. The initial update to the IEEE 802.11 standard, in response to the FragAttacks, missed this case (CVE-2025-27558). It can be considered a variant of CVE-2020-24588 but for mesh networks. This patch tries to detect if a standard MSDU was turned into an A-MSDU by an adversary. This is done by parsing a received A-MSDU as a standard MSDU, calculating the length of the Mesh Control header, and seeing if the 6 bytes after this header equal the start of an rfc1042 header. If equal, this is a strong indication of an ongoing attack attempt. This defense was tested with mac80211_hwsim against a mesh network that uses an empty Mesh Address Extension field, i.e., when four addresses are used, and when using a 12-byte Mesh Address Extension field, i.e., when six addresses are used. Functionality of normal MSDUs and A-MSDUs was also tested, and confirmed working, when using both an empty and 12-byte Mesh Address Extension field. It was also tested with mac80211_hwsim that A-MSDU attacks in non-mesh networks keep being detected and prevented. Note that the vulnerability being patched, and the defense being implemented, was also discussed in the following paper and in the following IEEE 802.11 presentation: https://papers.mathyvanhoef.com/wisec2025.pdf https://mentor.ieee.org/802.11/dcn/25/11-25-0949-00-000m-a-msdu-mesh-spoof-protection.docx
Impacted products
Vendor Product Version
Linux Linux Version: 79720743421753ff72bfa0d79976c534645b81c1
Version: 986e43b19ae9176093da35e0a844e65c8bf9ede7
Version: 986e43b19ae9176093da35e0a844e65c8bf9ede7
Version: 986e43b19ae9176093da35e0a844e65c8bf9ede7
Version: 986e43b19ae9176093da35e0a844e65c8bf9ede7
Version: 6.1.107   
Create a notification for this product.
Show details on NVD website


{
  "containers": {
    "adp": [
      {
        "providerMetadata": {
          "dateUpdated": "2025-11-03T17:39:14.400Z",
          "orgId": "af854a3a-2127-422b-91ae-364da2661108",
          "shortName": "CVE"
        },
        "references": [
          {
            "url": "https://lists.debian.org/debian-lts-announce/2025/10/msg00008.html"
          }
        ],
        "title": "CVE Program Container"
      }
    ],
    "cna": {
      "affected": [
        {
          "defaultStatus": "unaffected",
          "product": "Linux",
          "programFiles": [
            "net/wireless/util.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "lessThan": "e2c8a3c0388aef6bfc4aabfba07bc7dff16eea80",
              "status": "affected",
              "version": "79720743421753ff72bfa0d79976c534645b81c1",
              "versionType": "git"
            },
            {
              "lessThan": "ec6392061de6681148b63ee6c8744da833498cdd",
              "status": "affected",
              "version": "986e43b19ae9176093da35e0a844e65c8bf9ede7",
              "versionType": "git"
            },
            {
              "lessThan": "e01851f6e9a665a6011b14714b271d3e6b0b8d32",
              "status": "affected",
              "version": "986e43b19ae9176093da35e0a844e65c8bf9ede7",
              "versionType": "git"
            },
            {
              "lessThan": "6e3b09402cc6c3e3474fa548e8adf6897dda05de",
              "status": "affected",
              "version": "986e43b19ae9176093da35e0a844e65c8bf9ede7",
              "versionType": "git"
            },
            {
              "lessThan": "737bb912ebbe4571195c56eba557c4d7315b26fb",
              "status": "affected",
              "version": "986e43b19ae9176093da35e0a844e65c8bf9ede7",
              "versionType": "git"
            },
            {
              "lessThan": "6.1.146",
              "status": "affected",
              "version": "6.1.107",
              "versionType": "semver"
            }
          ]
        },
        {
          "defaultStatus": "affected",
          "product": "Linux",
          "programFiles": [
            "net/wireless/util.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "vendor": "Linux",
          "versions": [
            {
              "status": "affected",
              "version": "6.3"
            },
            {
              "lessThan": "6.3",
              "status": "unaffected",
              "version": "0",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.1.*",
              "status": "unaffected",
              "version": "6.1.146",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.6.*",
              "status": "unaffected",
              "version": "6.6.99",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.12.*",
              "status": "unaffected",
              "version": "6.12.39",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "6.15.*",
              "status": "unaffected",
              "version": "6.15.7",
              "versionType": "semver"
            },
            {
              "lessThanOrEqual": "*",
              "status": "unaffected",
              "version": "6.16",
              "versionType": "original_commit_for_fix"
            }
          ]
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.1.146",
                  "versionStartIncluding": "6.1.107",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.6.99",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.12.39",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.15.7",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                },
                {
                  "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "6.16",
                  "versionStartIncluding": "6.3",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "OR"
            }
          ]
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: prevent A-MSDU attacks in mesh networks\n\nThis patch is a mitigation to prevent the A-MSDU spoofing vulnerability\nfor mesh networks. The initial update to the IEEE 802.11 standard, in\nresponse to the FragAttacks, missed this case (CVE-2025-27558). It can\nbe considered a variant of CVE-2020-24588 but for mesh networks.\n\nThis patch tries to detect if a standard MSDU was turned into an A-MSDU\nby an adversary. This is done by parsing a received A-MSDU as a standard\nMSDU, calculating the length of the Mesh Control header, and seeing if\nthe 6 bytes after this header equal the start of an rfc1042 header. If\nequal, this is a strong indication of an ongoing attack attempt.\n\nThis defense was tested with mac80211_hwsim against a mesh network that\nuses an empty Mesh Address Extension field, i.e., when four addresses\nare used, and when using a 12-byte Mesh Address Extension field, i.e.,\nwhen six addresses are used. Functionality of normal MSDUs and A-MSDUs\nwas also tested, and confirmed working, when using both an empty and\n12-byte Mesh Address Extension field.\n\nIt was also tested with mac80211_hwsim that A-MSDU attacks in non-mesh\nnetworks keep being detected and prevented.\n\nNote that the vulnerability being patched, and the defense being\nimplemented, was also discussed in the following paper and in the\nfollowing IEEE 802.11 presentation:\n\nhttps://papers.mathyvanhoef.com/wisec2025.pdf\nhttps://mentor.ieee.org/802.11/dcn/25/11-25-0949-00-000m-a-msdu-mesh-spoof-protection.docx"
        }
      ],
      "metrics": [
        {
          "cvssV3_1": {
            "baseScore": 8.8,
            "baseSeverity": "HIGH",
            "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
            "version": "3.1"
          },
          "scenarios": [
            {
              "lang": "en",
              "value": "AV:A - Exploitation requires the attacker to capture and re-inject 802.11 frames within radio range of the target mesh network, flipping the unauthenticated A-MSDU-Present bit in the QoS Control field. This is Wi-Fi frame injection on the same wireless segment, which maps to Adjacent.\nAC:L - The attacker controls every precondition: a monitor-mode radio, a standard channel-based MitM to relay the frame (as in KRACK/FragAttacks tooling), and causing known plaintext to traverse the link by simply sending traffic toward the victim; the parsing outcome is deterministic once the bit is flipped. 802.11s mesh is a mainstream deployment (OpenWrt/IoT/smart-home routers) and SPP A-MSDU protection is essentially never negotiated in practice.\nPR:N - The attacker holds no credentials on the mesh network \u2014 the frame is legitimately encrypted and MIC-validated by an authenticated peer, and only an unprotected header bit outside the cryptographic integrity check is modified. No authentication or authorization is required at any point on the path.\nUI:N - No victim action is needed; the attacker can elicit the required frame by sending unsolicited traffic toward the victim or by acting on routinely present mesh/broadcast traffic. Parsing happens automatically in the receive path.\nS:U - The injected frames are processed and forwarded by the same kernel networking stack that contains the flaw, which is that component\u0027s normal authority. No VM, IOMMU, or hypervisor boundary is crossed.\nC:H - Bypassing the link-layer integrity guarantee lets an unauthenticated attacker inject frames that poison the mesh proxy path table (`mpp_path_add()`), redirecting traffic destined for arbitrary addresses to a node of the attacker\u0027s choosing, and enables the documented FragAttacks chain (spoofed router advertisement/DNS) to intercept the victim\u0027s entire traffic stream. Data that WPA2/WPA3 is supposed to protect becomes readable by the attacker.\nI:H - The attacker gains arbitrary Ethernet/IP packet injection into a cryptographically protected mesh, with the frames attributed to a legitimately authenticated peer and forwarded across the whole mesh and out its gateway. Attacker-controlled Mesh Control headers additionally allow rewriting the node\u0027s mesh proxy/routing state, a complete loss of integrity for traffic handled by the interface.\nA:H - Persistently poisoning the mesh proxy path table lets the attacker blackhole traffic for arbitrary destinations, including the mesh gateway, cutting off forwarding for the affected node and downstream clients; injected frames can also tear down connections at will. For a mesh router whose function is forwarding, this is a total loss of the affected service."
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-08-05T12:02:33.752Z",
        "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "shortName": "Linux"
      },
      "references": [
        {
          "url": "https://git.kernel.org/stable/c/e2c8a3c0388aef6bfc4aabfba07bc7dff16eea80"
        },
        {
          "url": "https://git.kernel.org/stable/c/ec6392061de6681148b63ee6c8744da833498cdd"
        },
        {
          "url": "https://git.kernel.org/stable/c/e01851f6e9a665a6011b14714b271d3e6b0b8d32"
        },
        {
          "url": "https://git.kernel.org/stable/c/6e3b09402cc6c3e3474fa548e8adf6897dda05de"
        },
        {
          "url": "https://git.kernel.org/stable/c/737bb912ebbe4571195c56eba557c4d7315b26fb"
        }
      ],
      "title": "wifi: prevent A-MSDU attacks in mesh networks",
      "x_generator": {
        "engine": "bippy-1.2.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
    "assignerShortName": "Linux",
    "cveId": "CVE-2025-38512",
    "datePublished": "2025-08-16T10:54:54.285Z",
    "dateReserved": "2025-04-16T04:51:24.022Z",
    "dateUpdated": "2026-08-05T12:02:33.752Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}


Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Sightings

Author Source Type Date

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
  • Confirmed: The vulnerability is confirmed from an analyst perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
  • Patched: This vulnerability was successfully patched by the user reporting the sighting.
  • Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
  • Not confirmed: The user expresses doubt about the veracity of the vulnerability.
  • Not patched: This vulnerability was not successfully patched by the user reporting the sighting.


Loading…

Loading…