Member of The Internet Defense League Últimos cambios
Últimos Cambios
Blog personal: El hilo del laberinto Geocaching

¿Vulnerabilidad en el código "IP Marquerade" de Linux 2.2.x?

Última Actualización: 4 de Mayo de 2.000 - Jueves

Artículo publicado en el boletín Una-Al-Día de Hispasec, el 13 de Abril de 2.000.

El código "IP Masquerade" de las versiones kernel 2.2.x de Linux es vulnerable a un ataque que permite que un atacante remoto pueda introduzca datagramas UDP en una red local protegida con "IP Masquerade". Pero, ¿qué significa eso exactamente?.

"IP Marquerade" es el nombre que se dá en Linux al sistema NAT (Network Address Translation) nativo, y que permite que toda una red corporativa acceda a Internet utilizando una única IP, por ejemplo. Este sistema, además de posibilitar el empleo de una única IP (que ni siquiera necesita ser fija), proporciona cierta protección del tipo "cortafuegos", ya que las máquinas externas (Internet) no pueden establecer conexiones con máquinas internas, a menos que sean éstas quienes lleven la iniciativa.

El problema con el "IP Masquerade" y el protocolo UDP es que bajo determinadas condiciones (relativamente simples), un atacante puede introducir datagramas UDP en la red local en "respuesta" a datagramas provenientes del interior, aunque él no sea el destinatario de los mismos.

En realidad -y esto es importante- no se trata de un error en el código "IP Masquerade", sino en un requisito de diseño necesario porque, en mucho casos, un datagrama UDP es respondido utilizando una IP diferente de la originaria (por ejemplo, servidores de nombres DNS o servidores NFS).

Ante este problema hay dos soluciones sencillas:

  • Filtrar los datagramas UDP salientes de la red, de forma que no usen "IP Masquerading". Ello implica tener funcionando un servidor DNS en la propia máquina que hace de encaminador.

  • Forzar a que todas las respuestas UDP provengan de la IP correcta. Este parche puede dar un falso sentido de seguridad, porque el protocolo UDP no está orientado a conexión y las IPs son fácilmente falsificables.

    Para ello aplicamos el siguiente parche al Kernel:

    --- net/ipv4/ip_masq.c.dloose   Thu Mar 30 14:51:06 2000
    +++ net/ipv4/ip_masq.c  Thu Mar 30 14:57:24 2000
    @@ -415,7 +415,7 @@
     /*
      *     By default enable dest loose semantics
      */
    -#define CONFIG_IP_MASQ_LOOSE_DEFAULT 1
    +/* #define CONFIG_IP_MASQ_LOOSE_DEFAULT 1 */
    
     /*
    

Más información:



Python Zope ©2000 jcea@jcea.es

Más información sobre los OpenBadges

Donación BitCoin: 19niBN42ac2pqDQFx6GJZxry2JQSFvwAfS