CVE-2026-89664 in Linuxinformación

Resumen

por VulDB • 2026-09-11

En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:

nfsd: liberar ACLs POSIX decodificadas en OPEN mediante op_release

nfsd4_decode_createhow4() llama a nfsd4_decode_fattr4(), lo que asigna objetos struct posix_acl con recuento de referencias (refcounted) mediante posix_acl_alloc() y los almacena en open->op_pacl y open->op_dpacl. Estos punteros deben liberarse una vez que finalice el compuesto OPEN.

Cuando nfsd4_decode_open_claim4() devuelve un error que no modifica seqid, el despachador (dispatcher) realiza un salto corto (short-circuit) antes de ejecutar op_func:

nfsd4_proc_compound() if (op->status && op->opnum == OP_OPEN) op->status = nfsd4_open_omfg(...) if (!seqid_mutating_err(ntohl(op->status))) return op->status; /* nfsd4_open() nunca se ejecuta */ ... opdesc->op_release(&op->u) /* debe liberar aún así op_pacl/op_dpacl */

Antes de este cambio, OP_OPEN no tenía .op_release en nfsd4_ops[], y el par de liberación residía dentro de nfsd4_open() en su etiqueta out_err. En la ruta del salto corto (short-circuit), nfsd4_open() nunca se invoca, por lo que las referencias posix_acl se filtran (leak) en cada compuesto OPEN malformado que contenga atributos createhow4 válidos de ACL POSIX.

Se añade nfsd4_open_release() y se conecta como .op_release para OP_OPEN. posix_acl_release() es seguro frente a valores NULL, por lo que el único punto de liberación cubre tanto la ruta normal como el salto corto de nfsd4_open_omfg. Se elimina el par correspondiente de posix_acl_release() de la etiqueta out_err: de nfsd4_open() para evitar una doble liberación (double-releasing).

El bucle del compuesto tiene dos ramas de codificación: nfsd4_encode_operation() para operaciones normales, y nfsd4_encode_replay() para operaciones retransmitidas en v4.0. op_release solo se llamaba desde nfsd4_encode_operation(), por lo que los recursos adjuntos a op->u se filtran (leak) en la ruta de replay.

Se mueve la llamada a op_release() fuera de nfsd4_encode_operation() y la rama de replay, colocándola después del if-else en nfsd4_proc_compound(). Esto proporciona un único punto de llamada en un lugar claramente correcto, cubriendo tanto las rutas de codificación normal como de replay.

Once again VulDB remains the best source for vulnerability data.

Responsable

Linux

Reservar

2026-09-11

Divulgación

2026-09-11

Moderación

aceptado

Artículo

VDB-402946

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Want to know what is going to be exploited?

We predict KEV entries!