🇰🇷 한글 설명
Linux 커널의 ALSA USB 6fire 드라이버에서 URB(USB Request Block)를 구조체 내에 임베디드 방식으로 사용하는 과정에서 발생하는 취약점입니다. 이 방식은 참조 횟수 관리 문제로 인해 비동기적으로 URB가 해제될 때 Use-After-Free(UAF) 오류를 유발할 수 있습니다.
💡 쉬운 설명
USB 장치를 연결해 사용하는 과정에서 메모리 관리 방식의 오류로 인해 시스템이 충돌하거나 보안 문제가 생길 수 있는 결함입니다. 이를 해결하기 위해 메모리를 더 안전하게 할당하는 방식으로 코드가 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ALSA: usb: 6fire: Avoid embedded URBs
The USB 6fire driver uses URBs embedded in different structs for PCM,
MIDI and communication, and this is basically a buggy implementation
nowadays; since a URB is managed with a refcount, this may lead to a
UAF when the URB is released asynchronously.
For addressing the problem, this patch converts those embedded URBs to
ones that are properly allocated via usb_alloc_urb(). The
pcm_urb.packets[] is gone, as it's allocated by usb_alloc_urb(), hence
it's found in urb.iso_frame_desc[] instead.
The conversions are rather straightforward; each embedded struct urb
is changed to a pointer, and its callers are updated accordingly.
The resource for those structs are released in the common destructor
functions (usb6fire_comm_free(), etc), which are called at both the
init error path and the disconnect.
No functional changes, only compile-tested.
📍 영향받는 시스템
Linux Kernel (ALSA USB 6fire driver 포함 버전)
⚔️ 공격 벡터
취약한 드라이버가 로드된 상태에서 특정 USB 6fire 장치를 연결하거나 조작하여 메모리 오류 유도
🛡️ 대응 방법
USB 6fire 드라이버의 URB 할당 방식이 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 패치된 최신 버전인지 확인합니다.