🇰🇷 한글 설명
Linux 커널의 iwlwifi 드라이버에서 펌웨어 재시작 중에도 데이터 전송(TX)을 중단하지 않아 발생하는 취약점입니다. 펌웨어가 충돌한 상태에서 데이터 전송을 계속 시도하면 CPU 자원이 낭비되고 메모리 파편화로 인한 시스템 부하가 발생합니다.
💡 쉬운 설명
와이파이 부품에 오류가 생겨 재시작 중일 때, 컴퓨터가 멈추지 않고 계속 데이터를 보내려고 시도하면서 시스템이 느려지거나 메모리가 부족해지는 문제입니다. 이를 방지하기 위해 재시작 중에는 데이터 전송을 잠시 멈추도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: iwlwifi: mld: stop TX during firmware restart
When iwlwifi firmware crashes (e.g., NMI_INTERRUPT_UNKNOWN on Intel
BE201/Wi-Fi 7), iwl_mld_nic_error() sets mld->fw_status.in_hw_restart
to true. However, iwl_mld_tx_from_txq() does not check this flag before
dequeuing frames from mac80211 and pushing them to the transport layer.
Since the firmware is dead, iwl_trans_tx() returns -EIO for each frame,
which then gets freed immediately. Under high-throughput conditions
(e.g., Tailscale UDP traffic or active SSH sessions), this creates a
tight dequeue-send-fail-free loop that wastes CPU cycles and generates
rapid skb allocation churn, leading to memory pressure from slab
fragmentation.
The RX path already has this guard (iwl_mld_rx_mpdu checks
in_hw_restart at rx.c:1906), and so does the TXQ allocation worker
(iwl_mld_add_txqs_wk at tx.c:156). Add the same guard to
iwl_mld_tx_from_txq() to stop all TX during firmware restart.
Frames left in mac80211's TXQs are naturally drained after restart
completes, when queue reallocation triggers iwl_mld_tx_from_txq()
via iwl_mld_add_txq_list(), or when new upper-layer traffic invokes
wake_tx_queue.
Tested on ASUS Zenbook 14 UX3405CA with Intel BE201 (Wi-Fi 7) on
kernel 6.19.5 where the firmware crashes approximately every 10-15
minutes under Tailscale traffic.
📍 영향받는 시스템
Intel BE201(Wi-Fi 7) 등을 사용하는 Linux 커널 기반 시스템 (특히 커널 6.19.5 이하 버전)
⚔️ 공격 벡터
직접적인 공격보다는 특정 네트워크 트래픽(Tailscale UDP 등)을 통한 시스템 자원 고갈(DoS) 유발 가능성
🛡️ 대응 방법
iwlwifi 드라이버의 수정 사항이 반영된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 패치 버전인지 확인