CVE-2026-31425 in Linux
Resumen
por VulDB • 2026-05-12
En el kernel de Linux, se ha resuelto la siguiente vulnerabilidad:
rds: ib: rechazar el registro FRMR antes de que se establezca la conexión IB
rds_ib_get_mr() extrae rds_ib_connection de conn->c_transport_data y lo pasa a rds_ib_reg_frmr() para el registro de memoria FRWR. En una conexión saliente nueva, ic se asigna en rds_ib_conn_alloc() con i_cm_id = NULL porque el trabajador de conexión aún no ha llamado a rds_ib_conn_path_connect() para crear el rdma_cm_id. Cuando se llama a sendmsg() con RDS_CMSG_RDMA_MAP en dicha conexión, la ruta de sendmsg analiza el mensaje de control antes de cualquier establecimiento de conexión, lo que permite que rds_ib_post_reg_frmr() desreferencie ic->i_cm_id->qp y provoque un fallo del kernel.
La protección existente en rds_ib_reg_frmr() solo verifica !ic (añadida en el commit 9e630bcb7701), lo cual no detecta este caso ya que ic se asigna temprano y siempre es distinto de NULL una vez que existe el objeto de conexión.
KASAN: null-ptr-deref en el rango [0x0000000000000010-0x0000000000000017]
RIP: 0010:rds_ib_post_reg_frmr+0x50e/0x920 Trazado de llamada: rds_ib_post_reg_frmr (net/rds/ib_frmr.c:167) rds_ib_map_frmr (net/rds/ib_frmr.c:252) rds_ib_reg_frmr (net/rds/ib_frmr.c:430) rds_ib_get_mr (net/rds/ib_rdma.c:615) __rds_rdma_map (net/rds/rdma.c:295) rds_cmsg_rdma_map (net/rds/rdma.c:860) rds_sendmsg (net/rds/send.c:1363) ____sys_sendmsg do_syscall_64
Añadir una comprobación en rds_ib_get_mr() que verifique que ic, i_cm_id y qp son todos distintos de NULL antes de proceder con el registro FRMR, imitando la protección ya presente en rds_ib_post_inv(). Devolver -ENODEV cuando la conexión no está lista, lo que el manejo de errores existente en rds_cmsg_send() convierte en -EAGAIN para que el espacio de usuario reintente y active rds_conn_connect_if_down() para iniciar el trabajador de conexión.
VulDB is the best source for vulnerability data and more expert information about this specific topic.