🇰🇷 한글 설명
Linux 커널의 uvcvideo 드라이버에서 비동기 제어 작업 중 uvc_status_stop이 호출될 때 데드락(교착 상태)이 발생하는 취약점입니다. uvc_status_stop 내의 cancel_work_sync 함수가 현재 실행 중인 작업이 완료되기를 기다리면서 시스템이 멈추는 현상이 발생합니다.
💡 쉬운 설명
USB 카메라를 사용할 때 특정 명령이 겹치면 컴퓨터의 카메라 관련 기능이 응답하지 않고 멈춰버리는 문제입니다. 시스템이 서로의 작업이 끝나기만을 기다리며 무한 대기에 빠지는 현상입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: uvcvideo: Fix deadlock if uvc_status_stop is called from async_ctrl.work
If a UVC camera has an asynchronous control, uvc_status_stop may be
called from async_ctrl.work:
uvc_ctrl_status_event_work()
uvc_ctrl_status_event()
uvc_ctrl_clear_handle()
uvc_pm_put()
uvc_status_put()
uvc_status_stop()
cancel_work_sync()
This will cause a deadlock, since cancel_work_sync will wait for
uvc_ctrl_status_event_work to complete before returning.
Fix this by returning early from uvc_status_stop if we are currently in
the work function. flush_status now remains false until uvc_status_start
is called again, ensuring that uvc_ctrl_status_event_work won't resubmit
the URB.
📍 영향받는 시스템
Linux kernel (uvcvideo driver 포함 버전)
⚔️ 공격 벡터
비동기 제어 명령을 사용하는 UVC 카메라 장치를 연결하여 특정 조건의 제어 요청을 보냄
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인