🇰🇷 한글 설명
Linux 커널 mac80211 모듈의 AP_VLAN 인터페이스 처리 중 NULL 포인터 역참조로 인한 커널 크래시 취약점입니다. ieee80211_chan_bw_change() 함수가 VLAN 스테이션의 링크 데이터에 접근할 때 chandef->chan이 NULL인 상태에서 대역폭 변경(CSA)이 발생하면 시스템이 크래시됩니다.
💡 쉬운 설명
WiFi 가상 인터페이스 설정 변경 시 커널이 잘못된 메모리 주소에 접근하여 시스템이 먹통이 되는 문제입니다. 무선 네트워크 채널 변경 중에 특정 조건에서만 발생합니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mac80211: fix crash in ieee80211_chan_bw_change for AP_VLAN stations
ieee80211_chan_bw_change() iterates all stations and accesses
link->reserved.oper via sta->sdata->link[link_id]. For stations on
AP_VLAN interfaces (e.g. 4addr WDS clients), sta->sdata points to
the VLAN sdata, whose link never participates in chanctx reservations.
This leaves link->reserved.oper zero-initialized with chan == NULL,
causing a NULL pointer dereference in __ieee80211_sta_cap_rx_bw()
when accessing chandef->chan->band during CSA.
Resolve the VLAN sdata to its parent AP sdata using get_bss_sdata()
before accessing link data.
[also change sta->sdata in ARRAY_SIZE even if it doesn't matter]
📍 영향받는 시스템
Linux 커널 5.x~6.x (mac80211 모듈 사용하는 802.11 드라이버 탑재 시스템)
⚔️ 공격 벡터
로컬 네트워크 접근 권한 필요. AP_VLAN 인터페이스 설정 후 채널 변경 명령 또는 CSA(Channel Switch Announcement) 프레임 수신
🛡️ 대응 방법
Linux 커널을 최신 패치 버전으로 업데이트하거나 mac80211 모듈의 ieee80211_chan_bw_change() 함수에서 get_bss_sdata() 호출로 VLAN 해석 수정
🔧 검증 코드
커널 버전 5.x~6.x 확인 후, mac80211 모듈 로드 여부를 확인합니다. 패치 적용 후 커널 재부팅이 필요합니다.
uname -r | grep -E '^[456]\.[0-9]+'; modinfo mac80211 2>/dev/null | grep version || echo 'mac80211 module not loaded'