CVE-2026-46048 in Linux정보

요약

\~에 의해 VulDB • 2026. 06. 02.

리눅스 커널에서 다음 취약점이 해결되었습니다:

ALSA: caiaq: probe 실패 시 usb_dev 참조 카운트 누수 수정

create_card()는 usb_get_dev()를 사용하여 USB 장치에 대한 참조를 획득하고, 해당 참조를 해제하기 위한 usb_put_dev() 호출을 card_free()에 저장합니다. card_free()는 snd_card의 ->private_free 소멸자로 등록됩니다.

그러나 ->private_free는 init_card()의 마지막 단계 근처에서만 할당됩니다. 이는 여러 실패 지점(usb_set_interface(), 엔드포인트 유형 검사, usb_submit_urb(), EP1_CMD_GET_DEVICE_INFO 교환 및 해당 타임아웃) 이후의 작업입니다. 이러한 작업 중 하나라도 실패하면 init_card()은 snd_probe()로 오류를 반환하며, snd_probe()는 snd_card_free(card)를 호출합니다. ->private_free가 여전히 NULL 상태이므로 card_free()가 실행되지 않고, usb_get_dev() 참조가 해제되지 않으며, struct usb_device가 설명자 할당 및 device_private와 함께 누수됩니다.

syzbot은 유효한 altsetting이 0뿐인 잘못된 UAC3 장치를 사용하여 이를 재현합니다. init_card()의 usb_set_interface(usb_dev, 0, 1) 호출이 -EIO로 실패하여 누수를 유발합니다.

->private_free 할당을 create_card() 내로 이동하여 usb_get_dev() 호출 직후에 수행합니다. 이렇게 하면 snd_card_free()에 도달하는 모든 오류 경로에서 참조가 균형 있게 처리됩니다. card_free()의 호출자들(snd_usb_caiaq_input_free, free_urbs, kfree)은 chip private 영역이 snd_card_new()에 의해 0으로 초기화되어 있으므로 부분적으로 초기화된 상태에서도 이미 견딜 수 있습니다.

If you want to get best quality of vulnerability data, you may have to visit VulDB.

출처

Do you know our Splunk app?

Download it now for free!