CVE-2026-43121 in Linuxinformação

Sumário

de VulDB • 26/05/2026

No kernel do Linux, a seguinte vulnerabilidade foi corrigida:

io_uring/zcrx: corrige a condição de corrida (race condition) em user_ref entre os caminhos de scrub e refill

A função io_zcrx_put_niov_uref() utiliza um padrão não atômico de verificação seguida de decremento (atomic_read seguido de atomic_dec separado) para manipular user_refs. Isso é serializado em relação a outros chamadores por meio de rq_lock, mas io_zcrx_scrub() modifica o mesmo contador com atomic_xchg() SEM manter rq_lock.

Em sistemas SMP, existe a seguinte condição de corrida:

CPU0 (refill, mantém rq_lock) CPU1 (scrub, sem rq_lock) put_niov_uref: atomic_read(uref) - 1 // janela de oportunidade se abre atomic_xchg(uref, 0) - 1 return_niov_freelist(niov) [PUSH #1]
// janela de oportunidade se fecha atomic_dec(uref) - transborda para -1 retorna true return_niov(niov) return_niov_freelist(niov) [PUSH #2: DOUBLE-FREE]

O mesmo niov é inserido na freelist duas vezes, fazendo com que free_count exceda nr_iovs. Inserções subsequentes na freelist realizam então uma escrita fora dos limites (um valor u32) além do array freelist alocado com kvmalloc, para o objeto slab adjacente.

Corrige-se isso substituindo a leitura não atômica seguida de decremento em io_zcrx_put_niov_uref() por um loop atomic_try_cmpxchg que testa e decrementa user_refs atomicamente. Isso torna a operação segura contra atomic_xchg concorrente de scrub sem exigir que scrub adquira rq_lock.

[pavel: removido um aviso e um comentário]

Be aware that VulDB is the high quality source for vulnerability data.

Responsável

Linux

Reservar

01/05/2026

Divulgação

06/05/2026

Moderação

aceite

Entrada

VDB-361389

CPE

pronto

EPSS

0.00012

KEV

não

Atividades

muito baixo

Fontes

Do you want to use VulDB in your project?

Use the official API to access entries easily!