{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2024-49939",
        "assignerOrgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
        "state": "PUBLISHED",
        "assignerShortName": "Linux",
        "dateReserved": "2024-10-21T12:17:06.043Z",
        "datePublished": "2024-10-21T18:01:59.011Z",
        "dateUpdated": "2026-08-05T11:40:34.332Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "416baaa9-dc9f-4396-8d5f-8c081fb06d67",
                "shortName": "Linux",
                "dateUpdated": "2026-08-05T11:40:34.332Z"
            },
            "descriptions": [
                {
                    "lang": "en",
                    "value": "In the Linux kernel, the following vulnerability has been resolved:\n\nwifi: rtw89: avoid to add interface to list twice when SER\n\nIf SER L2 occurs during the WoWLAN resume flow, the add interface flow\nis triggered by ieee80211_reconfig(). However, due to\nrtw89_wow_resume() return failure, it will cause the add interface flow\nto be executed again, resulting in a double add list and causing a kernel\npanic. Therefore, we have added a check to prevent double adding of the\nlist.\n\nlist_add double add: new=ffff99d6992e2010, prev=ffff99d6992e2010, next=ffff99d695302628.\n------------[ cut here ]------------\nkernel BUG at lib/list_debug.c:37!\ninvalid opcode: 0000 [#1] PREEMPT SMP NOPTI\nCPU: 0 PID: 9 Comm: kworker/0:1 Tainted: G        W  O       6.6.30-02659-gc18865c4dfbd #1 770df2933251a0e3c888ba69d1053a817a6376a7\nHardware name: HP Grunt/Grunt, BIOS Google_Grunt.11031.169.0 06/24/2021\nWorkqueue: events_freezable ieee80211_restart_work [mac80211]\nRIP: 0010:__list_add_valid_or_report+0x5e/0xb0\nCode: c7 74 18 48 39 ce 74 13 b0 01 59 5a 5e 5f 41 58 41 59 41 5a 5d e9 e2 d6 03 00 cc 48 c7 c7 8d 4f 17 83 48 89 c2 e8 02 c0 00 00 <0f> 0b 48 c7 c7 aa 8c 1c 83 e8 f4 bf 00 00 0f 0b 48 c7 c7 c8 bc 12\nRSP: 0018:ffffa91b8007bc50 EFLAGS: 00010246\nRAX: 0000000000000058 RBX: ffff99d6992e0900 RCX: a014d76c70ef3900\nRDX: ffffa91b8007bae8 RSI: 00000000ffffdfff RDI: 0000000000000001\nRBP: ffffa91b8007bc88 R08: 0000000000000000 R09: ffffa91b8007bae0\nR10: 00000000ffffdfff R11: ffffffff83a79800 R12: ffff99d695302060\nR13: ffff99d695300900 R14: ffff99d6992e1be0 R15: ffff99d6992e2010\nFS:  0000000000000000(0000) GS:ffff99d6aac00000(0000) knlGS:0000000000000000\nCS:  0010 DS: 0000 ES: 0000 CR0: 0000000080050033\nCR2: 000078fbdba43480 CR3: 000000010e464000 CR4: 00000000001506f0\nCall Trace:\n <TASK>\n ? __die_body+0x1f/0x70\n ? die+0x3d/0x60\n ? do_trap+0xa4/0x110\n ? __list_add_valid_or_report+0x5e/0xb0\n ? do_error_trap+0x6d/0x90\n ? __list_add_valid_or_report+0x5e/0xb0\n ? handle_invalid_op+0x30/0x40\n ? __list_add_valid_or_report+0x5e/0xb0\n ? exc_invalid_op+0x3c/0x50\n ? asm_exc_invalid_op+0x16/0x20\n ? __list_add_valid_or_report+0x5e/0xb0\n rtw89_ops_add_interface+0x309/0x310 [rtw89_core 7c32b1ee6854761c0321027c8a58c5160e41f48f]\n drv_add_interface+0x5c/0x130 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc]\n ieee80211_reconfig+0x241/0x13d0 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc]\n ? finish_wait+0x3e/0x90\n ? synchronize_rcu_expedited+0x174/0x260\n ? sync_rcu_exp_done_unlocked+0x50/0x50\n ? wake_bit_function+0x40/0x40\n ieee80211_restart_work+0xf0/0x140 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc]\n process_scheduled_works+0x1e5/0x480\n worker_thread+0xea/0x1e0\n kthread+0xdb/0x110\n ? move_linked_works+0x90/0x90\n ? kthread_associate_blkcg+0xa0/0xa0\n ret_from_fork+0x3b/0x50\n ? kthread_associate_blkcg+0xa0/0xa0\n ret_from_fork_asm+0x11/0x20\n </TASK>\nModules linked in: dm_integrity async_xor xor async_tx lz4 lz4_compress zstd zstd_compress zram zsmalloc rfcomm cmac uinput algif_hash algif_skcipher af_alg btusb btrtl iio_trig_hrtimer industrialio_sw_trigger btmtk industrialio_configfs btbcm btintel uvcvideo videobuf2_vmalloc iio_trig_sysfs videobuf2_memops videobuf2_v4l2 videobuf2_common uvc snd_hda_codec_hdmi veth snd_hda_intel snd_intel_dspcfg acpi_als snd_hda_codec industrialio_triggered_buffer kfifo_buf snd_hwdep industrialio i2c_piix4 snd_hda_core designware_i2s ip6table_nat snd_soc_max98357a xt_MASQUERADE xt_cgroup snd_soc_acp_rt5682_mach fuse rtw89_8922ae(O) rtw89_8922a(O) rtw89_pci(O) rtw89_core(O) 8021q mac80211(O) bluetooth ecdh_generic ecc cfg80211 r8152 mii joydev\ngsmi: Log Shutdown Reason 0x03\n---[ end trace 0000000000000000 ]---"
                }
            ],
            "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 - rtw89 is the Realtek 802.11ax driver; the attacker must be within Wi-Fi radio range to inject the deauth/magic-packet/pattern frames that force the WoWLAN wake and to flood the frames that drive the offloaded firmware into the fault/watchdog path feeding rtw89_ser_notify(). This matches the standard Adjacent classification for WiFi frame injection.\nAC:L - The attacker controls both halves — choosing when the resume flow begins via an unauthenticated deauth or magic packet, and injecting traffic to stress the WoWLAN firmware into an L2/watchdog event, with unlimited free retries. Once SER L2 lands in the resume window the double list_add is deterministic, because mac80211 explicitly skips cancel_work_sync(&local->restart_work) when reconfig_due_to_wowlan is set, so no memory-layout race must be won.\nPR:N - No credentials or privileges on the target are required; deauth and WoWLAN wake frames are accepted pre-association from an unauthenticated peer. The entire path is driver-internal suspend/resume and SER machinery with no capability check anywhere along it.\nUI:N - Suspend happens automatically on idle timeout or lid close, and the wake itself is attacker-initiated via the WoWLAN trigger frame. No victim action is needed at exploit time.\nS:U - The corruption is confined to kernel memory and the kernel's own security authority, with no crossing of a VM, IOMMU, or sandbox boundary.\nC:H - On builds without CONFIG_DEBUG_LIST the corrupted list leaves rtwvifs_list.next dangling into the freed sdata/drv_priv allocation after interface removal, and the driver dereferences and copies out of that freed object across ~28 rtw89_for_each_rtwvif() sites. Per kernel scoring guidance a use-after-free is High, since control of the reallocated object yields an arbitrary-read primitive.\nI:H - The same stale list head gives a write primitive — rtw89_traffic_stats_calc(rtwdev, &rtwvif->stats), rtw89_mac_vif_init(), and ser_reset_vif() all write into the freed object — and the corrupted list_head is itself an attacker-groomable pointer pair on a readily sprayed multi-KB slab allocation.\nA:H - The commit documents a hard kernel panic (BUG() at lib/list_debug.c:37) on hardened builds; on other builds the self-referential list makes rtw89_for_each_rtwvif() loop forever while holding rtwdev->mutex, producing a hard lockup. Either outcome takes the machine down."
                        }
                    ]
                }
            ],
            "affected": [
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "unaffected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/wireless/realtek/rtw89/mac80211.c",
                        "drivers/net/wireless/realtek/rtw89/util.h"
                    ],
                    "versions": [
                        {
                            "version": "e3ec7017f6a20d12ddd9fe23d345ebb7b8c104dd",
                            "lessThan": "b04650b5a9990cf5c0de480e62c68199f1396a04",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "e3ec7017f6a20d12ddd9fe23d345ebb7b8c104dd",
                            "lessThan": "fdc73f2cfbe897f4733156df211d79ced649b23c",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "e3ec7017f6a20d12ddd9fe23d345ebb7b8c104dd",
                            "lessThan": "37c319503023de49a4c87301c8998c8d928112cb",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "e3ec7017f6a20d12ddd9fe23d345ebb7b8c104dd",
                            "lessThan": "490eddc836b2a6ec286e5df14bed4c7cf5e1f475",
                            "status": "affected",
                            "versionType": "git"
                        },
                        {
                            "version": "e3ec7017f6a20d12ddd9fe23d345ebb7b8c104dd",
                            "lessThan": "7dd5d2514a8ea58f12096e888b0bd050d7eae20a",
                            "status": "affected",
                            "versionType": "git"
                        }
                    ]
                },
                {
                    "product": "Linux",
                    "vendor": "Linux",
                    "defaultStatus": "affected",
                    "repo": "https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git",
                    "programFiles": [
                        "drivers/net/wireless/realtek/rtw89/mac80211.c",
                        "drivers/net/wireless/realtek/rtw89/util.h"
                    ],
                    "versions": [
                        {
                            "version": "5.16",
                            "status": "affected"
                        },
                        {
                            "version": "0",
                            "lessThan": "5.16",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.1.120",
                            "lessThanOrEqual": "6.1.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.6.55",
                            "lessThanOrEqual": "6.6.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.10.14",
                            "lessThanOrEqual": "6.10.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.11.3",
                            "lessThanOrEqual": "6.11.*",
                            "status": "unaffected",
                            "versionType": "semver"
                        },
                        {
                            "version": "6.12",
                            "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.16",
                                    "versionEndExcluding": "6.1.120"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.16",
                                    "versionEndExcluding": "6.6.55"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.16",
                                    "versionEndExcluding": "6.10.14"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.16",
                                    "versionEndExcluding": "6.11.3"
                                },
                                {
                                    "vulnerable": true,
                                    "criteria": "cpe:2.3:o:linux:linux_kernel:*:*:*:*:*:*:*:*",
                                    "versionStartIncluding": "5.16",
                                    "versionEndExcluding": "6.12"
                                }
                            ]
                        }
                    ]
                }
            ],
            "references": [
                {
                    "url": "https://git.kernel.org/stable/c/b04650b5a9990cf5c0de480e62c68199f1396a04"
                },
                {
                    "url": "https://git.kernel.org/stable/c/fdc73f2cfbe897f4733156df211d79ced649b23c"
                },
                {
                    "url": "https://git.kernel.org/stable/c/37c319503023de49a4c87301c8998c8d928112cb"
                },
                {
                    "url": "https://git.kernel.org/stable/c/490eddc836b2a6ec286e5df14bed4c7cf5e1f475"
                },
                {
                    "url": "https://git.kernel.org/stable/c/7dd5d2514a8ea58f12096e888b0bd050d7eae20a"
                }
            ],
            "title": "wifi: rtw89: avoid to add interface to list twice when SER",
            "x_generator": {
                "engine": "bippy-1.2.0"
            }
        },
        "adp": [
            {
                "metrics": [
                    {
                        "other": {
                            "type": "ssvc",
                            "content": {
                                "id": "CVE-2024-49939",
                                "role": "CISA Coordinator",
                                "options": [
                                    {
                                        "Exploitation": "none"
                                    },
                                    {
                                        "Automatable": "no"
                                    },
                                    {
                                        "Technical Impact": "partial"
                                    }
                                ],
                                "version": "2.0.3",
                                "timestamp": "2024-10-22T13:38:00.571603Z"
                            }
                        }
                    }
                ],
                "title": "CISA ADP Vulnrichment",
                "providerMetadata": {
                    "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
                    "shortName": "CISA-ADP",
                    "dateUpdated": "2024-10-22T13:38:50.803Z"
                }
            },
            {
                "title": "CVE Program Container",
                "references": [
                    {
                        "url": "https://lists.debian.org/debian-lts-announce/2025/03/msg00001.html"
                    }
                ],
                "providerMetadata": {
                    "orgId": "af854a3a-2127-422b-91ae-364da2661108",
                    "shortName": "CVE",
                    "dateUpdated": "2025-11-03T20:42:13.717Z"
                }
            }
        ]
    }
}