🇰🇷 한글 설명
Linux 커널의 mt76 Wi-Fi 드라이버(mt7921/mt7925)에서 채널 전환 알림(CSA) 비콘을 처리하는 도중 NULL 포인터 역참조가 발생할 수 있는 취약점입니다. 스테이션이 연결을 해제하여 채널 컨텍스트가 제거된 상태에서 비콘 처리가 실행될 경우 시스템 충돌이 발생할 수 있습니다.
💡 쉬운 설명
Wi-Fi 연결이 끊어지는 순간에 특정 신호가 들어오면 컴퓨터의 핵심 시스템(커널)이 갈 곳을 잃고 멈춰버리는 오류입니다. 이로 인해 시스템이 갑자기 재부팅되거나 중단될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: mt76: mt7921/mt7925: fix NULL dereference in CSA beacon
This patch is based on a BUG as reported by Bongani Hlope at
https://lore.kernel.org/all/
[email protected]/
When a channel-switch announcement (CSA) beacon is received,
cfg80211 queues a wiphy work item that eventually calls
mt7921_channel_switch_rx_beacon(). If the station disconnects
(or the channel context is otherwise torn down) between the
time the work is queued and the time it runs, the driver's
dev->new_ctx pointer can already have been cleared to NULL.
mt7921_channel_switch_rx_beacon() then dereferences new_ctx
unconditionally, triggering a NULL pointer dereference at
address 0x0:
BUG: kernel NULL pointer dereference, address: 0000000000000000
RIP: 0010:mt7921_channel_switch_rx_beacon+0x1f/0x100 [mt7921_common]
The same missing guard exists in mt7925_channel_switch_rx_beacon(),
which shares the same code pattern introduced by the same commit.
Add an early-return NULL check for dev->new_ctx in both
mt7921_channel_switch_rx_beacon() and
mt7925_channel_switch_rx_beacon(). When new_ctx is NULL there is
no pending channel switch to process, so returning immediately is
the correct and safe action.
Oops-Analysis: http://oops.fenrus.org/reports/lkml/
[email protected]/report.html
📍 영향받는 시스템
Linux kernel (mt76 driver: mt7921, mt7925 modules)
⚔️ 공격 벡터
특수하게 조작된 CSA 비콘을 송신하여 드라이버의 NULL 포인터 역참조를 유도 (로컬 또는 근거리 무선 공격)
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 mt7921/mt7925 드라이버의 NULL 체크 로직을 적용해야 합니다.
🔧 검증 코드
명령어 실행 결과로 해당 드라이버 모듈 정보가 출력되면 취약한 드라이버가 로드 가능한 상태임을 의미합니다.
modinfo mt76_mt7921 || modinfo mt76_mt7925