Cloudanix VulnDB

CVE-2024-49939

None

CVSS

—

EPSS

0.3%

Published

Oct 21, 2024

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A flaw in certain wireless network drivers can cause computers to crash unexpectedly when waking from sleep under specific error conditions.

Exploitation
Other
Attacker needs
Other
Complexity
High
Impact
Denial Of Service
Component
OS kernel
Class
Race Condition
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Logic error in rtw89 driver allows ieee80211_reconfig to invoke add_interface twice during failed WoWLAN resume after SER L2, triggering __list_add_valid_or_report BUG and kernel panic.

Why it matters to the business

Systems using the affected wifi driver can experience sudden crashes and restarts during resume from suspend with wireless, causing downtime and loss of connectivity until reboot.

How an attack unfolds

An attacker with local access or the ability to influence suspend/resume cycles on affected hardware can trigger SER L2 conditions during WoWLAN resume, causing the double list_add and subsequent kernel panic; listed threat actors have exploited similar Linux kernel resource and bounds issues in campaigns.

How to fix it

Update to fixed kernel versions containing the added double-add check in rtw89_wow_resume and rtw89_ops_add_interface paths; for listed packages apply nokogiri 1.8.3 and loofah 2.2.1 where applicable in dependent environments.

How to confirm the fix worked

Confirm kernel builds include the list_add guard; test WoWLAN resume under simulated SER L2; verify absence of __list_add_valid_or_report crash in dmesg after resume cycles.

Typical attack path

  1. Trigger WoWLAN suspend/resume sequence on rtw89 hardware
  2. Induce SER L2 error during resume
  3. Cause ieee80211_reconfig to call add_interface twice
  4. Hit list debug check resulting in kernel BUG and panic

How to detect it

Search kernel logs for 'list_add double add', 'kernel BUG at lib/list_debug.c', rtw89_ops_add_interface, and ieee80211_restart_work traces; correlate with WoWLAN resume events and SER L2 occurrences.

  • list_add double add: new=
  • kernel BUG at lib/list_debug.c:37
  • rtw89_ops_add_interface
  • __list_add_valid_or_report+0x5e/0xb0

What your security team should do

  • Prioritize kernel updates on all systems with rtw89 wifi hardware
  • Monitor for kernel panics referencing list_debug.c during suspend/resume
  • Apply fixed versions nokogiri 1.8.3 and loofah 2.2.1 to any dependent Ruby environments
  • Disable WoWLAN if immediate patching is not feasible

The record

