🇰🇷 한글 설명
Linux 커널의 mt7996 WiFi 드라이버에서 mt7996_mac_dump_work() 함수 실행 중 Use-After-Free(UAF) 취약점이 발견되었습니다. 장치가 분리될 때 코어덤프 데이터가 먼저 해제된 후 작업 큐의 작업이 실행되면서 이미 해제된 메모리에 접근하는 레이스 컨디션이 발생합니다.
💡 쉬운 설명
WiFi 장치를 컴퓨터에서 제거할 때, 시스템이 이미 삭제한 데이터를 다시 사용하려고 시도하여 오류가 발생하는 문제입니다. 이로 인해 시스템이 멈추거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: mt76: mt7996: fix use-after-free bugs in mt7996_mac_dump_work()
When the mt7996 pci chip is detaching, the mt7996_crash_data is
released in mt7996_coredump_unregister(). However, the work item
dump_work may still be running or pending, leading to UAF bugs
when the already freed crash_data is dereferenced again in
mt7996_mac_dump_work().
The race condition can occur as follows:
CPU 0 (removal path) | CPU 1 (workqueue)
mt7996_pci_remove() | mt7996_sys_recovery_set()
mt7996_unregister_device() | mt7996_reset()
mt7996_coredump_unregister() | queue_work()
vfree(dev->coredump.crash_data) | mt7996_mac_dump_work()
| crash_data-> // UAF
Fix this by ensuring dump_work is properly canceled before
the crash_data is deallocated. Add cancel_work_sync() in
mt7996_unregister_device() to synchronize with any pending
or executing dump work.
📍 영향받는 시스템
Linux kernel (mt76/mt7996 driver module)
⚔️ 공격 벡터
특정 조건에서 WiFi 장치를 제거하거나 비활성화할 때 발생하는 레이스 컨디션 유도
🛡️ 대응 방법
Linux 커널을 최신 버전으로 업데이트하여 mt7996_unregister_device() 내에 cancel_work_sync()가 적용된 패치를 적용하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.