🔍 CVE-2022-50709

0.0
CVSS Score
UNKNOWN
2025-12-24
2026-11-10 12:10
✅ 완료

🇰🇷 한글 설명

Linux 커널의 ath9k 무선 드라이버에서 ath9k_htc_rx_msg() 함수가 초기화되지 않은 메모리를 읽는 문제가 수정되었습니다. ath9k_hif_usb_rx_stream()이 pkt_len이 0인 경우에도 초기화되지 않은 메모리로 skb를 할당하여 발생한 문제이며, 패킷 길이 검증을 추가하여 해결했습니다.

💡 쉬운 설명

Wi-Fi 어댑터 드라이버가 비어 있는 메모리 영역을 읽을 수 있는 결함이었습니다. 패킷 길이를 먼저 검사하도록 수정되어 이 문제가 해결되었습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: wifi: ath9k: avoid uninit memory read in ath9k_htc_rx_msg() syzbot is reporting uninit value at ath9k_htc_rx_msg() [1], for ioctl(USB_RAW_IOCTL_EP_WRITE) can call ath9k_hif_usb_rx_stream() with pkt_len = 0 but ath9k_hif_usb_rx_stream() uses __dev_alloc_skb(pkt_len + 32, GFP_ATOMIC) based on an assumption that pkt_len is valid. As a result, ath9k_hif_usb_rx_stream() allocates skb with uninitialized memory and ath9k_htc_rx_msg() is reading from uninitialized memory. Since bytes accessed by ath9k_htc_rx_msg() is not known until ath9k_htc_rx_msg() is called, it would be difficult to check minimal valid pkt_len at "if (pkt_len > 2 * MAX_RX_BUF_SIZE) {" line in ath9k_hif_usb_rx_stream(). We have two choices. One is to workaround by adding __GFP_ZERO so that ath9k_htc_rx_msg() sees 0 if pkt_len is invalid. The other is to let ath9k_htc_rx_msg() validate pkt_len before accessing. This patch chose the latter. Note that I'm not sure threshold condition is correct, for I can't find details on possible packet length used by this protocol.

📍 영향받는 시스템

Linux 커널 ath9k_htc 드라이버를 사용하는 USB Wi-Fi 어댑터가 연결된 시스템 (수정 커밋 이전 커널 버전)

⚔️ 공격 벡터

USB 장치 또는 로컬 사용자 권한으로 드라이버에 잘못된 길이의 패킷 데이터를 전달해 초기화되지 않은 메모리 내용을 읽는 방식 (로컬 조건 필요)

🛡️ 대응 방법

해당 수정이 포함된 최신 Linux 커널 배포판으로 업데이트하고 재부팅하십시오.

🔧 검증 코드

출력된 커널 버전이 배포판의 수정 패치가 적용된 최신 버전인지 확인하고, ath9k_htc 모듈이 로드되지 않았다면 이 취약점의 영향을 받지 않습니다.

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

💻 영향받는 소프트웨어

Linux Kernel