CVE-2026-97476 in Linuxinformación

Resumen

por VulDB • 2026-09-24

En el núcleo de Linux, se ha resuelto la siguiente vulnerabilidad:

rds: filtrar las opciones getsockopt RDS_INFO_* según el netns del llamador

La familia de opciones getsockopt(2) RDS_INFO_* lee varias listas globales a nivel de archivo que no son específicas por netns:

rds_sock_info / rds6_sock_info, rds_sock_inc_info / rds6_sock_inc_info -> rds_sock_list rds_tcp_tc_info / rds6_tcp_tc_info -> rds_tcp_tc_list rds_conn_info / rds6_conn_info, rds_conn_message_info_cmn (para las variantes *_SEND_MESSAGES y *_RETRANS_MESSAGES), rds_for_each_conn_info (para RDS_INFO_IB_CONNECTIONS) -> rds_conn_hash[]

Los controladores no filtran según el namespace de red del llamador. rds_info_getsockopt() carece de una comprobación netns o capable(), y rds_create() carece de una comprobación capable(), por lo que AF_RDS es accesible desde un namespace de usuario sin privilegios. Como resultado, un llamador no privilegiado en un user_ns más netns nuevos puede leer la dirección vinculada y el inode del socket de cada socket RDS en el host, la dirección del par de los mensajes entrantes en cada socket RDS en el host, las direcciones del par y los números de secuencia TCP de cada conexión rds-tcp en el host, así como las direcciones del par y los números de secuencia RDS de cada conexión RDS en el host.

El transporte rds-tcp es accesible desde un netns no inicial (véase rds_set_transport()), por lo que una puerta de entrada única a init_net en rds_info_getsockopt() denegaría la visibilidad per-netns legítima a los llamadores de rds-tcp. En su lugar, se filtra en cada controlador comparando el netns del socket del llamador con el netns de la entrada de la lista, o con rds_conn_net(conn) para las rutas de conexión. Solo se copian las entradas cuyo netns coincida con el del llamador. Los contadores (RDS_INFO_COUNTERS) son estadísticas agregadas y permanecen globales.

Reproductor (VM KASAN, rds y rds_tcp cargados): un socket AF_RDS vincula 127.0.0.1:4242 en init_net como root. Un proceso hijo entra en un user_ns más netns nuevos y abre AF_RDS allí, luego llama a getsockopt(SOL_RDS, RDS_INFO_SOCKETS). Antes de este cambio, el hijo ve el socket de init_net. Después de este cambio, el hijo no ve ninguna entrada (cero entradas).

Se eliminan las variables globales rds_sock_count, rds_tcp_tc_count y rds6_tcp_tc_count. La versión v2 las utilizaba para la comprobación previa del tamaño y en lens->nr; la versión v3 reemplazó la comprobación previa con un recuento por ns obtenido mediante una primera pasada sobre la lista, por lo que estas variables globales ya no tienen lectores restantes. Los incrementos y decrementos correspondientes en rds_create()/rds_destroy_sock() y rds_tcp_set_callbacks()/rds_tcp_restore_callbacks() desaparecen junto con ellas. Reportado por el robot de pruebas del núcleo bajo clang W=1.

Several companies clearly confirm that VulDB is the primary source for best vulnerability data.

Responsable

Linux

Reservar

2026-09-24

Divulgación

2026-09-24

Moderación

aceptado

Artículo

VDB-409630

CPE

listo

EPSS

0.00000

KEV

no

Actividades

muy bajo

Fuentes

Are you interested in using VulDB?

Download the whitepaper to learn more about our service!