🇰🇷 한글 설명
Linux 커널의 mt76 무선 드라이버(mt7925) 중 mt7925_sta_set_decap_offload() 함수에서 msta->vif가 NULL인 상태로 접근하여 NULL 포인터 역참조가 발생하는 문제입니다. 스테이션 초기화가 완료되기 전에 이 함수가 호출되면 AP 모드 운용 시 커널 패닉이 발생할 수 있으며, 이를 방지하기 위해 NULL 검사와 wcid.sta 준비 상태 확인을 추가했습니다.
💡 쉬운 설명
무선 공유기 역할(AP 모드)을 하는 리눅스 장비에서 무선 기기 연결 초기화 중 잘못된 메모리 접근이 발생해 시스템이 멈출 수 있습니다. 이번 패치는 준비되지 않은 상태에서 작업하지 않도록 검사를 추가하여 이 문제를 막습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: mt76: mt7925: prevent NULL pointer dereference in mt7925_sta_set_decap_offload()
Add a NULL check for msta->vif before accessing its members to prevent
a kernel panic in AP mode deployment. This also fix the issue reported
in [1].
The crash occurs when this function is triggered before the station is
fully initialized. The call trace shows a page fault at
mt7925_sta_set_decap_offload() due to accessing resources when msta->vif
is NULL.
Fix this by adding an early return if msta->vif is NULL and also check
wcid.sta is ready. This ensures we only proceed with decap offload
configuration when the station's state is properly initialized.
[14739.655703] Unable to handle kernel paging request at virtual address ffffffffffffffa0
[14739.811820] CPU: 0 UID: 0 PID: 895854 Comm: hostapd Tainted: G
[14739.821394] Tainted: [C]=CRAP, [O]=OOT_MODULE
[14739.825746] Hardware name: Raspberry Pi 4 Model B Rev 1.1 (DT)
[14739.831577] pstate: 60000005 (nZCv daif -PAN -UAO -TCO -DIT -SSBS BTYPE=--)
[14739.838538] pc : mt7925_sta_set_decap_offload+0xc0/0x1b8 [mt7925_common]
[14739.845271] lr : mt7925_sta_set_decap_offload+0x58/0x1b8 [mt7925_common]
[14739.851985] sp : ffffffc085efb500
[14739.855295] x29: ffffffc085efb500 x28: 0000000000000000 x27: ffffff807803a158
[14739.862436] x26: ffffff8041ececb8 x25: 0000000000000001 x24: 0000000000000001
[14739.869577] x23: 0000000000000001 x22: 0000000000000008 x21: ffffff8041ecea88
[14739.876715] x20: ffffff8041c19ca0 x19: ffffff8078031fe0 x18: 0000000000000000
[14739.883853] x17: 0000000000000000 x16: ffffffe2aeac1110 x15: 000000559da48080
[14739.890991] x14: 0000000000000001 x13: 0000000000000000 x12: 0000000000000000
[14739.898130] x11: 0a10020001008e88 x10: 0000000000001a50 x9 : ffffffe26457bfa0
[14739.905269] x8 : ffffff8042013bb0 x7 : ffffff807fb6cbf8 x6 : dead000000000100
[14739.912407] x5 : dead000000000122 x4 : ffffff80780326c8 x3 : 0000000000000000
[14739.919546] x2 : 0000000000000000 x1 : 0000000000000000 x0 : ffffff8041ececb8
[14739.926686] Call trace:
[14739.929130] mt7925_sta_set_decap_offload+0xc0/0x1b8 [mt7925_common]
[14739.935505] ieee80211_check_fast_rx+0x19c/0x510 [mac80211]
[14739.941344] _sta_info_move_state+0xe4/0x510 [mac80211]
[14739.946860] sta_info_move_state+0x1c/0x30 [mac80211]
[14739.952116] sta_apply_auth_flags.constprop.0+0x90/0x1b0 [mac80211]
[14739.958708] sta_apply_parameters+0x234/0x5e0 [mac80211]
[14739.964332] ieee80211_add_station+0xdc/0x190 [mac80211]
[14739.969950] nl80211_new_station+0x46c/0x670 [cfg80211]
[14739.975516] genl_family_rcv_msg_doit+0xdc/0x150
[14739.980158] genl_rcv_msg+0x218/0x298
[14739.983830] netlink_rcv_skb+0x64/0x138
[14739.987670] genl_rcv+0x40/0x60
[14739.990816] netlink_unicast+0x314/0x380
[14739.994742] netlink_sendmsg+0x198/0x3f0
[14739.998664] __sock_sendmsg+0x64/0xc0
[14740.002324] ____sys_sendmsg+0x260/0x298
[14740.006242] ___sys_sendmsg+0xb4/0x110
📍 영향받는 시스템
mt7925 무선 칩셋을 사용하는 Linux 커널(패치 적용 전 버전, mt76 드라이버 탑재 장비)
⚔️ 공격 벡터
로컬 또는 인접 네트워크 사용자가 AP 모드에서 스테이션 추가 요청을 유도해 커널 패닉(서비스 거부)을 일으킬 수 있음
🛡️ 대응 방법
배포판 제공 커널을 CVE-2025-38450 수정이 포함된 최신 버전으로 업데이트하고 재부팅
🔧 검증 코드
현재 커널 버전이 수정이 포함된 배포판 업데이트 버전인지 패키지 변경 로그와 대조하고, dmesg에 mt7925 관련 오류(NULL 포인터, Oops)가 없는지 확인합니다.
uname -r && dmesg 2>/dev/null | grep -i mt7925 | head -n 5