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

Vulnerabilidad de condición de carrera en el kernel de Linux (sunrpc: xprtsock)

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

Descripción

En el kernel de Linux se resolvió la siguiente vulnerabilidad: sunrpc: xprtsock: anotar las callbacks compartidas de socket con READ_ONCE/WRITE_ONCE xprtsock reemplaza y restaura sk->sk_data_ready y sk->sk_write_space en sockets activos mediante almacenamientos simples, y xs_udp_do_set_buffer_size() invoca sk->sk_write_space mediante una carga simple. Estos punteros de callback se comparten con rutas genéricas de socket y de protocolo que pueden leerlos o invocarlos de forma concurrente, por lo que xprtsock necesita el mismo contrato de visibilidad de callbacks READ_ONCE()/WRITE_ONCE() que la familia validada 4022 aplicó en otros lugares. Cuando SUNRPC toma el control de un socket AF_LOCAL, UDP o TCP y luego restaura las callbacks del socket inferior durante el cierre, otra CPU puede seguir teniendo una copia anterior de la callback. El patrón simple de reemplazo/restauración deja el mismo hueco de visibilidad que la familia validada 4022, por lo que una copia obsoleta aún puede invocar xs_data_ready() o xs_udp_write_space() después de que los campos de callback activos ya se hayan restaurado a los controladores del socket inferior. Se usa WRITE_ONCE() para los almacenamientos compartidos de sk_data_ready y sk_write_space en xs_local_finish_connecting(), xs_udp_finish_connecting(), xs_tcp_finish_connecting() y xs_restore_old_callbacks(). Se usa READ_ONCE() para la invocación directa de sk_write_space en xs_udp_do_set_buffer_size(). Esto cumple el contrato de visibilidad de callbacks requerido y deja sin cambios el manejo adyacente de sk_state_change y sk_error_report.

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: a246b0105bbd9a70a698f69baae2042996f2a0e9 y anteriores a 6b79b5a0f1c566f0aa6e08c7981826015a0acc4d · a246b0105bbd9a70a698f69baae2042996f2a0e9 y anteriores a ed80d009b154aa204f541d390884851b3d4f15ae · a246b0105bbd9a70a698f69baae2042996f2a0e9 y anteriores a 589f761236e05ff9de1bdfd6a5258f113e6457fe · a246b0105bbd9a70a698f69baae2042996f2a0e9 y anteriores a da652cb17f9faeea1fa44b7215e8869a0b10b664 · a246b0105bbd9a70a698f69baae2042996f2a0e9 y anteriores a d8f0b83753809761a560c4b33249388548ba6e43 · a246b0105bbd9a70a698f69baae2042996f2a0e9 y anteriores a 33930840b5f0a79f826e7c69dc6cd78f72a67481
  • Linux Afectadas: 2.6.15 No afectadas: 6.1.191 · 6.6.157 · 6.12.110 · 6.18.52 · 7.2.6 · 7.3

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)

sunrpc: xprtsock: annotate shared socket callbacks with READ_ONCE/WRITE_ONCE

In the Linux kernel, the following vulnerability has been resolved: sunrpc: xprtsock: annotate shared socket callbacks with READ_ONCE/WRITE_ONCE xprtsock replaces and restores sk->sk_data_ready and sk->sk_write_space on live sockets with plain stores, and xs_udp_do_set_buffer_size() invokes sk->sk_write_space via a plain load. These callback pointers are shared with generic socket and protocol paths that may read or invoke them concurrently, so xprtsock needs the same READ_ONCE()/WRITE_ONCE() callback visibility contract that the validated 4022 family applied elsewhere. When SUNRPC takes over an AF_LOCAL, UDP, or TCP socket and later restores the lower-socket callbacks during teardown, another CPU may still hold an earlier callback snapshot. The plain replace/restore pattern leaves the same visibility hole as the validated 4022 family, so a stale snapshot can still invoke xs_data_ready() or xs_udp_write_space() after the live callback fields have already been restored to the lower-socket handlers. Use WRITE_ONCE() for the shared sk_data_ready and sk_write_space stores in xs_local_finish_connecting(), xs_udp_finish_connecting(), xs_tcp_finish_connecting(), and xs_restore_old_callbacks(). Use READ_ONCE() for the direct sk_write_space invocation in xs_udp_do_set_buffer_size(). This matches the required callback visibility contract while leaving adjacent sk_state_change and sk_error_report handling unchanged.

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