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:
Multiple Linux Vendor 2.2.x Kernel IP Masquerading Vulnerabilities
FAQ: Firewalls: What am I seeing?
jcea@hispasec.com
Deja una respuesta