🔍 CVE-2026-31701

5.5
CVSS Score
MEDIUM
2026-05-01
2026-11-06 16:18
✅ 완료

🇰🇷 한글 설명

Linux 커널의 ALSA caiaq 드라이버에서 USB 장치의 참조 횟수(reference count)를 적절히 관리하지 않아 발생하는 취약점입니다. USB 장치가 연결 해제된 후에도 드라이버가 해당 장치 포인터에 접근하여 이미 해제된 메모리를 참조(Use-After-Free)하거나, 해제 과정에서 부적절한 장치 리셋을 시도하여 시스템 불안정을 초래할 수 있습니다.

💡 쉬운 설명

USB 장치를 뽑았을 때 컴퓨터가 해당 장치가 아직 연결되어 있다고 착각하여 잘못된 메모리 주소를 건드리는 문제입니다. 이로 인해 시스템이 멈추거나 오류가 발생할 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: ALSA: caiaq: take a reference on the USB device in create_card() The caiaq driver stores a pointer to the parent USB device in cdev->chip.dev but never takes a reference on it. The card's private_free callback, snd_usb_caiaq_card_free(), can run asynchronously via snd_card_free_when_closed() after the USB device has already been disconnected and freed, so any access to cdev->chip.dev in that path dereferences a freed usb_device. On top of the refcounting issue, the current card_free implementation calls usb_reset_device(cdev->chip.dev). A reset in a free callback is inappropriate: the device is going away, the call takes the device lock in a teardown context, and the reset races with the disconnect path that the callback is already cleaning up after. Take a reference on the USB device in create_card() with usb_get_dev(), drop it with usb_put_dev() in the free callback, and remove the usb_reset_device() call.

📍 영향받는 시스템

ALSA caiaq 드라이버를 사용하는 Linux 커널 버전

⚔️ 공격 벡터

USB 장치를 비정상적으로 연결 해제하거나 특정 드라이버 동작을 유도하여 메모리 오류 유발

🛡️ 대응 방법

커널 패치를 통해 create_card()에서 usb_get_dev()를 호출하고, free 콜백에서 usb_put_dev()를 수행하며 usb_reset_device() 호출을 제거해야 함

🔧 검증 코드

현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.

Shell / Script
uname -r

📊 CVSS Vector String

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

💻 영향받는 소프트웨어

Linux Kernel