[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]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