🇰🇷 한글 설명
Linux 커널의 ALSA usb-audio 구성 요소에서 발생하는 취약점으로, 사용자가 조작된 파라미터를 통해 할당된 URB 버퍼 크기를 초과하는 프레임 수를 계산할 수 있습니다. 이로 인해 메모리 경계 외 쓰기(Out-of-Bounds)가 발생하여 시스템 안정성을 해치거나 보안 위협을 초래할 수 있습니다.
💡 쉬운 설명
오디오 장치에 데이터를 보낼 때, 컴퓨터가 준비한 그릇보다 더 많은 양의 데이터를 담으려고 시도하여 메모리 오류가 발생하는 문제입니다. 이 오류를 이용하면 시스템이 멈추거나 해킹의 통로가 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ALSA: usb-audio: Prevent excessive number of frames
In this case, the user constructed the parameters with maxpacksize 40
for rate 22050 / pps 1000, and packsize[0] 22 packsize[1] 23. The buffer
size for each data URB is maxpacksize * packets, which in this example
is 40 * 6 = 240; When the user performs a write operation to send audio
data into the ALSA PCM playback stream, the calculated number of frames
is packsize[0] * packets = 264, which exceeds the allocated URB buffer
size, triggering the out-of-bounds (OOB) issue reported by syzbot [1].
Added a check for the number of single data URB frames when calculating
the number of frames to prevent [1].
[1]
BUG: KASAN: slab-out-of-bounds in copy_to_urb+0x261/0x460 sound/usb/pcm.c:1487
Write of size 264 at addr ffff88804337e800 by task syz.0.17/5506
Call Trace:
copy_to_urb+0x261/0x460 sound/usb/pcm.c:1487
prepare_playback_urb+0x953/0x13d0 sound/usb/pcm.c:1611
prepare_outbound_urb+0x377/0xc50 sound/usb/endpoint.c:333
📍 영향받는 시스템
Linux Kernel (ALSA usb-audio 구성 요소 포함 버전)
⚔️ 공격 벡터
조작된 오디오 파라미터(maxpacksize, rate, pps 등)를 포함한 데이터 전송을 통한 로컬 공격
🛡️ 대응 방법
ALSA usb-audio의 프레임 수 계산 로직이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 최신 보안 업데이트 버전인지 확인합니다.