{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2025-38643",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2025-04-16T04:51:24.030Z",
        "datePublished": "2025-08-22T16:00:49.172Z",
        "dateUpdated": "2026-08-05T12:03:39.579Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T12:03:39.579Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: cfg80211: Add missing lock in cfg80211_check_and_end_cac()\n\nCallers of wdev_chandef() must hold the wiphy mutex.\n\nBut the worker cfg80211_propagate_cac_done_wk() never takes the lock.\nWhich triggers the warning below with the mesh_peer_connected_dfs\ntest from hostapd and not (yet) released mac80211 code changes:\n\nWARNING: CPU: 0 PID: 495 at net/wireless/chan.c:1552 wdev_chandef+0x60/0x165\nModules linked in:\nCPU: 0 UID: 0 PID: 495 Comm: kworker/u4:2 Not tainted 6.14.0-rc5-wt-g03960e6f9d47 #33 13c287eeabfe1efea01c0bcc863723ab082e17cf\nWorkqueue: cfg80211 cfg80211_propagate_cac_done_wk\nStack:\n 00000000 00000001 ffffff00 6093267c\n 00000000 6002ec30 6d577c50 60037608\n 00000000 67e8d108 6063717b 00000000\nCall Trace:\n [<6002ec30>] ? _printk+0x0/0x98\n [<6003c2b3>] show_stack+0x10e/0x11a\n [<6002ec30>] ? _printk+0x0/0x98\n [<60037608>] dump_stack_lvl+0x71/0xb8\n [<6063717b>] ? wdev_chandef+0x60/0x165\n [<6003766d>] dump_stack+0x1e/0x20\n [<6005d1b7>] __warn+0x101/0x20f\n [<6005d3a8>] warn_slowpath_fmt+0xe3/0x15d\n [<600b0c5c>] ? mark_lock.part.0+0x0/0x4ec\n [<60751191>] ? __this_cpu_preempt_check+0x0/0x16\n [<600b11a2>] ? mark_held_locks+0x5a/0x6e\n [<6005d2c5>] ? warn_slowpath_fmt+0x0/0x15d\n [<60052e53>] ? unblock_signals+0x3a/0xe7\n [<60052f2d>] ? um_set_signals+0x2d/0x43\n [<60751191>] ? __this_cpu_preempt_check+0x0/0x16\n [<607508b2>] ? lock_is_held_type+0x207/0x21f\n [<6063717b>] wdev_chandef+0x60/0x165\n [<605f89b4>] regulatory_propagate_dfs_state+0x247/0x43f\n [<60052f00>] ? um_set_signals+0x0/0x43\n [<605e6bfd>] cfg80211_propagate_cac_done_wk+0x3a/0x4a\n [<6007e460>] process_scheduled_works+0x3bc/0x60e\n [<6007d0ec>] ? move_linked_works+0x4d/0x81\n [<6007d120>] ? assign_work+0x0/0xaa\n [<6007f81f>] worker_thread+0x220/0x2dc\n [<600786ef>] ? set_pf_worker+0x0/0x57\n [<60087c96>] ? to_kthread+0x0/0x43\n [<6008ab3c>] kthread+0x2d3/0x2e2\n [<6007f5ff>] ? worker_thread+0x0/0x2dc\n [<6006c05b>] ? calculate_sigpending+0x0/0x56\n [<6003b37d>] new_thread_handler+0x4a/0x64\nirq event stamp: 614611\nhardirqs last  enabled at (614621): [<00000000600bc96b>] __up_console_sem+0x82/0xaf\nhardirqs last disabled at (614630): [<00000000600bc92c>] __up_console_sem+0x43/0xaf\nsoftirqs last  enabled at (614268): [<00000000606c55c6>] __ieee80211_wake_queue+0x933/0x985\nsoftirqs last disabled at (614266): [<00000000606c52d6>] __ieee80211_wake_queue+0x643/0x985"
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 8.8,
                        "baseSeverity": "HIGH"
                    },
                    "scenarios": [
                        {
                            "lang": "en",
                            "value": "AV:A - The vulnerable worker is driven by DFS events on the 802.11 stack — radar detection, which an attacker in RF range can force on demand by transmitting DFS radar pulse patterns, and CAC completion during normal AP/mesh operation; the racing side is driven by remote peer activity (mesh peering, association, channel switch) on a second radio. This is same-RF-segment reach, matching the WiFi = Adjacent classification.\nAC:L - The attacker controls both sides of the race — radar-event injection can be repeated indefinitely to re-arm the unlocked worker while over-the-air traffic keeps the second wiphy busy in mutex-protected chanctx work. The guaranteed lockdep WARN in wdev_chandef() needs no race at all, only the multi-radio DFS configuration that is standard on AP/mesh hardware.\nPR:N - No credentials or local account are needed; radar pulse injection and mesh/association frames require no authentication to the target, and CAC-finished events occur during ordinary AP operation. The attacker holds no privileges on the affected system.\nUI:N - No victim action is required — the worker runs automatically from the cfg80211 workqueue whenever a DFS radar or CAC-finished event propagates to another wiphy.\nS:U - The corruption and crash are confined to the kernel's own security authority; no VM, IOMMU, or sandbox boundary is crossed.\nC:H - Running __ieee80211_link_release_channel() without the wiphy mutex races chanctx refcounting and can free a struct ieee80211_chanctx still referenced by another link, yielding a use-after-free on a heap object whose contents are influenceable via crafted channel parameters — a UAF read primitive over kernel memory.\nI:H - The same unsynchronized free/reassign of chanctx state gives a write-after-free into a reallocated slab object, and the unlocked mutation of link chanctx pointers and CAC state corrupts wiphy-mutex-protected structures — memory corruption exploitable for control-flow hijack.\nA:H - The path unconditionally hits the lockdep_assert_wiphy() WARN in wdev_chandef(), which panics on panic_on_warn systems, and the chanctx refcount/list corruption and use-after-free produce kernel oopses and panics on the affected AP."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/wireless/reg.c"
                    ],
                    "versions": [
                        {
                            "version": "26ec17a1dc5ecdd8d91aba63ead6f8b5ad5dea0d",
                            "lessThan": "defe9ce121160788547e8e6ec4438ad8a14f40dd",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "26ec17a1dc5ecdd8d91aba63ead6f8b5ad5dea0d",
                            "lessThan": "b3d24038eb775f2f7a1dfef58d8e1dc444a12820",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "26ec17a1dc5ecdd8d91aba63ead6f8b5ad5dea0d",
                            "lessThan": "4a63523d3541eef4cf504a9682e6fbe94ffe79a6",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "26ec17a1dc5ecdd8d91aba63ead6f8b5ad5dea0d",
                            "lessThan": "7022df2248c08c6f75a01714163ac902333bf3db",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "26ec17a1dc5ecdd8d91aba63ead6f8b5ad5dea0d",
                            "lessThan": "dbce810607726408f889d3358f4780fd1436861e",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "26ec17a1dc5ecdd8d91aba63ead6f8b5ad5dea0d",
                            "lessThan": "2c5dee15239f3f3e31aa5c8808f18996c039e2c1",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "2dbb6faebb94d6d5ae87e5ea6be9280c366393e1",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "a4f85674e4693904ade7cbf6722d0d105d8062d8",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "e233cbaf8ecc5859f0417dd53899da4edb477991",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "4.14.170",
                            "lessThan": "4.15",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "4.19.102",
                            "lessThan": "4.20",
                            "status": "affected",
                            "versionType": "semver"
                        },
                        {
                            "version": "5.4.18",
                            "lessThan": "5.5",
                            "status": "affected",
                            "versionType": "semver"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "net/wireless/reg.c"
                    ],
                    "versions": [
                        {
                            "version": "5.5",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.5",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.164",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.118",
                            "lessThanOrEqual": "6.6.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.12.57",
                            "lessThanOrEqual": "6.12.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.15.10",
                            "lessThanOrEqual": "6.15.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.16.1",
                            "lessThanOrEqual": "6.16.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.17",
                            "lessThanOrEqual": "*",
                            "status": "unaffected",
                            "versionType": "original_commit_for_fix"
                        }
                    ]
                }
            ],
            "cpeApplicability": [
                {
                    "nodes": [
                        {
                            "operator": "OR",
                            "negate": false,
                            "cpeMatch": [
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.5",
                                    "versionEndExcluding": "6.1.164"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.5",
                                    "versionEndExcluding": "6.6.118"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.5",
                                    "versionEndExcluding": "6.12.57"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.5",
                                    "versionEndExcluding": "6.15.10"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.5",
                                    "versionEndExcluding": "6.16.1"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.5",
                                    "versionEndExcluding": "6.17"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.14.170"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "4.19.102"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.4.18"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/defe9ce121160788547e8e6ec4438ad8a14f40dd"
                },
                {
                    "url": "https://git.kernel.org/stable/c/b3d24038eb775f2f7a1dfef58d8e1dc444a12820"
                },
                {
                    "url": "https://git.kernel.org/stable/c/4a63523d3541eef4cf504a9682e6fbe94ffe79a6"
                },
                {
                    "url": "https://git.kernel.org/stable/c/7022df2248c08c6f75a01714163ac902333bf3db"
                },
                {
                    "url": "https://git.kernel.org/stable/c/dbce810607726408f889d3358f4780fd1436861e"
                },
                {
                    "url": "https://git.kernel.org/stable/c/2c5dee15239f3f3e31aa5c8808f18996c039e2c1"
                }
            ],
            "title": "wifi: cfg80211: Add missing lock in cfg80211_check_and_end_cac()",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        }
    }
}