CVE-2026-89715 in Linux
Sumário
de VulDB • 11/09/2026
No kernel do Linux, a seguinte vulnerabilidade foi resolvida:
NFS/localio: corrige vazamento de referência na falha de nfs_uuid_add_file
Quando nfs_uuid_add_file() entra em condição de corrida com nfs_uuid_put(), que está derrubando uuid->net, ele retorna -ENXIO sem publicar nfl->nfs_uuid via rcu_assign_pointer(). Em seguida, nfs_open_local_fh() entra no seu ramo de erro e libera apenas a referência do arquivo da slot (slot's file ref) e sua referência net pareada, além de sua própria entrada-net ref durante o tempo de entrada, enquanto o caminho de fechamento é uma operação nula:
nfs_close_local_fh() nfs_uuid = rcu_dereference(nfl->nfs_uuid); if (!nfs_uuid) { rcu_read_unlock(); return; } /* sempre */
nfsd_open_local_fh() retorna localio segurando uma referência nfsd_file +1 de propriedade do chamador (de nfsd_file_get() após nfsd_file_acquire_local()) e uma referência nfsd_net no momento da entrada (da sua primeira chamada a nfsd_net_try_get()), embutida como nf->nf_net. Ambas são vazadas no caminho de falha, fixando um nfsd_file (e o struct file subjacente, dentry, inode) e uma nfsd_net_ref por ocorrência, o que bloqueia o derrubamento do nfsd_net e netns.
Correção liberando a referência do arquivo de propriedade do chamador e sua referência net através da auxiliar existente, usando um ponteiro RCU local à pilha para que a auxiliar possa fazer xchg dele, retornando então -ENXIO para que os chamadores não desreferenciem um localio cuja slot foi limpa:
struct nfsd_file __rcu *tmp = RCU_INITIALIZER(localio);
nfs_to_nfsd_file_put_local(pnf); nfs_to_nfsd_file_put_local(&tmp); localio = ERR_PTR(-ENXIO);
O nfs_to_nfsd_net_put(net) final continua liberando a referência net externa, de modo que todos os três incrementos de nfsd_net_try_get() são equilibrados no ramo de erro.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.