In the Linux kernel, the following vulnerability has been resolved: wifi: rtw89: avoid to add interface to list twice when SER If SER L2 occurs during the WoWLAN resume flow, the add interface flow is triggered by ieee80211_reconfig(). However, due to rtw89_wow_resume() return failure, it will cause the add interface flow to be executed again, resulting in a double add list and causing a kernel panic. Therefore, we have added a check to prevent double adding of the list. list_add double add: new=ffff99d6992e2010, prev=ffff99d6992e2010, next=ffff99d695302628. ------------[ cut here ]------------ kernel BUG at lib/list_debug.c:37! invalid opcode: 0000 [#1] PREEMPT SMP NOPTI CPU: 0 PID: 9 Comm: kworker/0:1 Tainted: G W O 6.6.30-02659-gc18865c4dfbd #1 770df2933251a0e3c888ba69d1053a817a6376a7 Hardware name: HP Grunt/Grunt, BIOS Google_Grunt.11031.169.0 06/24/2021 Workqueue: events_freezable ieee80211_restart_work [mac80211] RIP: 0010:__list_add_valid_or_report+0x5e/0xb0 Code: 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 RSP: 0018:ffffa91b8007bc50 EFLAGS: 00010246 RAX: 0000000000000058 RBX: ffff99d6992e0900 RCX: a014d76c70ef3900 RDX: ffffa91b8007bae8 RSI: 00000000ffffdfff RDI: 0000000000000001 RBP: ffffa91b8007bc88 R08: 0000000000000000 R09: ffffa91b8007bae0 R10: 00000000ffffdfff R11: ffffffff83a79800 R12: ffff99d695302060 R13: ffff99d695300900 R14: ffff99d6992e1be0 R15: ffff99d6992e2010 FS: 0000000000000000(0000) GS:ffff99d6aac00000(0000) knlGS:0000000000000000 CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033 CR2: 000078fbdba43480 CR3: 000000010e464000 CR4: 00000000001506f0 Call Trace: <TASK> ? __die_body+0x1f/0x70 ? die+0x3d/0x60 ? do_trap+0xa4/0x110 ? __list_add_valid_or_report+0x5e/0xb0 ? do_error_trap+0x6d/0x90 ? __list_add_valid_or_report+0x5e/0xb0 ? handle_invalid_op+0x30/0x40 ? __list_add_valid_or_report+0x5e/0xb0 ? exc_invalid_op+0x3c/0x50 ? asm_exc_invalid_op+0x16/0x20 ? __list_add_valid_or_report+0x5e/0xb0 rtw89_ops_add_interface+0x309/0x310 [rtw89_core 7c32b1ee6854761c0321027c8a58c5160e41f48f] drv_add_interface+0x5c/0x130 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc] ieee80211_reconfig+0x241/0x13d0 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc] ? finish_wait+0x3e/0x90 ? synchronize_rcu_expedited+0x174/0x260 ? sync_rcu_exp_done_unlocked+0x50/0x50 ? wake_bit_function+0x40/0x40 ieee80211_restart_work+0xf0/0x140 [mac80211 83e989e6e616bd5b4b8a2b0a9f9352a2c385a3bc] process_scheduled_works+0x1e5/0x480 worker_thread+0xea/0x1e0 kthread+0xdb/0x110 ? move_linked_works+0x90/0x90 ? kthread_associate_blkcg+0xa0/0xa0 ret_from_fork+0x3b/0x50 ? kthread_associate_blkcg+0xa0/0xa0 ret_from_fork_asm+0x11/0x20 </TASK> Modules 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 gsmi: Log Shutdown Reason 0x03 ---[ end trace 0000000000000000 ]---

Affected packages

Ecosystem Package Introduced Fixed
Debian:11 linux 0 No fix
Debian:11 linux-6.1 0 6.1.128-1~deb11u1
Debian:11 linux-6.1 0 6.1.6.1.128-1~deb11u1
Debian:12 linux 0 No fix
Debian:13 linux 0 No fix
Debian:13 linux 0 6.11.4-1
Linux Kernel 5.16.0 6.1.120
Mageia:9 kernel 0 6.6.58-2.mga9
Mageia:9 kernel-firmware 0 20240909-1.mga9
Mageia:9 kernel-firmware-nonfree 0 20240909-1.mga9.nonfree
Mageia:9 kernel-linus 0 6.6.58-2.mga9
Mageia:9 kmod-virtualbox 0 7.0.20-57.mga9
Mageia:9 kmod-xtables-addons 0 3.24-65.mga9
Mageia:9 radeon-firmware 0 20240909-1.mga9.nonfree
SUSE:Linux Enterprise High Availability Extension 15 SP5 kernel-default 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise High Availability Extension 15 SP6 kernel-default 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-default 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-livepatch-SLE15-SP5-RT_Update_22 0 1-150500.11.3.1
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_21 0 1-150500.11.5.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-default 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6-RT_Update_5 0 1-150600.1.3.1
SUSE:Linux Enterprise Live Patching 15 SP6 kernel-livepatch-SLE15-SP6_Update_6 0 1-150600.13.3.5
SUSE:Linux Enterprise Micro 5.5 kernel-default 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Micro 5.5 kernel-default-base 0 5.14.21-150500.55.88.1.150500.6.39.4
SUSE:Linux Enterprise Micro 5.5 kernel-rt 0 5.14.21-150500.13.76.1
SUSE:Linux Enterprise Micro 5.5 kernel-source-rt 0 5.14.21-150500.13.76.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-64kb 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-default 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-default-base 0 5.14.21-150500.55.88.1.150500.6.39.4
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-source 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Basesystem 15 SP5 kernel-zfcpdump 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-64kb 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-default-base 0 6.4.0-150600.23.30.1.150600.12.12.6
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-source 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Basesystem 15 SP6 kernel-zfcpdump 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco 0 6.4.0-15061.9.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-coco_debug 0 6.4.0-15061.9.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-source-coco 0 6.4.0-15061.9.coco15sp6.1
SUSE:Linux Enterprise Module for Confidential Computing Technical Preview 15 SP6 kernel-syms-coco 0 6.4.0-15061.9.coco15sp6.1
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-docs 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-obs-build 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-source 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Development Tools 15 SP5 kernel-syms 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-docs 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-obs-build 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-source 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Development Tools 15 SP6 kernel-syms 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Legacy 15 SP5 kernel-default 0 5.14.21-150500.55.88.1
SUSE:Linux Enterprise Module for Legacy 15 SP6 kernel-default 0 6.4.0-150600.23.30.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 kernel-azure 0 5.14.21-150500.33.72.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 kernel-source-azure 0 5.14.21-150500.33.72.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP5 kernel-syms-azure 0 5.14.21-150500.33.72.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-azure 0 6.4.0-150600.8.17.2
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-source-azure 0 6.4.0-150600.8.17.1
SUSE:Linux Enterprise Module for Public Cloud 15 SP6 kernel-syms-azure 0 6.4.0-150600.8.17.1
SUSE:Linux Enterprise Workstation Extension 15 SP6 kernel-default 0 6.4.0-150600.23.30.1
SUSE:Real Time Module 15 SP5 kernel-rt 0 5.14.21-150500.13.76.1
SUSE:Real Time Module 15 SP5 kernel-rt_debug 0 5.14.21-150500.13.76.1
SUSE:Real Time Module 15 SP5 kernel-source-rt 0 5.14.21-150500.13.76.1
SUSE:Real Time Module 15 SP5 kernel-syms-rt 0 5.14.21-150500.13.76.1
SUSE:Real Time Module 15 SP6 kernel-rt 0 6.4.0-150600.10.17.1
SUSE:Real Time Module 15 SP6 kernel-rt_debug 0 6.4.0-150600.10.17.1
SUSE:Real Time Module 15 SP6 kernel-source-rt 0 6.4.0-150600.10.17.1
SUSE:Real Time Module 15 SP6 kernel-syms-rt 0 6.4.0-150600.10.17.1
Ubuntu:24.10 linux 0 6.11.0-18.18
Ubuntu:24.10 linux-aws 0 6.11.0-1009.10
Ubuntu:24.10 linux-azure 0 6.11.0-1009.9
Ubuntu:24.10 linux-gcp 0 6.11.0-1009.9
Ubuntu:24.10 linux-lowlatency 0 6.11.0-1010.11
Ubuntu:24.10 linux-oracle 0 6.11.0-1011.12
Ubuntu:24.10 linux-raspi 0 6.11.0-1008.8
Ubuntu:24.10 linux-realtime 0 6.11.0-1005.5
openSUSE:Leap 15.5 kernel-azure 0 5.14.21-150500.33.72.1
openSUSE:Leap 15.5 kernel-rt 0 5.14.21-150500.13.76.1
openSUSE:Leap 15.5 kernel-rt_debug 0 5.14.21-150500.13.76.1
openSUSE:Leap 15.5 kernel-source-azure 0 5.14.21-150500.33.72.1
openSUSE:Leap 15.5 kernel-source-rt 0 5.14.21-150500.13.76.1
openSUSE:Leap 15.5 kernel-syms-azure 0 5.14.21-150500.33.72.1
openSUSE:Leap 15.5 kernel-syms-rt 0 5.14.21-150500.13.76.1
openSUSE:Leap 15.6 dtb-aarch64 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-64kb 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-azure 0 6.4.0-150600.8.17.2
openSUSE:Leap 15.6 kernel-debug 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-default 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-default-base 0 6.4.0-150600.23.30.1.150600.12.12.6
openSUSE:Leap 15.6 kernel-docs 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-kvmsmall 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-obs-build 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-obs-qa 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-rt 0 6.4.0-150600.10.17.1
openSUSE:Leap 15.6 kernel-rt_debug 0 6.4.0-150600.10.17.1
openSUSE:Leap 15.6 kernel-source 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-source-azure 0 6.4.0-150600.8.17.1
openSUSE:Leap 15.6 kernel-source-rt 0 6.4.0-150600.10.17.1
openSUSE:Leap 15.6 kernel-syms 0 6.4.0-150600.23.30.1
openSUSE:Leap 15.6 kernel-syms-azure 0 6.4.0-150600.8.17.1
openSUSE:Leap 15.6 kernel-syms-rt 0 6.4.0-150600.10.17.1
openSUSE:Leap 15.6 kernel-zfcpdump 0 6.4.0-150600.23.30.1
openSUSE:Leap Micro 5.5 kernel-rt 0 5.14.21-150500.13.76.1
openSUSE:Tumbleweed kernel-source 0 6.11.8-1.1
openSUSE:Tumbleweed kernel-source-longterm 0 6.12.11-1.1

Related vulnerabilities