CVE-2024-49931
NoneCVSS
—
EPSS
0.2%
Published
Oct 21, 2024
CISA due date
—
Cloudanix analysis
A mistake in how a Linux WiFi driver counts certain internal values can let attackers reach memory they should not, which might crash devices or allow harmful code to run.
- Exploitation
- Local Privilege
- Attacker needs
- Low Privilege
- Complexity
- Theoretical
- Impact
- Data Exposure
- Component
- OS kernel
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Out-of-bounds array access in ath12k_soc_dp_stats::hal_reo_error caused by using SRNG ring ID instead of normal ring ID in ath12k_dp_rx_process() when processing REO destination rings.
Why it matters to the business
Systems running affected Linux kernels with ath12k WiFi hardware face risk of crashes, memory corruption, or potential code execution; widespread kernel exposure increases operational disruption and patching urgency across server and endpoint fleets.
How an attack unfolds
An attacker sends crafted wireless frames that reach ath12k_dp_rx_process() with a ring ID outside the allocated DP_REO_DST_RING_MAX bounds, triggering the out-of-bounds read/write; threat actors have shown interest in similar Linux kernel out-of-bounds issues in espionage and financially motivated campaigns.
How to fix it
Update to the fixed kernel commit d0e4274d9dc9f8409d56d622cd3ecf7b6fd49e2f or later; apply vendor backports that replace SRNG ring ID usage with normal ring ID in ath12k_dp_rx_process(); verify patch application via kernel source or package version checks.
How to confirm the fix worked
Confirm kernel source contains the corrected ring ID handling; test by exercising ath12k_dp_rx_process() with boundary ring IDs and verify no out-of-bounds access occurs via kernel debugging or static analysis tools.
Typical attack path
- Identify target systems running vulnerable ath12k driver in Linux kernel
- Craft and transmit wireless frames that exercise the REO destination ring processing path
- Supply ring ID values that exceed the hal_reo_error array size
- Trigger out-of-bounds access leading to crash or memory corruption for further exploitation
How to detect it
Search kernel logs and crash dumps for ath12k_soc_dp_stats or hal_reo_error references near ring processing failures; monitor for unexpected ath12k driver oops or memory access violations in system logs.
What your security team should do
- Prioritize kernel updates on all systems using ath12k hardware
- Monitor vendor advisories for ath12k and Linux kernel releases
- Restrict wireless exposure on critical systems until patched
- Review logs for ath12k driver anomalies as a temporary detection measure
The record
In the Linux kernel, the following vulnerability has been resolved: wifi: ath12k: fix array out-of-bound access in SoC stats Currently, the ath12k_soc_dp_stats::hal_reo_error array is defined with a maximum size of DP_REO_DST_RING_MAX. However, the ath12k_dp_rx_process() function access ath12k_soc_dp_stats::hal_reo_error using the REO destination SRNG ring ID, which is incorrect. SRNG ring ID differ from normal ring ID, and this usage leads to out-of-bounds array access. To fix this issue, modify ath12k_dp_rx_process() to use the normal ring ID directly instead of the SRNG ring ID to avoid out-of-bounds array access. Tested-on: QCN9274 hw2.0 PCI WLAN.WBE.1.0.1-00029-QCAHKSWPL_SILICONZ-1
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| Debian:11 | linux | 0 | No fix |
| Debian:12 | linux | 0 | No fix |
| Debian:13 | linux | 0 | No fix |
| Debian:13 | linux | 0 | 6.11.4-1 |
| Linux | Kernel | 6.3.0 | 6.6.55 |
| 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 SP6 | kernel-default | 0 | 6.4.0-150600.23.30.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 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 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 SP6 | kernel-default | 0 | 6.4.0-150600.23.30.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 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.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:Tumbleweed | kernel-source | 0 | 6.11.8-1.1 |
| openSUSE:Tumbleweed | kernel-source-longterm | 0 | 6.12.11-1.1 |
Related vulnerabilities
- CVE-2025-39885 In the Linux kernel, the following vulnerability has been resolved: ocfs2: fix recursive… Also affects linux
- CVE-2025-39883 In the Linux kernel, the following vulnerability has been resolved: mm/memory-failure… Also affects linux
- CVE-2025-39876 In the Linux kernel, the following vulnerability has been resolved: net: fec: Fix… Also affects linux
- CVE-2025-39869 In the Linux kernel, the following vulnerability has been resolved: dmaengine: ti: edma… Also affects linux
- CVE-2025-39873 In the Linux kernel, the following vulnerability has been resolved: can: xilinx_can… Also affects linux
- CVE-2025-39863 In the Linux kernel, the following vulnerability has been resolved: wifi: brcmfmac: fix… Also affects linux
- CVE-2025-39865 In the Linux kernel, the following vulnerability has been resolved: tee: fix NULL pointer… Also affects linux
- CVE-2025-39866 In the Linux kernel, the following vulnerability has been resolved: fs: writeback: fix… Also affects linux