🔍 CVE-2026-74499

0.0
CVSS Score
UNKNOWN
2026-08-15
2026-08-19 17:21
✅ 완료

🇰🇷 한글 설명

Linux 커널의 ALSA usb-audio 드라이버에서 snd_usbmidi_akai_output() 함수가 버퍼 경계 계산 시 부호 있는 정수(signed int)를 사용하여 발생하는 Out-of-Bounds(OOB) 쓰기 취약점입니다. 공격자가 조작된 USB 장치를 연결하여 매우 작은 max_transfer 값을 광고하면, 루프 경계 값이 음수가 되어 부호 없는 정수로 변환될 때 매우 큰 값으로 인식됩니다. 이로 인해 URB 전송 버퍼의 범위를 벗어나 힙 메모리에 임의의 데이터를 쓰는 것이 가능해집니다.

💡 쉬운 설명

특수한 USB 악기 장치를 컴퓨터에 연결하면 컴퓨터의 메모리 영역을 넘어서 데이터를 써버리는 오류가 발생할 수 있습니다. 이를 통해 해커가 컴퓨터의 중요한 정보를 망가뜨리거나 제어권을 얻을 위험이 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: ALSA: usb-audio: fix OOB write in snd_usbmidi_akai_output() snd_usbmidi_akai_output() computes its fill-loop bound buf_end = ep->max_transfer - MAX_AKAI_SYSEX_LEN - 1; as a signed int, so a small device-advertised bulk-OUT max_transfer makes buf_end negative. The loop guard then compares the u32 urb->transfer_buffer_length against that negative int: the usual arithmetic conversion turns buf_end into a large unsigned value, so the guard stays true and each iteration keeps appending SysEx framing and payload bytes past the end of the URB transfer buffer, which is only max_transfer bytes long. A USB device that advertises a tiny bulk-OUT endpoint can therefore trigger an attacker-length- and content-controlled heap out-of-bounds write when a process writes to the created /dev/snd/midiC*D* node. Return early when there is no room for even one SysEx, so the loop is never entered with a bound that would wrap. The loop is the last statement of the function, so bailing out is equivalent to it not running. Discovered by XBOW, triaged by Baul Lee <[email protected]>

📍 영향받는 시스템

Linux kernel (ALSA usb-audio driver 포함 버전)

⚔️ 공격 벡터

조작된 max_transfer 값을 가진 USB MIDI 장치를 연결하고 /dev/snd/midiC*D* 노드에 데이터를 쓰는 방식

🛡️ 대응 방법

Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 snd_usbmidi_akai_output() 함수의 경계 검사 로직을 수정해야 합니다.

🔧 검증 코드

출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인합니다.

Shell / Script
uname -r

💻 영향받는 소프트웨어

NVIDIA Cloud Gaming Guest Driver for Linux