Se encontraron tres vulnerabilidades en las pilas TCP de Linux que llevan a la denegación remota de servicio

fallo linux

Recientemente dieron a conocer la noticia sobre la identificación de varias vulnerabilidades críticas en las pilas TCP de Linux y FreeBSD que le permite a un atacante el poder iniciar de forma remota una falla del kernel o causar un consumo excesivo de recursos al procesar paquetes TCP especialmente diseñados (paquete de la muerte).

Los problemas son causados por errores en los manejadores del tamaño máximo del bloque de datos en el paquete TCP (MSS, Tamaño de segmento máximo) y el mecanismo para el reconocimiento selectivo de conexiones (SACK, Reconocimiento selectivo de TCP).

¿Qué es un reconocimiento selectivo?

El reconocimiento selectivo de TCP (SACK) es un mecanismo donde el receptor de datos puede informar al remitente sobre todos los segmentos que se han aceptado con éxito.

Esto permite que el remitente retransmita los segmentos de la secuencia que faltan de su conjunto ‘bien conocido’. Cuando TCP SACK está deshabilitado, se requiere un conjunto mucho mayor de retransmisiones para retransmitir una secuencia completa.

En el kernel de Linux, los problemas se corrigen en las versiones 4.4.182, 4.9.182, 4.14.127, 4.19.52 y 5.1.11. La solución para FreeBSD está disponible como un parche .

Las actualizaciones de paquetes del núcleo se publican para Debian , RHEL , SUSE / openSUSE , ALT , Ubuntu , Fedora y Arch Linux .

CVE-2019-11477 (SACK Panic)

El problema se manifiesta en los kernels de Linux a partir de 2.6.29 y le permite provocar una caída del kernel (panic) al enviar una serie de paquetes de SACK debido a la aparición de un desbordamiento de enteros en el controlador.

Para un ataque, es suficiente establecer el valor de MSS en 48 bytes para una conexión TCP y enviar una secuencia de una determinada manera de paquetes SACK dispuestos.

La esencia del problema es que la estructura tcp_skb_cb ( Socket Buffer ) está diseñada para almacenar 17 fragmentos (“define MAX_SKB_FRAGS (65536 / PAGE_SIZE + 1) => 17”).

En el proceso de envío de un paquete, se coloca en la cola de envío y tcp_skb_cb almacena detalles sobre el paquete, como el número de secuencia, las banderas, así como los campos “tcp_gso_segs” y “tcp_gso_size”, que se utilizan para enviar información de segmentación al controlador (TSO, Segment Segment Descargar) para procesar segmentos en el lado de la tarjeta de red.

Los fragmentos se guardan cuando se produce una pérdida de paquete o la necesidad de una retransmisión selectiva de paquetes, si SACK está habilitado y TSO es compatible con el controlador.

Como solución para la protección, puede deshabilitar el procesamiento de SACK o bloquear las conexiones con un MSS pequeño (solo funciona cuando configura sysctl net.ipv4.tcp_mtu_probing a 0 y puede romper algo de normal) con bajo MSS).

CVE-2019-11478 (SACK Slowness)

Este fallo provoca una interrupción del mecanismo SACK (cuando se utiliza el kernel de Linux en 4.15) o un consumo excesivo de recursos.

El problema se manifiesta cuando se procesan paquetes SACK especialmente diseñados que pueden utilizarse para fragmentar la cola de retransmisión (retransmisión de TCP). Las soluciones para la protección son similares a las vulnerabilidades anteriores

CVE-2019-5599 (SACK Slowness)

Permite provocar la fragmentación del mapa de paquetes enviados al procesar una secuencia SACK especial dentro de una sola conexión TCP y provocar la ejecución de una operación de búsqueda de lista con uso intensivo de recursos.

El problema se manifiesta en FreeBSD 12 con el mecanismo de detección de pérdida de paquetes RACK. Como solución alternativa, puede deshabilitar el módulo RACK (no se carga de forma predeterminada, se desactiva especificando sysctl net.inet.tcp.functions_default = freebsd)

CVE-2019-11479

El fallo permite que un atacante puede hacer que el kernel de Linux divida las respuestas en varios segmentos TCP, cada uno de los cuales incluye solo 8 bytes de datos, lo que puede provocar un aumento significativo del tráfico, un aumento en la carga de la CPU y un canal de comunicación obstruido.

Además, consume recursos adicionales (potencia de procesamiento del procesador y la tarjeta de red).

Este ataque requiere esfuerzos continuos por parte del atacante y los impactos terminarán poco después de que el atacante deje de enviar tráfico.

Mientras este ataque esté en curso, el sistema se ejecutará a una capacidad reducida, lo que provocará una denegación de servicio para algunos usuarios.

Un usuario remoto puede desencadenar este problema estableciendo el tamaño máximo de segmento (MSS) de una conexión TCP en su límite más bajo (48 bytes) y enviando una secuencia de paquetes SACK especialmente diseñados.

Como solución alternativa, se recomienda bloquear las conexiones con MSS bajo.


Sé el primero en comentar

Deja tu comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

  1. Responsable de los datos: Miguel Ángel Gatón
  2. Finalidad de los datos: Controlar el SPAM, gestión de comentarios.
  3. Legitimación: Tu consentimiento
  4. Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal.
  5. Almacenamiento de los datos: Base de datos alojada en Occentus Networks (UE)
  6. Derechos: En cualquier momento puedes limitar, recuperar y borrar tu información.