Cómo de crítico era el fallo en los servidores DNS (I)

Ocurría la semana pasada: Fallo crítico en DNS obliga a parchear toda Internet. No es que el fallo sucediera la semana pasada, ya que es un error tan viejo como Internet, pues proviene de la implementación del protocolo DNS. De hecho, mucho antes ya habían sido descubiertos por distintas personas pequeños errores en dicho protocolo. Sin embargo, fue la semana pasada cuando Dan Kaminsky descubrió que la unión de todos estos pequeños errores daba como resultado un enorme agujero de seguridad que afecta a toda Internet. Pero, ¿por qué? ¿Tan grave es? Pues sí, mucho. Y para entenderlo, pasaré a explicar por encima el funcionamiento del protocolo DNS.

Cada computador conectado a Internet tiene asociado a él idealmente una dirección IP única (técnicamente no es así, pero eso ya es otra historia) del tipo A.B.C.D, donde A, B, C y D son un número entre 0 y 255 (ej. 192.168.1.1). Esta IP es, digamos, como la dirección de nuestra casa para Correos. Entonces, cuando queremos acceder a Google en español, por ejemplo, tendremos que llamar a la dirección 66.102.9.99 (pinchad, y comprobad que os lleva a www.google.es). Pero, ¿cómo vamos a recordar las direcciones de todas las páginas que visitamos? Es mucho más fácil acordarse de «www.google.es», ¿verdad? Pues es ahí donde entra en juego el protocolo DNS de resolución de nombres de dominio.

Nunca introducimos una IP directamente en el navegador: en lugar de eso, introducimos un nombre de dominio como el de «www.google.es». Ante esta situación, es nuestro ordenador el encargado de buscar la IP correcta (66.102.9.99) para «llamar» a Google. Para eso se inventaron los servidores DNS, que son unas bases de datos repartidas a lo largo y ancho de Internet que albergan la traducción entre nombres de dominio y direcciones IP. Así que nuestro ordenador solicitará a uno de estos servidores de nombres (uno cercano que viene pre-configurado) que nos devuelva la dirección IP de «www.google.es». Como hay millones y millones de máquinas conectadas a Internet, tener una traducción de todas ellas en un mismo lugar sería muy ineficiente por el volumen de datos a almacenar, por el coste que tendría cada búsqueda y porque cada máquina de Internet realiza miles de solicitudes DNS al día. Por ello, la escalabilidad es el gran triunfo del protocolo DNS.

Jerarquización de los nombres de dominio

Esta inmensa base de datos de la que hablamos está partida en trozos y dividida entre montones de servidores DNS de manera jerárquica. En la cima del árbol, existen más de 1301 servidores DNS raíz (root servers) repartidos por todo el mundo que albergan las direcciones IP de los servidores DNS encargados de los pocos cientos de dominios de primer nivel existentes, como por ejemplo los ‘.es’, ‘.com’, ‘.net’, etc. Éstos, a su vez, tienen recogidas las direcciones de los subdominios, como por ejemplo ‘rediris.es’, ‘google.es’, etc. Los últimos, a su vez, engloban más subdominios, como por ejemplo ‘www.rediris.es’, ‘ftp.rediris.es’, etc. Lo podemos ver mejor en el siguiente gráfico:

Como veo que esto va a quedar un poco largo, mejor lo divido en entregas. En esta primera anotación ya hay suficiente información por hoy. En futuras entregas repasaremos cómo funciona el protocolo DNS para llegar al meollo de la cuestión: la caché de los servidores DNS, en qué consiste el famoso agujero de seguridad y qué han podido hacer para paliarlo.

1 Habitualmente se dice que hay 13 root servers identificados de la A a la M, y esto da lugar a confusiones. En realidad, hay más de 130 localizaciones de estos root servers, más de 130 máquinas físicas que albergan root servers. Esto sería como decir que Google sólo tiene un servidor web. Evidentemente, para el volumen de tráfico que tiene que soportar, tiene réplicas de la misma web en máquinas diferentes por todo el mundo. Para comprobarlo, haremos lo siguiente: (desde Windows) vamos a Inicio, y le damos a Ejecutar… Tecleamos «nslookup» (sin las comillas) y presionamos Enter. En la nueva ventana, tecleamos «www.google.es» y volvemos a presionar Enter. Lo que hace este programa es solicitar al servidor DNS la IP de «www.google.es» y mostrarla por pantalla. En el campo «Addresses:» nos muestra las IP de la página solicitada. Como comprobaréis, hay más de una:

[code highlight=»7″]www.google.es
Servidor: ——————-
Address: ——————-

Respuesta no autoritativa:
Nombre: www.l.google.com
Addresses: 216.239.59.147, 216.239.59.99, 216.239.59.104, 216.239.59.103
Aliases: www.google.es, www.google.com[/code]

Facilitando las búsquedas en Firefox 3

Si estás usando Firefox 3.0 (y si no, ¿a qué esperas?), verás que en la esquina superior derecha hay una barra de búsqueda donde se pueden añadir una serie de motores de búsqueda que facilitan bastante la vida. Por defecto, viene activado el de Google, pero debéis saber que tenéis una infinidad donde elegir. Os recomiendo la página Mycroft Project, que es como el Corte Inglés de los motores de búsqueda: lo que no encontréis allí, es que no existe.

Sí, es cierto, en versiones anteriores de Firefox también estaba. Sin embargo, la versión 3 incluye una importante mejora en la búsqueda por palabras clave. Antes, había que montar un tinglado importante para que la cosa funcionase. Ahora, es fácil: pincháis en la flechita que hay junto al simbolito de Google en la imagen de arriba y os aparece esto:

Es decir, todos los motores de búsqueda que tenéis instalados. Ahora pincháis en «Administrar motores de búsqueda…», y aparece el siguiente diálogo:

Y aquí viene lo interesante: la columna «Palabra clave» (opción que no estaba en versiones anteriores) te permite añadir fácilmente una palabra clave (valga la redundancia) para realizar búsquedas rápidas directamente en la barra de direcciones. Podéis ver que yo tengo definidas sendas palabras clave para el Diccionario de la RAE (por el Talibán Ortográfico que llevo dentro), Wordreference (para traducir palabras del inglés y al inglés), y la Wikipedia. Son los servicios que más uso después de Google (para Google no hace falta ninguna palabra clave, porque si ponéis cualquier cosa en la barra de direcciones que no sea una URL, busca ese texto automáticamente en Google). ¿Y cómo se usan las palabras clave? De la siguiente manera, vais a la barra de dirección y escribís:

Y, en mi caso, busca automáticamente la palabra «ejemplo» en la RAE. ¿Sencillo y útil, no?

Routers vulnerables ante ataques mediante UPnP

Leo en BandaAncha.st que la mayoría de los routers son vulnerables a ataques mediante UPnP (Universal Plug and Play). Esto es debido a que la arquitectura UPnP permite que distintos dispositivos en una red «conversen» entre ellos y puedan autoconfigurarse. Los routers de nuestras casas vienen con dicha arquitectura activada por defecto, porque es la que permite que, por ejemplo, al conectarnos al messenger, éste automáticamente pueda abrir puertos en el router para las conversaciones, mandar archivos, etc. Esto significa que mediante UPnP se pueden hacer cambios en el router con privilegios de administrador sin conocer la contraseña.

Este es el proceso normal de un dispositivo UPnP:

  1. Un dispositivo se conecta a la red.
  2. Obtiene una IP mediante DHCP.
  3. Lanza una petición UDP a 239.255.255.250:1900 y espera respuesta de los equipos con UPnP.
  4. Estos responden anunciando la URL desde la que pueden ser controlados.
  5. El dispositivo envía mensajes SOAP a esta URL con los cambios necesarios.

Pues bien, si visitamos un sitio web malicioso que contenga un archivo flash habilitado al efecto, éste podría enviar mensajes directamente a dicha URL solicitando al router apertura de puertos o incluso cambiar el DNS primario. Este ataque es el más grave que se podría hacer, ya que un atacante sería capaz de redireccionar nuestras conexiones sin nosotros saberlo. Con lo cual, podríamos entrar en nuestro banco habitual pensando que es seguro y…

También es cierto, que en cada modelo de router, esta dirección URL es distinta, con lo que el archivo flash debería probar con cientos de ellas hasta dar con la correcta, por lo que el riesgo se reduce un poco.

También apuntan que un cliente conectado a un router WiFi de manera similar podría utilizar herramientas UPnP para modificar parámetros del router.

En algunas páginas web he leído que Firefox y Opera podrían estar a salvo por el momento, pero esto es desmentido en la fuente original, el sitio web sobre hacking GNUCitizen, donde indican que el ataque es independiente del sistema operativo y del navegador.

La única solución 100% segura ahora mismo sería desactivar la función UPnP del router. Pero, como venimos diciendo en posts anteriores, la seguridad empieza por uno mismo. Si navegamos por sitios web de confianza no debería haber mayores contratiempos.