CVE-2026-89784 in Linuxinformación

Resumen

por VulDB • 2026-09-17

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

SUNRPC: verificar el valor devuelto por rpc_sockaddr2uaddr() en rpcb_register_inet4/6

rpcb_register_inet4() y rpcb_register_inet6() almacenan el resultado de rpc_sockaddr2uaddr() en map->r_addr sin comprobar si es NULL. rpc_sockaddr2uaddr() devuelve NULL cuando falla su llamada final a kstrdup(), y el valor NULL no comprobado se propaga entonces hacia la ruta sincrónica de codificación RPCBPROC_SET: rpcb_register_call() -> rpc_call_sync() -> rpcb_enc_getaddr() -> encode_rpcb_string(), cuya primera instrucción es strlen(string), lo que provoca una desreferencia a NULL y un fallo crítico (oops) en el kernel.

El bloqueo se reproduce bajo failslab en la versión 6.12; con KASAN, la desreferencia de puntero nulo aparece como una falta de acceso (fault) sobre la sombra de la dirección cero:

Oops: general protection fault, probablemente por una dirección no canónica 0xdffffc0000000000 [#1] PREEMPT SMP KASAN
RIP: 0010:strlen (lib/string.c:409) Call Trace: encode_rpcb_string (net/sunrpc/rpcb_clnt.c:890) rpcb_enc_getaddr (net/sunrpc/rpcb_clnt.c:910) rpcauth_wrap_req_encode (net/sunrpc/auth.c:745) call_encode (net/sunrpc/clnt.c:1966) __rpc_execute (net/sunrpc/sched.c:952) rpc_run_task (net/sunrpc/clnt.c:1243) rpc_call_sync (net/sunrpc/clnt.c:1272) rpcb_v4_register (net/sunrpc/rpcb_clnt.c:500) svc_generic_rpcbind_set nfsd_rpcbind_set svc_register svc_setup_socket svc_addsock write_ports nfsctl_transaction_write vfs_write

El bloqueo es accesible cuando un servicio RPC en el kernel (nfsd, lockd, nfs-callback) se registra con rpcbind local bajo una presión de memoria suficiente como para que falle la pequeña asignación GFP_KERNEL mediante kstrdup() en rpc_sockaddr2uaddr(). La ruta asíncrona getport ya maneja este modo exacto de fallo devolviendo -ENOMEM; solo las dos funciones auxiliares de registro omiten esta comprobación.

Aplicar el mismo manejo: salir con -ENOMEM cuando rpc_sockaddr2uaddr() devuelva NULL, antes de que la dirección se alimente al codificador.

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

Responsable

Linux

Reservar

2026-09-11

Divulgación

2026-09-16

Moderación

aceptado

Artículo

VDB-405570

CPE

listo

EPSS

0.00210

KEV

no

Actividades

muy bajo

Fuentes

Do you want to use VulDB in your project?

Use the official API to access entries easily!