🔍 CVE-2023-53641

5.5
CVSS Score
MEDIUM
2025-10-07
2026-11-05 21:17
✅ 완료

🇰🇷 한글 설명

Linux 커널의 ath9k 무선 드라이버(hif_usb)에서 remain_skb 메모리 누수가 수정되었습니다. USB URB가 해제되는 시점(장치 해제 또는 절전 모드 진입)에 다음 수신 호출이 일어나지 않으면 할당된 remain_skb가 해제되지 않는 문제였으며, 이를 명시적으로 해제하는 함수를 추가해 해결했습니다. Syzkaller 퍼징으로 발견되었습니다.

💡 쉬운 설명

무선 랜 드라이버가 사용 후 돌려주지 않은 작은 메모리 조각이 쌓여 시스템 자원을 조금씩 낭비하던 문제입니다. 해당 메모리를 장치가 꺼지거나 절전될 때 정리하도록 고쳐졌습니다.

🇺🇸 원문 (English)

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.

📍 영향받는 시스템

ath9k_htc 드라이버를 사용하는 USB 무선 랜 어댑터가 연결된 Linux 커널 (수정 이전 버전)

⚔️ 공격 벡터

로컬 사용자나 물리적으로 연결된 USB 장치를 통해 장치 해제/절전을 반복 유발하면 메모리가 누적되어 자원 고갈(서비스 거부)이 발생할 수 있습니다.

🛡️ 대응 방법

Linux 커널을 해당 CVE 수정이 포함된 최신 안정 버전으로 업데이트하고 재부팅하십시오.

🔧 검증 코드

출력된 커널 버전이 배포판의 CVE 수정 패치 버전 이상인지 확인하고, ath9k 모듈이 없으면 이 취약점의 영향을 받지 않습니다.

Shell / Script
uname -r && (lsmod | grep -E 'ath9k_htc|ath9k' || echo 'ath9k 모듈 미로드')

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel