Una vez creado el repositorio, poco a poco hay que ir añadiéndole información. Tengo en mente añadirle información de whois, aunque haya que hacerlo a través de la herramienta Java que ofrece Red.es y que sólo permite 10 consultas por minuto.
Pero antes quiero recabar información de los dominios .es que son vulnerables (Los dominios no, claro, los servidores que hay detrás). El primer paso ha sido recabar información de qué dominios (bueno, sus servidores) eran vulnerables a Freak, así como otra información interesante. Hoy mostraré los que son aún vulnerables a heartbleed.
Como recordaremos (aquí, aquí y aquí), heartbleed es una vulnerabilidad de la versión 1.0.1f de openssl, que se descubrió en Marzo de 2014 (hace justo un año, ahora) y cuya resolución consiste en simplemente actualizar la versión de openssl instalada en los servidores.
La vulnerabilidad es un desbordamiento de buffer en memoria de openssl y el atacante podría obtener información aleatoria almacenada en el mismo bloque de memoria donde se encuentra la vulnerabilidad. Además, cada vez que se lanza el ataque, el servidor devolverá información diferente, permitiendo a los atacantes, con el tiempo recabar información de todo tipo, desde contraseñas en claro, rutas del servidor o versiones de software instaladas.
Para añadir información sobre si los dominios .es (los servidores que hay detrás) estan afectados por heartbleed, he utilizado la herramienta sslscan, que ofrece información de todo tipo sobre la implementacion de openssl instalada en los servidores HTTPS (en el puerto 443 sólo, no he buscado en puertos 443 alternativos como el 444 o el 8443).
Lo que muestra normalmente sslscan, por ejemplo contra google.es es los siguiente:
Como se puede ver nos indica si la compresión y la renegociación estan habilitadas, si las versiones 1.0, 1.1 y 1.2 de TLS son vulnerables y los cifrados permitidos por el servidor. A mi en este caso solo me interesaba la parte de la vulnerabilidad de heartbleed.
El script utilizado ha sido el siguiente:
for i in `cat Full_ES_Domains_List.csv | cut -d'|' -f1 | sed 's/"//g'` do ./inserta_heartbleed.sh $i >> heartbleed & if [ `ps -ef | grep sslscan | wc -l` -gt 100 ] then sleep 10 fi done |
Como vemos, tira del script inserta_heartbleed.sh que es el siguiente:
#!/bin/bash VALOR=`/usr/bin/sslscan --no-ciphersuites --no-renegotiation --no-compression --no-preferred --no-check-certificate $1 2>/dev/null| /bin/grep heartbleed | /usr/bin/awk '{ if ($3 ~ "not") { printf "%s", "0"} else { printf "%s", "1"} }'` echo $1 ":" $VALOR |
Vamos, script muy sencillitos que permiten lanzar hasta 100 sslscan simultáneos y que me permitirán recorrer los 1.7 millones de dominios .es en apenas 4 o 5 días.
El listado devuelto por estos scripts es el siguiente:
Como se puede ver, para cada dominio se muestran tres numeros, que corresponden a las versiones 1.0, 1.1 y 1.2 de TLS tal y como nos saca sslscan.
Resultados
En estos momentos, se han escaneado 1762459 dominios, es decir el total de los dominios .es. El script detectó "unicamente" 8228 dominios (servidores) vulnerables a heartbleed, lo que significa que un año después de su descubrimiento sólo el 0,46% de los dominios estarían en peligro de robo de información. La verdad es que es un muy buen resultado, máxime porque unos 1500 de estos 8228 dominios son dominios del estilo zxs.es, zxq.es, creados únicamente con objeto de de vender el propio dominio. Aún así unos 6650 dominios .es (los servidores que dan servicio) aún son vulneraables.
Como vengo repitiendo desde el principio del articulo, el problema no es de los dominios, sino de los servidores que hay detrás y en el tejido empresarial español, en el que más del 90% son PYMEs que no tienen un área IT, el alojamiento web se contrata a empresas especializadas. El siguiente psaso pues, fue descubrir qué empresas de alojamiento web (muchas de ellas extranjeras) no estan cumpliendo sus obligaciones y mantienen todavía los sitios web de sus clientes vulnerables a heartbleed. La búsqueda fue muy simple:
for i in `grep 111 heartbleed | cut -d':' -f1`; do echo -n $i": " ;echo -n `ping -c 1 -W 5 $i | grep from`; echo; done | cut -d':' -f 2 | cut -d' ' -f5 | sort |
Sólo se me ocurrio hacerlo usando ping, seguro que hay soluciones mejores. En apenas 5 minutos el resultado nos demostró que algunas empresas de hosting no estan haciendo bien su trabajo. Estas son las 10 más afectadas con dominios. Recordemos que los valores totales son 6650. Si por ejemplo onlinehome-server.info tiene 214 dominios afectados, ella sola un 11% del total de dominios afectados en España. Entre las 10 de la gráfica de abajo suman el 36% de los dominios .es. Vamos, que yo si tuviera que escoger un hosting no me tiraría por ninguna de estas.
Pero por supuesto, hay muchas otras empresas que ofrecen hosting con dominios afectados. En total podemos estar hablando de cerca de 70 empresas de hosting que en mayor o menor medida no estan haciendo correctamente su trabajo... Muchas, demasiadas.