🇰🇷 한글 설명
Linux 커널의 airspy 드라이버에서 start_streaming() 호출 실패 시 큐에 대기 중인 버퍼를 반환하지 않아 발생하는 메모리 누수 취약점입니다. USB 장치가 연결 해제될 때 에러가 발생하면 버퍼가 적절히 처리되지 않고 유실되는 문제가 있었습니다.
💡 쉬운 설명
카메라 장치를 사용하려 할 때 연결이 끊기면, 컴퓨터가 사용하던 메모리 공간을 제대로 돌려받지 못해 메모리가 낭비되는 문제입니다. 이로 인해 시스템의 메모리가 조금씩 줄어들 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: airspy: 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.
airspy_start_streaming() returned -ENODEV early when the USB device had
been disconnected (s->udev == NULL) without returning any buffers that
buf_queue() had already accepted. Take v4l2_lock first and jump to the
existing err_clear_bit label, which already drains s->queued_bufs via
vb2_buffer_done(..., VB2_BUF_STATE_QUEUED) before unlocking.
This mirrors the uvcvideo fix in commit 4cf3b6fd54eb ("media: uvcvideo:
Return queued buffers on start_streaming() failure").
📍 영향받는 시스템
Linux kernel (media: airspy driver 포함 버전)
⚔️ 공격 벡터
물리적 장치(Airspy USB)의 갑작스러운 연결 해제를 통한 메모리 누수 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 이후 버전인지 확인하십시오.