Un error en los Kernel Linux inferiores a 2.0.36 posibilita ataques
IP Spoofing de forma trivial, sin necesidad de tener acceso a la red
local de la máquina atacada, ni de realizar predicción de números de
secuencia TCP. El problema es debido a un error de implementación del
módulo TCP del Kernel, que envía información a una aplicación a través
de la lectura de un «socket» sin que haya llegado a establecerse una
conexión TCP/IP.
Cuando se establece una conexión TCP, ambos extremos se ponen de
acuerdo en dos números de secuencia iniciales (enviado y recibido),
a partir de los cuales se numeran los bytes intercambiados por ambos
sistemas. Los ataques de IP Spoofing habituales necesitan conocer
dichos números de secuencia iniciales. Para ello es preciso o bien
estar en la misma red local que el ordenador atacado, o bien proceder
a una predicción de números de secuencia.
Al contrario que otros muchos sistemas, Linux utiliza desde hace tiempo
números de secuencia iniciales pseudoaleatorios, y no es susceptible a
su predicción.
No obstante este ataque permite que un atacante simule una conexión
TCP/IP correcta sin necesidad suministrar números de secuencia
correctos. Esto es posible debido a tres errores en la implementación
TCP de Linux:
1. Linux sólo verifica los números de secuencia cuando el Flag ACK
de la cabecera TCP está activado.
2. Linux almacena temporalmente los segmentos de datos TCP que se
reciban mientras la conexión no se establezca completamente.
3. Linux transfiere a la aplicación el contenido de los almacenes
temporales cuando la conexión finaliza con el Flag FIN.
La combinación de estos tres errores permite que un atacante envíe
datos a una aplicación remota aunque la conexión no se haya establecido.
Las versiones de Kernel 2.0.36 y superiores no se ven afectadas, ya
que NAI informó del problema durante su desarrollo. Los usuarios de
versiones anteriores deben actualizar su Kernel.
Más información:
NAi
CIAC
Actualizaciones:
RedHat
kernel.org
Deja una respuesta