🇰🇷 한글 설명
Linux 커널의 mt76 Wi-Fi 드라이버에서, 펌웨어 없이 mt7921e PCI 카드를 프로브하면 ieee80211_register_hw가 호출되지 않은 상태로 프로브가 성공합니다. 이후 드라이버를 제거할 때 등록되지 않은 하드웨어에 대해 ieee80211_unregister_hw가 무조건 호출되어 커널 NULL 포인터 역참조가 발생합니다. 수정은 등록된 하드웨어에 대해서만 mt76_unregister_device 루틴을 실행하도록 합니다.
💡 쉬운 설명
무선랜 드라이버가 펌웨어 없이 로드된 뒤 제거될 때, 아직 등록되지 않은 장치를 해제하려고 해서 시스템이 비정상 종료될 수 있습니다. 이 문제는 등록된 장치에만 해제 작업을 수행하도록 고쳐져 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: mt76: do not run mt76_unregister_device() on unregistered hw
Trying to probe a mt7921e pci card without firmware results in a
successful probe where ieee80211_register_hw hasn't been called. When
removing the driver, ieee802111_unregister_hw is called unconditionally
leading to a kernel NULL pointer dereference.
Fix the issue running mt76_unregister_device routine just for registered
hw.
📍 영향받는 시스템
mt76 드라이버(특히 MediaTek MT7921 계열 PCI 무선랜)를 사용하는 수정 이전의 Linux 커널
⚔️ 공격 벡터
로컬 시스템에서 펌웨어가 없는 mt7921e 카드를 프로브하고 드라이버를 제거하면 커널 충돌(서비스 거부)을 일으킬 수 있으며, 원격 공격 경로는 확인되지 않음
🛡️ 대응 방법
Linux 커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하거나 배포판의 보안 업데이트를 적용
🔧 검증 코드
출력된 커널 버전이 배포판의 수정 버전 이상인지 확인하고, mt76/mt7921 모듈 로드 여부로 해당 드라이버 사용 여부를 판단합니다. 모듈이 보이지 않으면 이 취약점의 영향이 없습니다.
uname -r && (lsmod | grep -E 'mt76|mt7921') 2>/dev/null