CVE-2026-74504 in Linux정보

요약

\~에 의해 VulDB • 2026. 08. 15.

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

ALSA: seq: initialize_timer()에서의 0으로 나누기 오류 수정

사용자 공간(ALSAspace) 기반의 ALSA 타이머(SND_UTIMER)를 사용하면 비특권 사용자가 SNDRV_TIMER_IOCTL_CREATE를 통해 백킹 snd_timer의 하드웨어 해상도를 임의의 64비트 값으로 설정할 수 있습니다. snd_utimer_create() 함수는 0인 경우만 거부합니다.

이러한 타이머가 시퀀서 큐에 바인딩되면, initialize_timer()는 틱 주기를 다음과 같이 계산합니다:

tmr->ticks = 1000000000 / (r * freq);

여기서 r은 사용자가 제어할 수 있는 해상도이고, freq는 Hz 단위의 시퀀서 업데이트 속도이며 MIN_FREQUENCY..MAX_FREQUENCY(10..6250)로 제한됩니다. 2^63의 해상도는 DEFAULT_FREQUENCY(1000)를 포함한 모든 짝수 freq에 대해 r * freq 곱이 0으로 오버플로우(wrap to zero)하게 되므로, 결과적으로 0으로 나누기 오류가 발생합니다.

이 나눗셈 연산은 인터럽트가 비활성화된 상태에서 tmr->lock 스핀락 하에서 실행되므로, Oops 발생 시 스핀락이 해제되지 않고 CPU가 멈추게 됩니다. 이 취약점은 /dev/snd/timer 및 /dev/snd/seq에 접근 권한을 가진 비특권 사용자로부터 도달 가능합니다.

Oops: divide error: 0000 [#1] SMP KASAN PTI
CPU: 7 UID: 1000 PID: 456 Comm: alsa_seq_utimer Not tainted 7.2.0-rc4+ RIP: 0010:initialize_timer.constprop.0+0x20a/0x2d0 snd_seq_timer_start+0x15e/0x2b0 snd_seq_control_queue+0x56f/0xba0 snd_seq_write+0x3e0/0x730

check_mul_overflow()를 사용하여 오버플로우되는 곱을 거부하고 단일 틱으로 폴백(fallback)함으로써, 주파수 계산에 오버플로우되었지만 0이 아닌 나머지 값(예: 2^63 * 1000 mod 2^64 == 0 또는 다른 해상도가 작은 값으로 래핑되는 경우)이 전달되지 않도록 방지합니다.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

Linux

예약하다

2026. 08. 15.

모더레이션

수락

항목

VDB-390832

EPSS

0.00000

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!