Saltar al contenido
CVE-2026-89662 Fuente: CVE.org Publicada · sin explotación confirmada

Vulnerabilidad de uso después de liberar memoria (use-after-free) en Linux kernel (NFSD)

Linux · Linux · Publicada en CVE.org el 11-09-2026 · Última actualización: 09-11-2026

Descripción

En el Linux kernel se resolvió la siguiente vulnerabilidad: NFSD: prevenir el uso después de liberar memoria (use-after-free) del lock owner durante el desmontaje del cliente __destroy_client() libera los open owners de un cliente, pero un lock owner cuya única referencia es un bloqueo en espera (nbl) permanece en cl_ownerstr_hashtbl. client_has_state() no contabiliza un owner aislado, por lo que DESTROY_CLIENTID puede llegar a __destroy_client() con dichos owners presentes. Luego, __destroy_client() recorre la tabla y llama a remove_blocked_locks() sobre cada owner sin mantener una referencia. Liberar un bloqueo en espera libera la referencia del owner mantenida mediante flc_owner. El laundromat por espacio de red recupera los bloqueos en espera desde nn->blocked_locks_lru, independientemente del estado del cliente. Ambas rutas comparten blocked_locks_lock solo para la unión de listas, no para el ciclo de vida del owner. Por lo tanto, el laundromat libera el owner mientras __destroy_client() lo desreferencia, lo que produce una desreferencia de puntero nulo en remove_blocked_locks(). nfsd4_release_lockowner() mantiene una referencia durante la misma llamada; __destroy_client() no. Se mantiene cl_lock durante el recorrido, tomando una referencia y quitando cada owner de la tabla hash, y luego se libera antes de remove_blocked_locks() y nfs4_put_stateowner(), que toman blocked_locks_lock y cl_lock.

Qué hacer

Revisa si usas el producto afectado y en qué versión, y aplica la actualización o la mitigación que indique el aviso del fabricante. CISA no ha confirmado que se esté explotando; si eso cambia, esta ficha pasa a «explotada» y te avisamos en el boletín.

Versiones afectadas

  • Linux Afectadas: 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a 42d7954b0a1907d4ef122aef94561952a033cdc3 · 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a bb38ff8b4dafbbd1781ad37cd96722fdf2cd972a · 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a b8bad5a11416b26cc7fd4b18fba46d75ff636558 · 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a 1ce74d1b7770e69735e8f8e509807af4ff9c8ee7 · 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a a6ead6fff3a7d03e49845f048f7000a2e0d34431 · 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a 4804c58f73a80d12df1de323bf97a164f6ee8743 · 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a 8cf4ff0a7c083dd5e0067f517d63979b74b66649 · 68ef3bc3166468678d5e1fdd216628c35bd1186f y anteriores a 5e2fa29d223a9a1e6a948e40b109d09081d1decd · e294c4c2d33b7307a89cdf31bec08a112d6a9297 · 797bfd05d4040fbf766198b3cfcc1838002cc890
  • Linux Afectadas: 4.16 No afectadas: 5.10.270 · 5.15.221 · 6.1.188 · 6.6.157 · 6.12.109 · 6.18.50

Según el registro de la vulnerabilidad en CVE.org, tal como lo publicó el fabricante. Confirma tu versión exacta en el aviso del fabricante.

Referencias

Ver el texto original en inglés (CVE.org)

NFSD: Prevent lock owner use-after-free during client teardown

In the Linux kernel, the following vulnerability has been resolved: NFSD: Prevent lock owner use-after-free during client teardown __destroy_client() releases a client's open owners, but a lock owner whose only reference is a blocked lock (nbl) stays on cl_ownerstr_hashtbl. client_has_state() does not count a bare owner, so DESTROY_CLIENTID can reach __destroy_client() with such owners present. __destroy_client() then walks the table, calling remove_blocked_locks() on each owner without a reference. Freeing a blocked lock drops the owner reference held via flc_owner. The per-net laundromat reaps blocked locks from nn->blocked_locks_lru independently of client state. The two paths share blocked_locks_lock only for the list splice, not the owner's lifetime. The laundromat therefore frees the owner as __destroy_client() dereferences it, a NULL dereference in remove_blocked_locks(). nfsd4_release_lockowner() holds a reference across the same call; __destroy_client() does not. Hold cl_lock across the walk, taking a reference and unhashing each owner, then drop it before remove_blocked_locks() and nfs4_put_stateowner(), which take blocked_locks_lock and cl_lock.

Recibe el boletín cuando CISA agregue vulnerabilidades nuevas

Te escribimos solo cuando CISA agrega vulnerabilidades nuevas, ya traducidas: cada día que haya, o en un resumen los lunes. Confirmas por correo y te das de baja con un clic.

Frecuencia