Hola a todos,

Este articulo de Hispasec puede ser interesante para alguno de vosotros.

----------  Mensaje Reenviado  ----------
Subject: una-al-dia (27/9/1999) IP Spoofing en Linux 2.2.x (x<13)
Date: Thu, 30 Sep 1999 16:19:17 +0200
From: Noticias Hispasec<[EMAIL PROTECTED]>


--------------------------------------------------------------------
           HISPASEC una al d�a (27/9/1999)
           Todos los d�as una noticia de seguridad
--------------------------------------------------------------------

IP Spoofing en Linux 2.2.x (x<13)
---------------------------------
Un error de implementaci�n en los kernel Linux 2.2.x permite una
predicci�n muy aproximada del n�mero de secuencia inicial de una
conexi�n TCP/IP. Acertando en dicha predicci�n, es posible injectar
informaci�n aparentemente procedente de una IP diferente a la del
atacante. Si entre la m�quina atacada y la IP que se simula existe alg�n
mecanismo de confianza (especialmente, herramientas r* y NFS) el
atacante puede comprometer la seguridad de la m�quina atacada.

El ataque fue publicado el pasado 26 de Septiembre en la lista de
desarrollo del Kernel, y fue seguido por una furiosa actividad para
evaluar su alcance y solucionar el problema en el menor plazo posible.
El error fue introducido en los kernels 2.2.x; los kernel 2.0.x no son
vulnerables.

El problema es doble: por una parte, uno de los secretos utilizados a la
hora de calcular el ISN no es ni secreto ni aleatorio, sino una
constante conocida: cero. En segundo lugar, se utilizan campos como los
n�meros de puerto de la conexi�n para calcular el ISN, pero no la IP del
remitente, debido a otro bug de programaci�n.

El problema est� corregido en la versi�n 2.2.13pre13. Pero gracias a
disponer del c�digo fuente, no hace falta esperar a la aparici�n del
kernel 2.2.13 oficial. Cualquiera puede solucionarlo de forma local sin
m�s que aplicar algunos parches.

Para el primer problema, tenemos:

--- linux.vanilla/drivers/char/random.c Thu Dec 31 20:03:49 1998
+++ linux.13p12/drivers/char/random.c   Sun Sep 19 15:00:34 1999
@@ -1698,7 +1698,7 @@
        if (!rekey_time || (tv.tv_sec - rekey_time) > REKEY_INTERVAL) {
                rekey_time = tv.tv_sec;
                /* First three words are overwritten below. */
-               get_random_bytes(&secret+3, sizeof(secret)-12);
+               get_random_bytes(&secret[3], sizeof(secret)-12);
                count = (tv.tv_sec/REKEY_INTERVAL) << HASH_BITS;
        }

Y para el segundo problema, el parche es

--- linux.vanilla/net/ipv4/tcp_ipv4.c   Sat Aug 28 20:00:59 1999
+++ linux.13p13/net/ipv4/tcp_ipv4.c     Sun Sep 26 23:25:18 1999
@@ -525,7 +525,8 @@

 static inline __u32 tcp_v4_init_sequence(struct sock *sk, struct
sk_buff *skb)
 {
-       return secure_tcp_sequence_number(sk->saddr, sk->daddr,
+       return secure_tcp_sequence_number(skb->nh.iph->daddr,
+                                         skb->nh.iph->saddr,
                                          skb->h.th->dest,
                                          skb->h.th->source);
 }

Una vez m�s se puede ver como el enfoque "Open Source" ha podido
localizar y corregir un problema en apenas unas pocas horas.

M�s informaci�n:

TESO
http://teso.scene.at/

P�gina web de uno de los descubridores
http://www.cs.uni-potsdam.de/homepages/students/linuxer/

IP Spoofing Trivial en los Kernel Linux Inferiores a 2.0.36
http://www.argo.es/~jcea/artic/hispasec01.htm


Jes�s Cea Avi�n
[EMAIL PROTECTED]
http://www.argo.es/~jcea/

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


Sergio Blanco Cuaresma
Registered Linux user #140941
http://come.to/sblanco
[EMAIL PROTECTED]

Responder a