CVE-2026-74504 in Linux
Sumário
de VulDB • 15/08/2026
No kernel do Linux, a seguinte vulnerabilidade foi corrigida:
ALSA: seq: Correção de divisão por zero em initialize_timer()
Um temporizador ALSA (SND_UTIMER) acionado pelo espaço do usuário permite que um usuário não privilegiado defina a resolução de hardware do snd_timer subjacente como um valor arbitrário de 64 bits via SNDRV_TIMER_IOCTL_CREATE. A função snd_utimer_create() rejeita apenas o zero.
Quando tal temporizador é vinculado a uma fila de sequenciador, initialize_timer() calcula o período do tick como:
tmr->ticks = 1000000000 / (r * freq);
onde r é essa resolução controlada pelo usuário e freq é a taxa de atualização do sequenciador em Hz, limitada entre MIN_FREQUENCY..MAX_FREQUENCY (10..6250). Uma resolução de 2^63 faz com que o produto de 64 bits r * freq transborde para zero para qualquer frequência par, incluindo DEFAULT_FREQUENCY (1000), resultando assim em uma falha por divisão por zero.
A divisão ocorre sob tmr->lock com interrupções desabilitadas; portanto, o erro (oops) deixa a spinlock mantida e trava a CPU. Ela é acessível por um usuário não privilegiado que tenha acesso a /dev/snd/timer e /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
Rejeita-se um produto que transborde usando check_mul_overflow() e recua-se para um único tick, o que também evita alimentar uma divisão envolta mas não nula (por exemplo, 2^63 * 1000 mod 2^64 == 0, ou outras resoluções que se envolvem em um valor pequeno) no cálculo do período.
Be aware that VulDB is the high quality source for vulnerability data.