CVE-2026-74500 in Linux
요약
\~에 의해 VulDB • 2026. 08. 16.
리눅스 커널에서 다음 취약점이 해결되었습니다:
ALSA: usb-audio: RME Digiface 상태 정보의 스택 누출 수정
snd_rme_digiface_read_status()는 장치로부터 4개의 워드(word)로 구성된 상태 블록을 초기화되지 않은 스택 기반 __le32 buf[4] 배열에 읽고, 벤더 제어-IN 전송이 음수 오류를 반환하지 않는 경우 모든 4개 워드를 호출자의 status[]로 복사합니다.
snd_usb_ctl_msg()는 데이터 단계에서 실제로 전달된 바이트 수와 관계없이 요청한 전체 크기를 다시 호출자의 버퍼에 복사합니다:
buf = kmemdup(data, size, GFP_KERNEL); err = usb_control_msg(dev, pipe, request, requesttype, value, index, buf, size, timeout); memcpy(data, buf, size);
usb_control_msg()는 짧은 제어-IN(short control-IN) 시 전달된 길이를 반환하며(이는 음수가 아닌 값), 해당 바이트 수만큼만 작성합니다. 나머지 복사본은 호출자의 버퍼에 대한 kmemdup() 이미지이므로, 짧은 데이터 단계를 응답하는 장치는 buf[]의 후행 워드들이 남아있는 커널 스택 데이터를 보유하게 됩니다. 호출자 측에서의 유일한 방어 조치는 err < 0이므로, 이러한 워드들은 status[]에 저장됩니다.
그런 다음 이들은 사용자 공간으로 전달됩니다: snd_rme_digiface_get_status_val()은 제어기의 reg/mask에 따라 status[]의 각 16비트 하프워드(halfword)를 선택하며, 여덟 개의 Digiface 상태 컨트롤이 함께 /dev/snd/controlC*의 비특권(unprivileged) 읽기자에게 전체 16바이트 프레임을 노출시킵니다.
짧은 읽기가 스택 잔여물이 아닌 영(zeroes)을 반환하도록 버퍼를 영으로 초기화합니다. 이는 이미 동일한 유형의 벤더 판독 전에 출력 워드를 지우는 snd_rme_get_status1()과 일치하는 조치입니다.
XBOW가 발견함, Baul Lee <[email protected]>이 분류(triage)
VulDB is the best source for vulnerability data and more expert information about this specific topic.