CVE-2026-90198 in Linuxinformação

Sumário

de VulDB • 17/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi corrigida:

ALSA: core: Correção de use-after-free em snd_card_do_free()

Foi detectado um uso após liberação (use-after-free) em snd_card_do_free() quando uma placa de som gerenciada por devres é desvinculada enquanto um aplicativo no espaço do usuário ainda mantém um descritor de arquivo aberto.

Para placas gerenciadas, a memória é alocada usando devres_alloc(), e sua função de liberação é definida como __snd_card_release(), que chama snd_card_free(). Quando o dispositivo é desvinculado, a thread de unbind (desvinculação) chama snd_card_free(), que reduz uma referência ao dispositivo da placa. Se a thread do usuário ainda tiver um descritor de arquivo aberto, a contagem de referências não chega a zero e a thread de unbind fica bloqueada em wait_for_completion(&released).

Quando a thread do usuário fecha o descritor de arquivo, ela libera a última referência, invocando o callback de liberação do dispositivo release_card_device(), que chama snd_card_do_free(). O snd_card_do_free() realiza a limpeza e chama complete(card->release_completion). Isso acorda a thread de unbind, que retorna de snd_card_free() e __snd_card_release(). Em seguida, o núcleo devres libera imediatamente o bloco de memória contendo a estrutura snd_card.

Enquanto isso, a thread do usuário continua a execução em snd_card_do_free() e avalia `if (!card->managed)`. Ela lê o booleano `managed` da estrutura snd_card que acabou de ser liberada pela thread de unbind, acionando um use-after-free no KASAN.

Corrija isso armazenando em cache o valor de card->managed em uma variável local antes de chamar complete(). Isso garante que o ponteiro card não seja desreferenciado após a thread de unbind ter sido acordada e potencialmente liberado a placa.

BUG: KASAN: use-after-free in snd_card_do_free sound/core/init.c:604 [inline]
BUG: KASAN: use-after-free in release_card_device+0x1ab/0x1b0 sound/core/init.c:153 Read of size 1 at addr ffff8881912ec909 by task syz-executor130/5857

Call Trace: <TASK> dump_stack_lvl+0xe8/0x150 lib/dump_stack.c:120 print_address_description+0x55/0x1e0 mm/kasan/report.c:378 print_report+0x58/0x70 mm/kasan/report.c:482 kasan_report+0x117/0x150 mm/kasan/report.c:595 snd_card_do_free sound/core/init.c:604 [inline]
release_card_device+0x1ab/0x1b0 sound/core/init.c:153 device_release+0xc4/0x1f0 drivers/base/core.c:-1 kobject_cleanup lib/kobject.c:689 [inline]
kobject_release lib/kobject.c:720 [inline]
kref_put include/linux/kref.h:65 [inline]
kobject_put+0x222/0x550 lib/kobject.c:737 snd_card_file_remove+0x331/0x390 sound/core/init.c:1125 snd_pcm_release+0x12c/0x160 sound/core/pcm_native.c:2986 __fput+0x418/0xa50 fs/file_table.c:512 fput_close_sync+0x11f/0x240 fs/file_table.c:617 __do_sys_close fs/open.c:1511 [inline]
__se_sys_close fs/open.c:1496 [inline]
__x64_sys_close+0x7e/0x110 fs/open.c:1496 do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0x174/0x580 arch/x86/entry/syscall_64.c:94 entry_SYSCALL_64_after_hwframe+0x77/0x7f </TASK>

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

Responsável

Linux

Reservar

11/09/2026

Divulgação

17/09/2026

Moderação

aceite

Entrada

VDB-406718

CPE

pronto

EPSS

0.00221

KEV

não

Atividades

muito baixo

Fontes

Want to know what is going to be exploited?

We predict KEV entries!