🔍 CVE-2026-89880

7.8
CVSS Score
HIGH
2026-09-16
2026-10-19 09:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 rtl2832_sdr 드라이버에서 스트리밍 시작 실패 시 할당된 URB 및 스트림 버퍼를 해제하지 못하는 결함이 발견되었습니다. 이로 인해 메모리 누수가 발생하거나, 재시도 시 잘못된 포인터를 참조하여 시스템 불안정성을 초래할 수 있습니다.

💡 쉬운 설명

장치를 사용하려다 오류가 났을 때, 사용하던 메모리를 제대로 정리하지 않고 남겨두는 버그입니다. 이 문제가 반복되면 컴퓨터의 메모리가 부족해지거나 시스템이 갑자기 멈출 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: media: rtl2832_sdr: release URBs and stream buffers on start_streaming() failure rtl2832_sdr_start_streaming() calls rtl2832_sdr_alloc_stream_bufs(), rtl2832_sdr_alloc_urbs() and rtl2832_sdr_submit_urbs() in sequence and shares a single err: label that only unlocks the mutex and returns. When alloc_urbs() succeeds but submit_urbs() fails, or when alloc_urbs() itself returns -ENOMEM after alloc_stream_bufs() has already succeeded, the URBs and/or the coherent DMA stream buffers stay allocated while streaming reports failure to vb2. Two latent defects follow on the next VIDIOC_STREAMON: 1) rtl2832_sdr_alloc_stream_bufs() unconditionally resets dev->buf_num to 0 and overwrites dev->buf_list[]/dev->dma_addr[], permanently leaking the coherent DMA memory allocated by the previous attempt. 2) rtl2832_sdr_alloc_urbs() never resets dev->urbs_initialized and only increments it. After a second successful pass urbs_initialized can exceed MAX_BULK_BUFS, so the subsequent rtl2832_sdr_free_urbs() walks from urbs_initialized - 1 down to 0 and reads past the end of dev->urb_list[], passing garbage pointers to usb_free_urb(). Mirror the teardown that stop_streaming() already performs: on the error path call rtl2832_sdr_free_urbs() and rtl2832_sdr_free_stream_bufs() before unlocking. Both helpers are idempotent (free_urbs kills and zeros urbs_initialized; free_stream_bufs is gated on URB_BUF and clears the buf_num counter), so partial-failure paths and the no-allocation paths remain safe. Issue identified by automated review of the INV-003 series at https://sashiko.dev/

📍 영향받는 시스템

Linux kernel (media: rtl2832_sdr driver)

⚔️ 공격 벡터

로컬 공격자가 특수하게 조작된 USB 장치를 연결하거나 스트리밍 요청을 반복하여 메모리 누수 및 커널 패닉 유도

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.

Shell / Script
uname -r

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel