Cloudanix VulnDB

CVE-2023-53641

Medium · 5.5

CVSS

5.5

EPSS

0.2%

Published

Oct 7, 2025

CISA due date

—

Cloudanix analysis

Schedule a fix SSVC: Track

A problem in certain wireless network hardware drivers could slowly use up system memory if the wireless device is turned off or suspended at the wrong moment, potentially slowing or crashing the computer.

Exploitation
Local Privilege
Attacker needs
Low Privilege
Complexity
Low
Impact
Denial Of Service
Component
OS kernel
Class
Memory Corruption
Remediation
Upgrade
Effort
Medium
Patch risk
Low

What it actually does

Memory leak of remain_skb buffers in ath9k_hif_usb_rx_stream when USB URBs are deallocated during device deinitialization or suspend without subsequent processing, leading to gradual kernel memory exhaustion.

Why it matters to the business

On affected Linux systems using ath9k USB Wi-Fi hardware, repeated trigger conditions over long periods could degrade performance or cause denial of service; low practical risk given local-only trigger and 387 days without widespread exploitation.

How an attack unfolds

An attacker with local access or control over device suspend/resume paths triggers URB deallocation while a remain_skb is cached; the next ath9k_hif_usb_rx_stream call never occurs, leaving the allocation unfreed. Syzkaller demonstrated this path; no named threat actors or ransomware campaigns observed.

How to fix it

Update to Linux kernel commit 6719e3797ec52cd144c8a5ba8aaab36674800585 or later stable releases containing the explicit remain_skb free function on URB deallocation. Reboot after applying the kernel update.

How to confirm the fix worked

Confirm kernel version contains the fix commit; monitor /proc/meminfo or slabinfo for ath9k-related skb growth during repeated suspend/resume cycles on affected hardware; run syzkaller-style tests targeting hif_usb paths.

Typical attack path

  1. Obtain local code execution or physical access to trigger device suspend/deinitialization
  2. Force conditions where ath9k_hif_usb_rx_stream allocates remain_skb but does not process it
  3. Deallocate associated USB URBs without calling the receive stream handler again
  4. Repeat to accumulate leaked kernel memory until resource pressure occurs

How to detect it

Review kernel logs for ath9k_hif_usb warnings during suspend/resume; inspect slab allocator statistics for growing remain_skb allocations; no public exploit artifacts or threat actor TTPs available for retrospective hunting.

What your security team should do

  • Prioritize kernel upgrade on systems with ath9k USB Wi-Fi within standard maintenance windows
  • Disable ath9k USB devices if unused to reduce attack surface
  • Add kernel memory leak monitoring to existing observability for early detection of anomalies

The record

In the Linux kernel, the following vulnerability has been resolved: wifi: ath9k: hif_usb: fix memory leak of remain_skbs hif_dev->remain_skb is allocated and used exclusively in ath9k_hif_usb_rx_stream(). It is implied that an allocated remain_skb is processed and subsequently freed (in error paths) only during the next call of ath9k_hif_usb_rx_stream(). So, if the urbs are deallocated between those two calls due to the device deinitialization or suspend, it is possible that ath9k_hif_usb_rx_stream() is not called next time and the allocated remain_skb is leaked. Our local Syzkaller instance was able to trigger that. remain_skb makes sense when receiving two consecutive urbs which are logically linked together, i.e. a specific data field from the first skb indicates a cached skb to be allocated, memcpy'd with some data and subsequently processed in the next call to ath9k_hif_usb_rx_stream(). Urbs deallocation supposedly makes that link irrelevant so we need to free the cached skb in those cases. Fix the leak by introducing a function to explicitly free remain_skb (if it is not NULL) when the rx urbs have been deallocated. remain_skb is NULL when it has not been allocated at all (hif_dev struct is kzalloced) or when it has been processed in next call to ath9k_hif_usb_rx_stream(). Found by Linux Verification Center (linuxtesting.org) with Syzkaller.

Affected packages

Ecosystem Package Introduced Fixed
Linux Kernel 2.6.35 4.19.283
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS kernel-64kb 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS kernel-default 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS kernel-default-base 0 5.14.21-150500.55.127.1.150500.6.61.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS kernel-docs 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS kernel-obs-build 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS kernel-source 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS kernel-syms 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS kernel-64kb 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS kernel-default 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS kernel-default-base 0 5.14.21-150500.55.127.1.150500.6.61.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS kernel-docs 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS kernel-obs-build 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS kernel-source 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS kernel-syms 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-default 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Live Patching 15 SP5 kernel-livepatch-SLE15-SP5_Update_32 0 1-150500.11.3.1
SUSE:Linux Enterprise Micro 5.5 kernel-default 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Micro 5.5 kernel-default-base 0 5.14.21-150500.55.127.1.150500.6.61.1
SUSE:Linux Enterprise Micro 5.5 kernel-source 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-64kb 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-default 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-default-base 0 5.14.21-150500.55.127.1.150500.6.61.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-docs 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-obs-build 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-source 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-syms 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server 15 SP5-LTSS kernel-zfcpdump 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 kernel-default 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 kernel-default-base 0 5.14.21-150500.55.127.1.150500.6.61.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 kernel-docs 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 kernel-obs-build 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 kernel-source 0 5.14.21-150500.55.127.1
SUSE:Linux Enterprise Server for SAP Applications 15 SP5 kernel-syms 0 5.14.21-150500.55.127.1

Related vulnerabilities