← Volver a artículos
Seguridad· 2 min de lectura

CVE-2026-31405: lectura fuera de límites en dvb-net (ULE) del kernel Linux con CVSS 9.8

El subsistema de TV digital del kernel Linux arrastraba un error de índice que ahora tiene CVE propio: CVE-2026-31405. Está valorado con CVSS 9.8, la franja crítica, y el motivo es serio: bajo ciertas condiciones se puede leer un puntero de función fuera de una tabla y acabar llamándolo.

El problema vive en la función handle_one_ule_extension(), dentro del código que procesa ULE (Ultra Lightweight Encapsulation), el formato que transporta paquetes IP sobre flujos MPEG en DVB. Esa función decide qué hacer con cada extensión consultando dos tablas de punteros a función: ule_mandatory_ext_handlers[] y ule_optional_ext_handlers[]. Ambas se declaran con 255 elementos, es decir índices del 0 al 254. El detalle está en que el índice htype, que se deriva de datos de red, puede alcanzar el valor 255. Al usar 255 sobre una tabla que solo llega hasta 254, el kernel lee una posición de memoria que no le corresponde y trata ese contenido como un puntero de función válido.

A partir de ahí hay dos desenlaces. El más benigno es una caída del kernel, una denegación de servicio que tira la máquina. El más grave es la ejecución de código: si un atacante consigue controlar lo que hay en esa posición de memoria contigua, la llamada al puntero salta a código elegido por él.

A quién afecta

A cualquier sistema Linux que tenga compilado y en uso el subsistema DVB con procesado ULE. Hablamos de receptores de TV digital, tarjetas sintonizadoras y, en general, hardware que recibe flujos DVB. El rango de versiones es amplio: el fallo está presente desde la 2.6.12, así que arrastra prácticamente toda la historia moderna del kernel, e incluye ramas con soporte como 5.10, 5.15, 6.1, 6.6, 6.12 y las series 6.19 y 7.0.

El vector CVSS (AV:N/AC:L/PR:N/UI:N) indica acceso por red, baja complejidad y sin necesidad de privilegios ni interacción del usuario. Eso explica la puntuación tan alta. La condición práctica es que el equipo esté procesando datos ULE controlables, algo propio de un escenario donde el flujo DVB recibido no es de confianza.

Mitigación

El parche es directo: añade una comprobación de límites sobre htype antes de tocar cualquiera de las dos tablas. Si el valor queda fuera de rango, la SNDU (la unidad de datos) se descarta en lugar de seguir adelante. No hay configuración que tocar; la solución es actualizar el kernel a una versión con el arreglo aplicado.

Si tu distribución mantiene kernels propios, instala las actualizaciones de seguridad en cuanto estén disponibles y reinicia, o usa livepatch si tu proveedor lo ofrece. En sistemas que no usan DVB en absoluto, descargar el módulo correspondiente reduce la superficie expuesta mientras llega el parche, pero lo recomendable sigue siendo actualizar.

Puedes consultar el listado de versiones del kernel Linux para comprobar en qué rama estás y si ya incluye la corrección.

Fuente