🇰🇷 한글 설명
Linux 커널의 pwc 미디어 드라이버에서 start_streaming() 함수 호출 실패 시 큐에 대기 중인 버퍼를 적절히 반환하지 않아 발생하는 메모리 누수 취약점입니다. USB 장치 연결 해제나 신호 중단으로 인해 오류가 발생할 경우, 할당된 버퍼가 해제되지 않고 시스템에 남게 됩니다.
💡 쉬운 설명
카메라 장치를 사용하는 과정에서 오류가 발생하면, 컴퓨터가 사용하던 메모리 공간을 제대로 돌려받지 못하고 계속 붙잡고 있게 되는 문제입니다. 이 현상이 반복되면 시스템의 메모리가 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: pwc: Return queued buffers on start_streaming() failure
The vb2 framework hands buffers to the driver via buf_queue() before
calling start_streaming(). If start_streaming() returns an error
without first returning those buffers via vb2_buffer_done(),
vb2_start_streaming() fires WARN_ON(owned_by_drv_count) and the queued
buffers leak.
pwc's start_streaming() had two early returns that hit this trap:
-ENODEV when the USB device was already disconnected, and -ERESTARTSYS
when mutex_lock_interruptible() was interrupted by a signal. Call the
existing pwc_cleanup_queued_bufs() helper with VB2_BUF_STATE_QUEUED
before returning (matching the state already used by the
pwc_isoc_init() error path in the same function).
This mirrors the uvcvideo fix in commit 4cf3b6fd54eb ("media: uvcvideo:
Return queued buffers on start_streaming() failure").
📍 영향받는 시스템
Linux kernel (pwc driver module 포함 버전)
⚔️ 공격 벡터
USB 장치의 강제 연결 해제 또는 특정 신호를 통한 인터럽트 유발
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.