🇰🇷 한글 설명
Linux 커널의 pvrusb2 미디어 드라이버에서 pvr2_send_request_ex() 함수가 쓰기 URB를 성공적으로 제출한 뒤 읽기 URB 제출에 실패(예: -ENOMEM)하면, 쓰기 URB가 완료되기를 기다리지 않고 즉시 반환하는 문제가 있었습니다. 이로 인해 이후 호출 시 활성 상태의 URB를 다시 제출하려다 'URB submitted while active' 경고가 발생합니다. 수정 사항은 읽기 URB 제출 실패 시 쓰기 URB를 unlink하고 완료를 기다리도록 보장합니다.
💡 쉬운 설명
USB 장치와 통신하는 리눅스 커널 드라이버에서 메모리 부족 등으로 두 번째 요청이 실패하면, 첫 번째 요청이 끝나기 전에 드라이버가 종료되어 오류 경고가 발생합니다. 이 취약점은 주로 시스템 불안정이나 경고 로그를 유발하는 수준입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
media: pvrusb2: fix URB leak in pvr2_send_request_ex
When pvr2_send_request_ex() submits a write URB successfully but fails to
submit the read URB (e.g. returns -ENOMEM), it returns immediately without
waiting for the write URB to complete. Since the driver reuses the same
URB structure, a subsequent call to pvr2_send_request_ex() attempts to
submit the still-active write URB, triggering a 'URB submitted while
active' warning in usb_submit_urb().
Fix this by ensuring the write URB is unlinked and waited upon if the read
URB submission fails.
📍 영향받는 시스템
pvrusb2 드라이버를 사용하는 Linux 커널 (수정 이전 버전, PVR-USB2 하드웨어 TV 튜너 사용 시스템)
⚔️ 공격 벡터
로컬 사용자가 메모리 부족 상황을 유발하여 드라이버 오류 경로를 실행시키는 방식으로 경고 및 서비스 불안정을 일으킬 수 있으며, 원격 공격 경로는 확인되지 않음
🛡️ 대응 방법
배포판 제공 최신 Linux 커널 업데이트를 설치하고 재부팅하거나, 해당 커널 패치(URB unlink 및 대기 로직 추가)를 적용하세요.
🔧 검증 코드
커널 버전을 확인하고 pvrusb2 모듈이 로드되어 있는지 확인합니다. 모듈이 없으면 이 취약점의 영향을 받지 않으며, 있으면 배포판의 패치된 커널 버전으로 업데이트되었는지 패키지 변경 로그로 확인하세요.
uname -r && (lsmod 2>/dev/null | grep -i pvrusb2 || echo 'pvrusb2 module not loaded')