{"api_version":"1","generated_at":"2026-04-23T10:58:05+00:00","cve":"CVE-2026-23281","urls":{"html":"https://cve.report/CVE-2026-23281","api":"https://cve.report/api/cve/CVE-2026-23281.json","docs":"https://cve.report/api","cve_org":"https://www.cve.org/CVERecord?id=CVE-2026-23281","nvd":"https://nvd.nist.gov/vuln/detail/CVE-2026-23281"},"summary":{"title":"wifi: libertas: fix use-after-free in lbs_free_adapter()","description":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: libertas: fix use-after-free in lbs_free_adapter()\n\nThe lbs_free_adapter() function uses timer_delete() (non-synchronous)\nfor both command_timer and tx_lockup_timer before the structure is\nfreed. This is incorrect because timer_delete() does not wait for\nany running timer callback to complete.\n\nIf a timer callback is executing when lbs_free_adapter() is called,\nthe callback will access freed memory since lbs_cfg_free() frees the\ncontaining structure immediately after lbs_free_adapter() returns.\n\nBoth timer callbacks (lbs_cmd_timeout_handler and lbs_tx_lockup_handler)\naccess priv->driver_lock, priv->cur_cmd, priv->dev, and other fields,\nwhich would all be use-after-free violations.\n\nUse timer_delete_sync() instead to ensure any running timer callback\nhas completed before returning.\n\nThis bug was introduced in commit 8f641d93c38a (\"libertas: detect TX\nlockups and reset hardware\") where del_timer() was used instead of\ndel_timer_sync() in the cleanup path. The command_timer has had the\nsame issue since the driver was first written.","state":"PUBLISHED","assigner":"Linux","published_at":"2026-03-25 11:16:22","updated_at":"2026-04-18 09:16:16"},"problem_types":[],"metrics":[],"references":[{"url":"https://git.kernel.org/stable/c/3c5c818c78b03a1725f3dcd566865c77b48dd3a6","name":"https://git.kernel.org/stable/c/3c5c818c78b03a1725f3dcd566865c77b48dd3a6","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/3f9dec4a6d95d7f1f5e9e9dfdfa173c053bba8dc","name":"https://git.kernel.org/stable/c/3f9dec4a6d95d7f1f5e9e9dfdfa173c053bba8dc","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/a9f55b14486426d907459bced5825a25063bd922","name":"https://git.kernel.org/stable/c/a9f55b14486426d907459bced5825a25063bd922","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/d0155fe68f31b339961cf2d4f92937d57e9384e6","name":"https://git.kernel.org/stable/c/d0155fe68f31b339961cf2d4f92937d57e9384e6","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/09f3c30ab3b1371eaf9676a1b8add57bca763083","name":"https://git.kernel.org/stable/c/09f3c30ab3b1371eaf9676a1b8add57bca763083","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/ed7d30f90b77f73a47498686ede83f622b7e4f0d","name":"https://git.kernel.org/stable/c/ed7d30f90b77f73a47498686ede83f622b7e4f0d","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/b15e0fa7adb4de3a03aee9e6fc4d83e5cf0a65e4","name":"https://git.kernel.org/stable/c/b15e0fa7adb4de3a03aee9e6fc4d83e5cf0a65e4","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://git.kernel.org/stable/c/03cc8f90d0537fcd4985c3319b4fafbf2e3fb1f0","name":"https://git.kernel.org/stable/c/03cc8f90d0537fcd4985c3319b4fafbf2e3fb1f0","refsource":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","tags":[],"title":"","mime":"","httpstatus":"","archivestatus":"0"},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-23281","name":"CVE Program record","refsource":"CVE.ORG","tags":["canonical"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-23281","name":"NVD vulnerability detail","refsource":"NVD","tags":["canonical","analysis"]}],"affected":[{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b b15e0fa7adb4de3a03aee9e6fc4d83e5cf0a65e4 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b 09f3c30ab3b1371eaf9676a1b8add57bca763083 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b 3f9dec4a6d95d7f1f5e9e9dfdfa173c053bba8dc git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b 3c5c818c78b03a1725f3dcd566865c77b48dd3a6 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b d0155fe68f31b339961cf2d4f92937d57e9384e6 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b ed7d30f90b77f73a47498686ede83f622b7e4f0d git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b a9f55b14486426d907459bced5825a25063bd922 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 954ee164f4f4598afc172c0ec3865d0352e55a0b 03cc8f90d0537fcd4985c3319b4fafbf2e3fb1f0 git","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"affected 2.6.24","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 2.6.24 semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.10.253 5.10.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 5.15.203 5.15.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.1.167 6.1.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.6.130 6.6.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.12.78 6.12.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.18.17 6.18.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 6.19.7 6.19.* semver","platforms":[]},{"source":"CNA","vendor":"Linux","product":"Linux","version":"unaffected 7.0 * original_commit_for_fix","platforms":[]}],"timeline":[],"solutions":[],"workarounds":[],"exploits":[],"credits":[],"nvd_cpes":[],"vendor_comments":[],"enrichments":{"kev":null,"epss":{"cve_year":"2026","cve_id":"23281","cve":"CVE-2026-23281","epss":"0.000320000","percentile":"0.092520000","score_date":"2026-04-21","updated_at":"2026-04-22 00:07:40"},"legacy_qids":[]},"source_records":{"cve_program":{"containers":{"cna":{"affected":[{"defaultStatus":"unaffected","product":"Linux","programFiles":["drivers/net/wireless/marvell/libertas/main.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"lessThan":"b15e0fa7adb4de3a03aee9e6fc4d83e5cf0a65e4","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"},{"lessThan":"09f3c30ab3b1371eaf9676a1b8add57bca763083","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"},{"lessThan":"3f9dec4a6d95d7f1f5e9e9dfdfa173c053bba8dc","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"},{"lessThan":"3c5c818c78b03a1725f3dcd566865c77b48dd3a6","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"},{"lessThan":"d0155fe68f31b339961cf2d4f92937d57e9384e6","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"},{"lessThan":"ed7d30f90b77f73a47498686ede83f622b7e4f0d","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"},{"lessThan":"a9f55b14486426d907459bced5825a25063bd922","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"},{"lessThan":"03cc8f90d0537fcd4985c3319b4fafbf2e3fb1f0","status":"affected","version":"954ee164f4f4598afc172c0ec3865d0352e55a0b","versionType":"git"}]},{"defaultStatus":"affected","product":"Linux","programFiles":["drivers/net/wireless/marvell/libertas/main.c"],"repo":"https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git","vendor":"Linux","versions":[{"status":"affected","version":"2.6.24"},{"lessThan":"2.6.24","status":"unaffected","version":"0","versionType":"semver"},{"lessThanOrEqual":"5.10.*","status":"unaffected","version":"5.10.253","versionType":"semver"},{"lessThanOrEqual":"5.15.*","status":"unaffected","version":"5.15.203","versionType":"semver"},{"lessThanOrEqual":"6.1.*","status":"unaffected","version":"6.1.167","versionType":"semver"},{"lessThanOrEqual":"6.6.*","status":"unaffected","version":"6.6.130","versionType":"semver"},{"lessThanOrEqual":"6.12.*","status":"unaffected","version":"6.12.78","versionType":"semver"},{"lessThanOrEqual":"6.18.*","status":"unaffected","version":"6.18.17","versionType":"semver"},{"lessThanOrEqual":"6.19.*","status":"unaffected","version":"6.19.7","versionType":"semver"},{"lessThanOrEqual":"*","status":"unaffected","version":"7.0","versionType":"original_commit_for_fix"}]}],"cpeApplicability":[{"nodes":[{"cpeMatch":[{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.10.253","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"5.15.203","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.1.167","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.6.130","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.12.78","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.18.17","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"6.19.7","versionStartIncluding":"2.6.24","vulnerable":true},{"criteria":"cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*","versionEndExcluding":"7.0","versionStartIncluding":"2.6.24","vulnerable":true}],"negate":false,"operator":"OR"}]}],"descriptions":[{"lang":"en","value":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: libertas: fix use-after-free in lbs_free_adapter()\n\nThe lbs_free_adapter() function uses timer_delete() (non-synchronous)\nfor both command_timer and tx_lockup_timer before the structure is\nfreed. This is incorrect because timer_delete() does not wait for\nany running timer callback to complete.\n\nIf a timer callback is executing when lbs_free_adapter() is called,\nthe callback will access freed memory since lbs_cfg_free() frees the\ncontaining structure immediately after lbs_free_adapter() returns.\n\nBoth timer callbacks (lbs_cmd_timeout_handler and lbs_tx_lockup_handler)\naccess priv->driver_lock, priv->cur_cmd, priv->dev, and other fields,\nwhich would all be use-after-free violations.\n\nUse timer_delete_sync() instead to ensure any running timer callback\nhas completed before returning.\n\nThis bug was introduced in commit 8f641d93c38a (\"libertas: detect TX\nlockups and reset hardware\") where del_timer() was used instead of\ndel_timer_sync() in the cleanup path. The command_timer has had the\nsame issue since the driver was first written."}],"providerMetadata":{"dateUpdated":"2026-04-18T08:57:36.792Z","orgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","shortName":"Linux"},"references":[{"url":"https://git.kernel.org/stable/c/b15e0fa7adb4de3a03aee9e6fc4d83e5cf0a65e4"},{"url":"https://git.kernel.org/stable/c/09f3c30ab3b1371eaf9676a1b8add57bca763083"},{"url":"https://git.kernel.org/stable/c/3f9dec4a6d95d7f1f5e9e9dfdfa173c053bba8dc"},{"url":"https://git.kernel.org/stable/c/3c5c818c78b03a1725f3dcd566865c77b48dd3a6"},{"url":"https://git.kernel.org/stable/c/d0155fe68f31b339961cf2d4f92937d57e9384e6"},{"url":"https://git.kernel.org/stable/c/ed7d30f90b77f73a47498686ede83f622b7e4f0d"},{"url":"https://git.kernel.org/stable/c/a9f55b14486426d907459bced5825a25063bd922"},{"url":"https://git.kernel.org/stable/c/03cc8f90d0537fcd4985c3319b4fafbf2e3fb1f0"}],"title":"wifi: libertas: fix use-after-free in lbs_free_adapter()","x_generator":{"engine":"bippy-1.2.0"}}},"cveMetadata":{"assignerOrgId":"416baaa9-dc9f-4396-8d5f-8c081fb06d67","assignerShortName":"Linux","cveId":"CVE-2026-23281","datePublished":"2026-03-25T10:26:41.844Z","dateReserved":"2026-01-13T15:37:45.992Z","dateUpdated":"2026-04-18T08:57:36.792Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"nvd":{"publishedDate":"2026-03-25 11:16:22","lastModifiedDate":"2026-04-18 09:16:16","problem_types":[],"metrics":[],"configurations":[]},"legacy_mitre":{"record":{"CveYear":"2026","CveId":"23281","Ordinal":"1","Title":"wifi: libertas: fix use-after-free in lbs_free_adapter()","CVE":"CVE-2026-23281","Year":"2026"},"notes":[{"CveYear":"2026","CveId":"23281","Ordinal":"1","NoteData":"In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: libertas: fix use-after-free in lbs_free_adapter()\n\nThe lbs_free_adapter() function uses timer_delete() (non-synchronous)\nfor both command_timer and tx_lockup_timer before the structure is\nfreed. This is incorrect because timer_delete() does not wait for\nany running timer callback to complete.\n\nIf a timer callback is executing when lbs_free_adapter() is called,\nthe callback will access freed memory since lbs_cfg_free() frees the\ncontaining structure immediately after lbs_free_adapter() returns.\n\nBoth timer callbacks (lbs_cmd_timeout_handler and lbs_tx_lockup_handler)\naccess priv->driver_lock, priv->cur_cmd, priv->dev, and other fields,\nwhich would all be use-after-free violations.\n\nUse timer_delete_sync() instead to ensure any running timer callback\nhas completed before returning.\n\nThis bug was introduced in commit 8f641d93c38a (\"libertas: detect TX\nlockups and reset hardware\") where del_timer() was used instead of\ndel_timer_sync() in the cleanup path. The command_timer has had the\nsame issue since the driver was first written.","Type":"Description","Title":"wifi: libertas: fix use-after-free in lbs_free_adapter()"}]}}}