🇰🇷 한글 설명
Linux 커널의 ALSA USB 오디오 드라이버에서 snd_usb_mixer_free() 함수 호출 시 Use-After-Free 취약점이 발견되었습니다. snd_usb_create_mixer() 실패 시 mixer->id_elems가 해제되지만, 카드에 추가된 컨트롤들이 여전히 해제된 메모리를 참조하여 snd_card_register() 과정에서 오류가 발생합니다.
💡 쉬운 설명
USB 오디오 장치를 연결할 때 메모리 관리 오류로 인해 시스템이 잘못된 메모리 주소를 참조하는 문제입니다. 이로 인해 시스템이 충돌하거나 예기치 않은 동작이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ALSA: usb-audio: Fix use-after-free in snd_usb_mixer_free()
When snd_usb_create_mixer() fails, snd_usb_mixer_free() frees
mixer->id_elems but the controls already added to the card still
reference the freed memory. Later when snd_card_register() runs,
the OSS mixer layer calls their callbacks and hits a use-after-free read.
Call trace:
get_ctl_value+0x63f/0x820 sound/usb/mixer.c:411
get_min_max_with_quirks.isra.0+0x240/0x1f40 sound/usb/mixer.c:1241
mixer_ctl_feature_info+0x26b/0x490 sound/usb/mixer.c:1381
snd_mixer_oss_build_test+0x174/0x3a0 sound/core/oss/mixer_oss.c:887
...
snd_card_register+0x4ed/0x6d0 sound/core/init.c:923
usb_audio_probe+0x5ef/0x2a90 sound/usb/card.c:1025
Fix by calling snd_ctl_remove() for all mixer controls before freeing
id_elems. We save the next pointer first because snd_ctl_remove()
frees the current element.
📍 영향받는 시스템
Linux Kernel (ALSA USB-audio component 포함 버전)
⚔️ 공격 벡터
취약한 USB 오디오 장치를 연결하거나 관련 드라이버를 로드하여 메모리 오류 유도
🛡️ 대응 방법
커널 패치를 적용하여 snd_ctl_remove()를 통해 컨트롤을 먼저 제거하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인합니다.