[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

RV: una-al-dia (22/12/1999) Ataque DoS a los kernel Linux 2.0.x (fwd)



QUe tan cierto es esto
Paul

--------------------------------------------------------------------
           HISPASEC una al dia (22/12/1999)
           Todos los dias una noticia de seguridad
--------------------------------------------------------------------

Ataque DoS a los kernel Linux 2.0.x
-----------------------------------
Los kernel 2.0.x (recordemos que la version actual es 2.2.x) son
susceptibles de un ataque DoS (Denial of Service - denegacion de
servicio) cuando se envian paquetes IP de gran tamano y estos incluyen
opciones IP.

El problema es debido a que el kernel comprueba que el tamano de los
datos mas la cabecera IP no supera los 65535 bytes, pero no comprueba
que ese tamano *mas* el tamano de las opciones IP no supere tampoco
dicho valor. Un paquete IP, normalmente, no incluye opciones IP, pero
un atacante malicioso si puede hacerlo.

Los kernel 2.0.x imprimen varios mensajes de error y acaban realizando
un reinicio de la maquina o "reboot". Los nuevos kernels 2.2.x imprimen
errores "message too long" en la consola, como aviso, y no se ven
afectados por el ataque. El ataque tampoco parece afectar a Windows ni
a Solaris.

Gracias al hecho de que Linux es un producto con codigo abierto y
cualquiera puede estudiar su funcionamiento y corregir cualquier
problema, uno de los desarrolladores del Kernel publico un parche
oficial a las pocas horas de hacerse publico el ataque. El parche debe
aplicarse a la version 2.0.38, que es la ultima version de la serie
2.0.x:

>>>>>
diff -urN 2.0.38/net/ipv4/ip_output.c 2.0.38-ping-R/net/ipv4/ip_output.c
--- 2.0.38/net/ipv4/ip_output.c Thu Jun 18 23:48:22 1998
+++ 2.0.38-ping-R/net/ipv4/ip_output.c  Tue Dec 14 23:02:43 1999
@@ -703,7 +703,13 @@

        if (!sk->ip_hdrincl) {
                length += sizeof(struct iphdr);
-               if(opt) length += opt->optlen;
+               if(opt)
+               {
+                       /* make sure to not exceed the max packet size */
+                       if (0xffff-length < opt->optlen)
+                               return -EMSGSIZE;
+                       length += opt->optlen;
+               }
        }

        if(length <= dev->mtu && !MULTICAST(daddr) && daddr!=0xFFFFFFFF && 
daddr!=dev->pa_brdaddr)

<<<<<

En principio parece poco probable que se publique una version 2.0.39
del kernel para incluir este parche, ya que la version actual del
kernel es la 2.2.x, y la serie 2.3.x esta alcanzando ya el estado de
"code freeze", lo que significa que 2.4.x aparecera dentro de muy
poco.

Por lo tanto, todos los usuarios de viejos kernel 2.0.x deberian
actualizar a 2.0.38 (si se empenan en seguir usando kernel 2.0.x) y
aplicar este y otros parches similares ellos mismos, sin esperar a que
se distribuya una hipotetica y poco probable 2.0.39. De todas formas la
lista de correo de desarrollo del kernel linux todavia esta discutiendo
el tema.

Mas informacion:

ftp://ftp.us.kernel.org/pub/linux/kernel/people/andrea/patches/v2.0/2.0.38/i  
p-opt-1.gz


Jesus Cea Avion
jcea en hispasec com

-------------------------------------
una-al-dia es un servicio de HispaSec (http://www.hispasec.com)


-- 
Para desuscribirse, mande correo a: ayuda-unsubscribe en linux org mx
Para comandos adicionales, envíelo a: ayuda-help en linux org mx



[Hilos de Discusión] [Fecha] [Tema] [Autor]