🇰🇷 한글 설명
Linux 커널의 rtw89 무선 드라이버에서, 칩이 지원하지 않는 6 GHz 대역으로 잘못 인식된 드물게 발생하는 수신 패킷을 처리할 때 NULL 포인터 역참조가 발생하여 커널 패닉이 일어날 수 있습니다. 해당 대역용 초기화가 이루어지지 않은 상태에서 rtw89_core_cancel_6ghz_probe_tx() 호출 경로가 실행되는 것이 원인이며, 이를 막기 위해 검사 코드가 추가되었습니다.
💡 쉬운 설명
무선랜 칩이 지원하지 않는 주파수 대역의 신호를 잘못 받아들이면 컴퓨터가 멈추거나 재부팅될 수 있는 결함입니다. 드물게 발생하며, 수정된 커널로 업데이트하면 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: rtw89: avoid NULL dereference when RX problematic packet on unsupported 6 GHz band
With a quite rare chance, RX report might be problematic to make SW think
a packet is received on 6 GHz band even if the chip does not support 6 GHz
band actually. Since SW won't initialize stuffs for unsupported bands, NULL
dereference will happen then in the sequence, rtw89_vif_rx_stats_iter() ->
rtw89_core_cancel_6ghz_probe_tx(). So, add a check to avoid it.
The following is a crash log for this case.
BUG: kernel NULL pointer dereference, address: 0000000000000032
#PF: supervisor read access in kernel mode
#PF: error_code(0x0000) - not-present page
PGD 0 P4D 0
Oops: 0000 [#1] PREEMPT SMP NOPTI
CPU: 1 PID: 1907 Comm: irq/131-rtw89_p Tainted: G U 6.6.56-05896-g89f5fb0eb30b #1 (HASH:1400 4)
Hardware name: Google Telith/Telith, BIOS Google_Telith.15217.747.0 11/12/2024
RIP: 0010:rtw89_vif_rx_stats_iter+0xd2/0x310 [rtw89_core]
Code: 4c 89 7d c8 48 89 55 c0 49 8d 44 24 02 48 89 45 b8 45 31 ff eb 11
41 c6 45 3a 01 41 b7 01 4d 8b 6d 00 4d 39 f5 74 42 8b 43 10 <41> 33 45
32 0f b7 4b 14 66 41 33 4d 36 0f b7 c9 09 c1 74 d8 4d 85
RSP: 0018:ffff9f3080138ca0 EFLAGS: 00010246
RAX: 00000000b8bf5770 RBX: ffff91b5e8c639c0 RCX: 0000000000000011
RDX: ffff91b582de1be8 RSI: 0000000000000000 RDI: ffff91b5e8c639e6
RBP: ffff9f3080138d00 R08: 0000000000000000 R09: 0000000000000000
R10: ffff91b59de70000 R11: ffffffffc069be50 R12: ffff91b5e8c639e4
R13: 0000000000000000 R14: ffff91b5828020b8 R15: 0000000000000000
FS: 0000000000000000(0000) GS:ffff91b8efa40000(0000) knlGS:0000000000000000
CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033
CR2: 0000000000000032 CR3: 00000002bf838000 CR4: 0000000000750ee0
PKRU: 55555554
Call Trace:
<IRQ>
? __die_body+0x68/0xb0
? page_fault_oops+0x379/0x3e0
? exc_page_fault+0x4f/0xa0
? asm_exc_page_fault+0x22/0x30
? __pfx_rtw89_vif_rx_stats_iter+0x10/0x10 [rtw89_core (HASH:1400 5)]
? rtw89_vif_rx_stats_iter+0xd2/0x310 [rtw89_core (HASH:1400 5)]
__iterate_interfaces+0x59/0x110 [mac80211 (HASH:1400 6)]
? __pfx_rtw89_vif_rx_stats_iter+0x10/0x10 [rtw89_core (HASH:1400 5)]
? __pfx_rtw89_vif_rx_stats_iter+0x10/0x10 [rtw89_core (HASH:1400 5)]
ieee80211_iterate_active_interfaces_atomic+0x36/0x50 [mac80211 (HASH:1400 6)]
rtw89_core_rx_to_mac80211+0xfd/0x1b0 [rtw89_core (HASH:1400 5)]
rtw89_core_rx+0x43a/0x980 [rtw89_core (HASH:1400 5)]
📍 영향받는 시스템
rtw89 무선 드라이버를 사용하는 Linux 커널 (수정 이전 버전, Realtek RTL8852/RTL8922 계열 무선랜 칩 탑재 기기)
⚔️ 공격 벡터
로컬 공격자가 직접 특정 무선 신호를 조작해야 하며, 원격에서 무선 패킷만으로 악용하기는 어렵고 주로 서비스 거부(시스템 중단) 형태로 나타납니다.
🛡️ 대응 방법
배포판의 보안 업데이트 또는 CVE 수정이 포함된 최신 Linux 커널로 업데이트하고 재부팅하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 CVE 수정이 포함된 배포판 패치 버전 이상인지 배포판 보안 공지와 대조하고, rtw89 모듈이 없으면 이 취약점의 영향을 받지 않습니다.
uname -r && (lsmod | grep rtw89 || echo 'rtw89 모듈 미로드')