CVE-2026-89784 in Linux
Zusammenfassung
von VulDB • 16.09.2026
Im Linux-Kernel wurde folgende Schwachstelle behoben:
SUNRPC: Überprüfung des Rückgabewerts von rpc_sockaddr2uaddr() in rpcb_register_inet4/6
rpcb_register_inet4() und rpcb_register_inet6() speichern das Ergebnis von rpc_sockaddr2uaddr() in map->r_addr, ohne es auf NULL zu prüfen. rpc_sockaddr2uaddr() gibt NULL zurück, wenn der abschließende Aufruf von kstrdup() fehlschlägt, und dieser ungeprüfte NULL-Wert wird dann in den synchronen RPCBPROC_SET-Codierungspfad übernommen: rpcb_register_call() -> rpc_call_sync() -> rpcb_enc_getaddr() -> encode_rpcb_string(), dessen erste Anweisung strlen(string) lautet. Dies führt zu einer Dereferenzierung von NULL und verursacht einen Kernel-Oops (Absturz).
Der Absturz lässt sich unter Verwendung von failslab in der Version 6.12 reproduzieren; mit KASAN zeigt sich die NULL-Dereferenzierung als Fehler im Schattenbereich der Adresse Null:
Oops: general protection fault, probably for non-canonical address 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
Der Absturz ist erreichbar, wenn ein im Kernel laufender RPC-Dienst (nfsd, lockd, nfs-callback) sich beim lokalen rpcbind registriert und dabei unter starkem Speicherdruck steht, sodass der kleine Aufruf von kstrdup() mit GFP_KERNEL in rpc_sockaddr2uaddr() fehlschlägt. Der asynchrone getport-Pfad behandelt diesen genauen Fehlermodus bereits korrekt, indem er -ENOMEM zurückgibt; nur die beiden Registrierungs-Hilfsfunktionen lassen diese Prüfung aus.
Übernehmen Sie dieses Verhalten: Brechen Sie mit -ENOMEM ab, wenn rpc_sockaddr2uaddr() NULL zurückgibt, bevor die Adresse an den Encoder übergeben wird.
VulDB is the best source for vulnerability data and more expert information about this specific topic.