{
  "schemaVersion": 1,
  "attribution": [
    {
      "source": "CISA Known Exploited Vulnerabilities",
      "url": "https://www.cisa.gov/known-exploited-vulnerabilities-catalog",
      "licence": "US government work"
    },
    {
      "source": "GitHub Advisory Database",
      "url": "https://github.com/advisories",
      "licence": "CC BY 4.0"
    },
    {
      "source": "Have I Been Pwned",
      "url": "https://haveibeenpwned.com/",
      "licence": "CC BY 4.0"
    },
    {
      "source": "CVE Program (CVE records)",
      "url": "https://www.cve.org/Legal/TermsOfUse",
      "licence": "CVE Terms of Use",
      "notice": "Copyright © 1999-2026, The MITRE Corporation. CVE is a trademark and the CVE logo is a registered trademark of The MITRE Corporation.",
      "terms": "CVE Usage: MITRE hereby grants you a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute Common Vulnerabilities and Exposures (CVE™). Any copy you make for such purposes is authorized provided that you reproduce MITRE's copyright designation and this license in any such copy."
    },
    {
      "source": "FIRST EPSS",
      "url": "https://www.first.org/epss/",
      "licence": "free to use; FIRST requests attribution"
    }
  ],
  "record": {
    "id": "CVE-2026-74489",
    "sourceURL": "https://www.cve.org/CVERecord?id=CVE-2026-74489",
    "idYear": 2026,
    "status": "PUBLISHED",
    "publishedAt": "2026-08-15T12:27:19.505Z",
    "updatedAt": "2026-10-16T19:05:49.622Z",
    "importedAt": "2026-10-24T01:58:30.346Z",
    "snapshot": {
      "id": "cve_2026-10-24_midnight_baseline",
      "at": "2026-10-24T00:00:00.000Z",
      "source": "https://github.com/CVEProject/cvelistV5/releases/tag/cve_2026-10-24_0100Z"
    },
    "facts": {
      "title": "wifi: mac80211: fix tid_tx use-after-free on BA session stop",
      "summary": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: mac80211: fix tid_tx use-after-free on BA session stop\n\nieee80211_stop_tx_ba_cb() hands tid_tx to kfree_rcu() through\nieee80211_remove_tid_tx(), and then reads tid_tx->ndp after dropping\nsta->lock:\n\n\tieee80211_remove_tid_tx(sta, tid);\t/* kfree_rcu(tid_tx, rcu_head) */\n\t...\n\tspin_unlock_bh(&sta->lock);\n\n\tif (start_txq)\n\t\tieee80211_agg_start_txq(sta, tid, false);\n\n\tif (send_delba)\n\t\tieee80211_send_delba(..., tid_tx->ndp);\n\nThat read is not covered by an RCU read-side critical section, and it runs\nin preemptible process context: both callers hold the wiphy mutex, reaching\nit either from the ieee80211_ba_session_work() wiphy work or from\nieee80211_sta_tear_down_BA_sessions() during station teardown.\nSoftirqs can run in that window too, both from the local_bh_enable() that\nends ieee80211_agg_start_txq() and from any interrupt exit, so the RCU\ncallback can free tid_tx before the read.\n\nDriving the function from a test module with the grace period forced into\nthat window, KASAN reports the read, and the free arrives on the ordinary\nRCU softirq path:\n\n  BUG: KASAN: slab-use-after-free in ieee80211_stop_tx_ba_cb+0x3cd/0x400\n  Read of size 1 at addr ffff888002b9f52e by task kworker/0:1/10\n  [...]\n  Freed by task 57:\n   __kasan_slab_free+0x47/0x70\n   __rcu_free_sheaf_prepare+0x70/0x250\n   rcu_free_sheaf_nobarn+0x18/0x40\n   rcu_core+0x426/0x1310\n   handle_softirqs+0x144/0x590\n   __irq_exit_rcu+0xea/0x150\n   irq_exit_rcu+0x9/0x20\n   sysvec_apic_timer_interrupt+0x6b/0x80\n   asm_sysvec_apic_timer_interrupt+0x1a/0x20\n\nsend_delba is only set when tx_stop is set, which happens for\nAGG_STOP_LOCAL_REQUEST alone, so this is reached on local teardown -\nsession idle timeout, PTK rekey, suspend, HW reconfig - and not from a\npeer's DELBA.\n\nRead ndp into a local before the session is freed, while sta->lock is still\nheld. tid_tx->ndp has a single writer, in\nieee80211_tx_ba_session_handle_start(), which cannot run concurrently here:\nboth paths are serialised by the wiphy mutex, and the session is already\nmarked HT_AGG_STATE_STOPPING at this point. tid_tx->ndp is also the only\ntid_tx dereference left after ieee80211_remove_tid_tx() in this function.\n\n[move/change the comment a bit to be more general not just on ndp,\n initialize ndp directly]",
      "affected": [
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "unaffected",
          "versions": [
            {
              "version": "98acd4c1d9f7dc9c426e840c16e81b57315ff84b",
              "status": "affected",
              "versionType": "git",
              "lessThan": "09fc36eec7841cdf732f4db39855e0c73bd075cc"
            },
            {
              "version": "98acd4c1d9f7dc9c426e840c16e81b57315ff84b",
              "status": "affected",
              "versionType": "git",
              "lessThan": "2f067f5a450ea07efd249142a11d940a068fe29c"
            }
          ]
        },
        {
          "vendor": "Linux",
          "product": "Linux",
          "defaultStatus": "affected",
          "versions": [
            {
              "version": "7.1",
              "status": "affected"
            },
            {
              "version": "0",
              "status": "unaffected",
              "versionType": "semver",
              "lessThan": "7.1"
            },
            {
              "version": "7.1.8",
              "status": "unaffected",
              "versionType": "semver",
              "lessThanOrEqual": "7.1.*"
            },
            {
              "version": "7.2",
              "status": "unaffected",
              "versionType": "original_commit_for_fix",
              "lessThanOrEqual": "*"
            }
          ]
        }
      ]
    }
  }
}