← Back to CVE Explorer

CVE-2026-98348

Full vulnerability record from the local CVENow database.

Description

In the Linux kernel, the following vulnerability has been resolved: wifi: libipw: reject too-short association responses libipw_handle_assoc_resp() reads the capability, status and aid fields of the 30-byte association response prefix and then computes the information element length as stats->len - sizeof(*frame) stats->len is a u16 and sizeof() has type size_t, so the subtraction is evaluated as size_t and wraps instead of going negative. Truncating that to the u16 length parameter of libipw_parse_info_param() turns a frame shorter than the fixed fields into a length near 64 KiB, and the parser then reads past the receive buffer. Both the ipw2100 and ipw2200 management receive paths reach this function having established only that the frame carries the generic 24-byte three-address header. Reject the frame before any fixed field is touched. Found by an AI-assisted review of length arithmetic in management frame parsers. Verified with a KUnit case under Generic KASAN on arm64 under QEMU; I do not have the hardware, so it is not tested on a real device.

Severity
HIGH
CVSS score
7.1 (v3.1)
Vulnerability status
Received
Source identifier
416baaa9-dc9f-4396-8d5f-8c081fb06d67
Published
2026-10-06 09:18:27.963000
Last modified
2026-10-19 10:18:37.357000
View original CVE JSON
{
  "id": "CVE-2026-98348",
  "sourceIdentifier": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
  "published": "2026-10-06T09:18:27.963",
  "lastModified": "2026-10-19T10:18:37.357",
  "vulnStatus": "Received",
  "cveTags": [],
  "descriptions": [
    {
      "lang": "en",
      "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: libipw: reject too-short association responses\n\nlibipw_handle_assoc_resp() reads the capability, status and aid fields\nof the 30-byte association response prefix and then computes the\ninformation element length as\n\n\tstats->len - sizeof(*frame)\n\nstats->len is a u16 and sizeof() has type size_t, so the subtraction is\nevaluated as size_t and wraps instead of going negative.  Truncating\nthat to the u16 length parameter of libipw_parse_info_param() turns a\nframe shorter than the fixed fields into a length near 64 KiB, and the\nparser then reads past the receive buffer.\n\nBoth the ipw2100 and ipw2200 management receive paths reach this\nfunction having established only that the frame carries the generic\n24-byte three-address header.\n\nReject the frame before any fixed field is touched.\n\nFound by an AI-assisted review of length arithmetic in management frame\nparsers.  Verified with a KUnit case under Generic KASAN on arm64 under\nQEMU; I do not have the hardware, so it is not tested on a real device."
    }
  ],
  "affected": [
    {
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
      "affectedData": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "programFiles": [
            "drivers/net/wireless/intel/ipw2x00/libipw_rx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "766268b429ae26d8ca599031fa962b0fe4673120",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "d70bdb84cf1782039384c1ffa7a18b0303c286a7",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "400b89217058fac672134a0d4092c8493dadb8ad",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "46aa75291056b6dc5faaf956dffdb3e9662477b0",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "e3025ecdb2057f866c09e059fc1466e81d6f243e",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "14cb425ba1f3a5d849e3bbc3d02d84e0ae195dbb",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "af1b69be19c34e28c0ae54bee954b58cd076969a",
              "versionType": "git",
              "status": "affected"
            },
            {
              "version": "9e8571affd1c54b9638b4ff9844e47aae07310f6",
              "lessThan": "adb7118b7d2cfd7e8213c17d7d2829f353017754",
              "versionType": "git",
              "status": "affected"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "programFiles": [
            "drivers/net/wireless/intel/ipw2x00/libipw_rx.c"
          ],
          "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
          "versions": [
            {
              "version": "2.6.15",
              "status": "affected"
            },
            {
              "version": "0",
              "lessThan": "2.6.15",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.10.271",
              "lessThanOrEqual": "5.10.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "5.15.222",
              "lessThanOrEqual": "5.15.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.1.189",
              "lessThanOrEqual": "6.1.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.6.158",
              "lessThanOrEqual": "6.6.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.12.112",
              "lessThanOrEqual": "6.12.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "6.18.54",
              "lessThanOrEqual": "6.18.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.2.8",
              "lessThanOrEqual": "7.2.*",
              "versionType": "semver",
              "status": "unaffected"
            },
            {
              "version": "7.3",
              "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:N/A:H",
          "baseScore": 7.1,
          "baseSeverity": "HIGH",
          "attackVector": "ADJACENT_NETWORK",
          "attackComplexity": "LOW",
          "privilegesRequired": "NONE",
          "userInteraction": "NONE",
          "scope": "UNCHANGED",
          "confidentialityImpact": "LOW",
          "integrityImpact": "NONE",
          "availabilityImpact": "HIGH"
        },
        "exploitabilityScore": 2.8,
        "impactScore": 4.2
      }
    ]
  },
  "references": [
    {
      "url": "https://git.kernel.org/stable/c/14cb425ba1f3a5d849e3bbc3d02d84e0ae195dbb",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/400b89217058fac672134a0d4092c8493dadb8ad",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/46aa75291056b6dc5faaf956dffdb3e9662477b0",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/766268b429ae26d8ca599031fa962b0fe4673120",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/adb7118b7d2cfd7e8213c17d7d2829f353017754",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/af1b69be19c34e28c0ae54bee954b58cd076969a",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/d70bdb84cf1782039384c1ffa7a18b0303c286a7",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    },
    {
      "url": "https://git.kernel.org/stable/c/e3025ecdb2057f866c09e059fc1466e81d6f243e",
      "source": "416baaa9-dc9f-4396-8d5f-8c081fb06d67"
    }
  ]
}