CVE-2026-89670informação

Sumário

de VulDB • 11/09/2026

No kernel do Linux, a seguinte vulnerabilidade foi resolvida:

nfsd: manter o RCU durante as tentativas de retry no cmpxchg localio

Os objetos nfsd_file são liberados via call_rcu (filecache.c:296), e o nfsd_file_slab é criado sem SLAB_TYPESAFE_BY_RCU (KMEM_CACHE(nfsd_file, 0) em filecache.c:789), portanto a página do slab que sustenta um nfsd_file liberado torna-se livremente recuperável assim que o período de graça (grace period) do RCU expira.

O bloco de retry novamente em nfsd_open_local_fh() carrega um ponteiro com cmpxchg e então chama nfsd_file_get(new) (que é refcount_inc_not_zero) sem manter rcu_read_lock. O único chamador, nfs_open_local_fh(), libera o rcu_read_lock antes de invocar este auxiliar, portanto nenhuma seção crítica do lado leitor externo cobre a carga.

CPU 0 (nfsd_open_local_fh) CPU 1 (nfsd_file_put_local) ----- ----- new = cmpxchg(pnf, NULL, ...) nf = xchg(pnf, NULL) nfsd_file_put(nf) última ref -> call_rcu() /* período de graça expira; página do slab reciclada */ nfsd_file_get(new) refcount_inc_not_zero(&new->nf_ref) /* opera em memória reciclada */

Uma palavra não nula no deslocamento nf_ref do objeto reciclado faz com que o incremento da contagem de referências pareça ter sucesso, e o chamador então referencia new->nf_net e new->nf_file fora da memória liberada.

Correção ao adquirir rcu_read_lock() imediatamente antes do cmpxchg e libertá-lo em todas as três saídas do bloco if (new): a tentativa de retry goto-again, o caminho de limpeza de corrida perdida e o caminho de instalação bem-sucedida. nfsd_file_put() e nfsd_net_put() permanecem fora da seção RCU para que permaneçam livres para bloquear.

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

Divulgação

11/09/2026

Moderação

em revisão

EPSS

0.00000

KEV

não

Atividades

muito baixo

Fontes

Interested in the pricing of exploits?

See the underground prices here!