🇰🇷 한글 설명
Linux 커널의 sur40 드라이버에서 입력 장치 등록 순서 문제로 인해 데이터 경합 및 시스템 충돌이 발생할 수 있는 취약점입니다. V4L2 비디오 장치와 vb2_queue가 완전히 초기화되기 전에 입력 장치가 등록되어 초기화되지 않은 구조체에 접근하거나, 오류 발생 시 잘못된 함수를 호출하여 커널 상태를 손상시킬 수 있습니다.
💡 쉬운 설명
장치가 준비되기도 전에 사용자가 장치를 사용하려고 시도하면 컴퓨터 시스템이 갑자기 멈추거나 꺼질 수 있는 문제입니다. 또한 장치 설정 중 오류가 나면 시스템 내부 정보가 꼬여서 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
Input: sur40 - fix input device registration ordering
In sur40_probe(), input_register_device() was previously called early before
the V4L2 video device and vb2_queue components were fully initialized. If
userspace opened the input device immediately upon registration, sur40_open()
would trigger and start the sur40_poll() worker thread. This worker thread
invokes sur40_process_video() and accesses the uninitialized vb2_queue
structure, leading to a data race and potential system crash.
Furthermore, if V4L2 or video registration failed after input_register_device()
succeeded, the error path fell through to calling input_free_device() on a
successfully registered device instead of input_unregister_device(), corrupting
input core state.
Move input_register_device() to the very end of sur40_probe(). This ensures
the V4L2 and video queue structures are fully initialized before polling can
start, and naturally resolves the error path bug since input_free_device()
is now only called when input registration has not yet occurred.
To maintain strict LIFO (Last-In, First-Out) teardown ordering, also move
input_unregister_device() to the very beginning of sur40_disconnect(). This
guarantees that the input polling worker thread is stopped before V4L2
video components or control handlers are unregistered.
📍 영향받는 시스템
Linux kernel (sur40 driver component)
⚔️ 공격 벡터
장치 등록 직후 사용자 공간(userspace)에서 입력 장치를 즉시 열어 초기화되지 않은 메모리에 접근 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 sur40_probe 및 sur40_disconnect의 등록/해제 순서 수정 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인