🇰🇷 한글 설명
Linux 커널의 rt2x00 드라이버에서 프로브(probe) 과정 중 초기화가 완료되기 전에 전체 해제(teardown) 절차가 실행되는 취약점이 발견되었습니다. 이로 인해 드라이버 데이터나 워크큐 할당 실패 시 초기화되지 않은 워크 아이템을 해제하려 시도하여 시스템 오류가 발생할 수 있습니다.
💡 쉬운 설명
장치를 연결할 때 준비 과정이 채 끝나기도 전에 장치를 정리하려고 시도하여 컴퓨터 시스템에 오류를 일으키는 문제입니다. 준비되지 않은 상태에서 청소를 시도하다가 발생하는 실수라고 이해하면 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: rt2x00: avoid full teardown before work setup in probe
rt2x00lib_probe_dev() uses the full rt2x00lib_remove_dev() teardown for
all probe failures. However, drv_data allocation and workqueue allocation
can fail before intf_work, autowakeup_work and sleep_work have been
initialized.
Do not enter the full remove path until the probe has reached the point
where those work items are set up. Return directly for drv_data allocation
failure, and use a small early cleanup path for workqueue allocation
failure.
This issue was found by our static analysis tool and then confirmed by
manual review of rt2x00lib_probe_dev() and rt2x00lib_remove_dev(). The
early probe exits should not call a common teardown path that assumes the
later work setup has already completed.
A QEMU PoC forced alloc_ordered_workqueue() to fail before the work
initializers are reached. The resulting fail path entered
rt2x00lib_remove_dev(), and DEBUG_OBJECTS reported invalid work drains with
rt2x00lib_probe_dev() and rt2x00lib_remove_dev() in the stack.
📍 영향받는 시스템
Linux kernel (rt2x00 wireless driver module)
⚔️ 공격 벡터
메모리 할당 실패를 유도하는 특수하게 조작된 환경(예: QEMU PoC)을 통한 로컬 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.