Vulnerabilidad en Meteotemplate
¿Qué es Meteotemplate?
Meteotemplate es un paquete de software, o plantilla, que cientos de estaciones meteorológicas de aficionados de todo el mundo utilizan para crear completas y vistosas páginas web con datos meteorológicos.
Mi estación meteorológica envía sus datos a internet, desde hace varios años con la ayuda de una Raspberry Pi, el software de código abierto WeeWx, y la plantilla Meteotemplate.
Recientemente descubrí analizando datos del servidor de eMariete.com que estaba recibiendo un tráfico bastante sospechoso. Me puse a investigarlo y descubrí que el problema estaba en Meteotemplate.
Meteotemplate tiene una vulnerabilidad de tipo open redirect (llamada técnicamente CWE-601 [ URL Redirection to Untrusted Site (‘Open Redirect’) ]) que hace que «los malos» puedan utilizarla para cometer sus fechorías (principalmente ataques de phishing, pero es utilizable para muchos más tipos de ataque y enmascaramiento de tráfico y enlaces).
La vulnerabilidad CCN-157548
CCN-157548 es el código que se le da a esta vulnerabilidad en los catálogos de vulnerabilidades con los que trabajan las empresas de ciberseguridad.
Esta vulnerabilidad (de tipo ‘Open Redirect‘) lo que permite al atacante es construir una URL con un formato determinado que, aparentemente, apunta a un sitio web completamente normal y legal, pero cuando el usuario pincha en ella es redirigido a la web que el atacante quiera.
Aprovechar una vulnerabilidad como esta simplifica mucho los ataques de phishing, ya que el nombre del servidor en el enlace manipulado es idéntico al del sitio «legal» lo que hace que los enlaces tengan una apariencia inofensiva.
El enlace puede contener un parámetro para que la aplicación web redirija la solicitud a la URL especificada. Al modificar esa URL, que apunta al sitio malicioso, un atacante puede hacer con éxito una estafa de phishing y robar las credenciales del usuario.
La redirección abierta, u Open Redirect, es un bug en este programa, que permite que los atacantes redirijan a los usuarios a sitios web maliciosos.
Un ejemplo de explotación de esta vulnerabilidad, sería en la que el atacante, para hacerse pasar por tu banco, crea un enlace como https://tubanco.com/entrar y cuando el usuario pincha en él es redirigido a la página web que quiera el atacante.
Si nuestra web https://miweb.com/entrar es vulnerable, el malo crear una URL como https://miweb.com/entrar/redirect.php?https://elsitiodelmalo.com de forma que, cuando nuestro incauto navegante pinche en el enlace, creyendo que va a venir a nuestra web, realmente vaya a la web del malo (que puede hacerse pasar por la nuestra) y pida datos al usuario, por ejemplo.
¿Cómo arreglar la vulnerabilidad de Meteotemplate?
Cuando descubrí la vulnerabilidad el 8 de junio de 2020 lo comuniqué en el foro oficial de Meteotemplate con la esperanza de que Jachym, su creador, lo pudiera arreglar, pero, desgraciadamente, no hubo respuesta, ni por parte de Jachym ni de ningún otro usuario (parece que Jachym ha borrado mi post).
Mes y medio más tarde, el 21 de agosto de 2020, insistí de nuevo añadiendo más información, que había descubierto, y publicando una lista de sitios afectados, para que vieran que eran miles. Tampoco hubo ninguna respuesta.
El 25 de agosto opté por hacerlo público en Meteoclimatic, que es el mayor foro de aficionados a la meteorología de España, y donde muchos de ellos utilizan este software. Inmediatamente prestaron atención y en menos de 24 horas, el usuario jmviper publicó el código de redirect.php, que podéis ver debajo, arreglando la vulnerabilidad en Meteotemplate.
El impacto en el SEO
¿Qué es el SEO?
El SEO (Search Engine Optimization) es la ciencia/arte de optimizar las páginas web para posicionarlas en los buscadores.
Se trata de conseguir que cuando un usuario busque algo en Google, o cualquier otro buscador, la página aparezca en los resultados lo más arriba posible.
Lo que hay que tener presente, es que para Google lo más importante es resolver la intención de búsqueda de los usuarios.
Pero, ¿Cómo determina Google qué páginas deben ser puestas en primer lugar en los resultados?
Lógicamente, Google tiene muchas cosas en cuenta a la hora de decidir qué páginas incluye en los resultados de las búsquedas y cuáles pone primero en esos resultados.
Por supuesto uno de los factores más importantes es el contenido de las páginas, además del título de la página, pero, además, para saber qué páginas son de verdadera calidad y pueden gustar más a los usuarios, se basa en otras señales que pueden ser positivas o negativas cómo:
Señales positivas para Google
Son las que indican a Google que la página puede ser interesante, gustar a los usuarios y resolver la intención de búsqueda.
- ¿Qué otras páginas enlazan a esta? Si otras muchas páginas enlazan a esta puede querer decir que su contenido es importante
- ¿De qué temática son las páginas que enlazan a esta? Si las páginas que enlazan a esta son de la misma temática que la pregunta, es más probable que los contenidos sean relevantes para el usuario
- ¿Qué prestigio tienen otras páginas que enlazan a esta? No es lo mismo que enlace a la página Perico el de los palotes (me refiero a una página sin ninguna importancia, con poco contenido, a la que no enlaza casi nadie, etc.) a que lo haga un periódico importante o una página con gran autoridad (especialmente si es de la misma temática).
Señales negativas para Google
Igual que Google tiene en cuenta esas señales, que le indican que una página tiene ese «prestigio«, hay otras señales que le indican que la página puede tener un contenido malo, de poco interés, no original (copiado de otros sitios) e incluso que sus contenidos sean poco honestos o, directamente, ilegales.
- ¿Recibe la página enlaces desde sitios sospechosos? Si la página recibe enlaces desde sitios de porno, ventas ilegales, venta de productos ilegales, etc. es más que posible que Google penalice esta página y que no aparezca en los resultados de búsqueda (aunque su contenido sea completamente limpio, legal y correcto). Al fin y al cabo, a Google le gusta que sus resultados sean aptos para todos los públicos (aun tratando de cumplir la intención de búsqueda de los que quieren otra cosa).
- ¿Tiene la página frecuentes errores de ortografía sintácticos, de concordancia, o similares? Esto puede indicarle que su contenido es de baja calidad, que ha sido generado o traducido automáticamente.
- ¿Se actualiza la página con frecuencia? A Google le gustan las páginas que se actualizan frecuentemente y tienen contenidos frescos, al igual que a la mayoría de los usuarios.
Lo que Google ve
Si nuestra página es explotable por una vulnerabilidad de este tipo, pronto muchos ciberdelincuentes la usarán para redirigir a los usuarios a otros sitios, creando múltiples enlaces en muchos sitios, foros, páginas de todo tipo, publicidad, etc. creando enlaces como https://miweb.com/entrar/redirect.php?https://elsitiodelmalo.com
Hay que tener en cuenta que los ciberdelincuentes, en muchos casos, utilizan herramientas automáticas para crear esos enlaces por lo que será normal que nuestra web reciba cientos o miles de enlaces maliciosos en muy poco tiempo.
Lo que Google verá es que muchos sitios dedicados a sexo, malware, phishing, actividades ilegales, etc. enlazan a nuestra página, no le gustarán «nuestras amistades» y puede penalizar nuestra página por ello haciendo que la página no aparezca en los resultados del buscador (o al menos no en las primeras posiciones).
Datos reales de penalización de Google
En la siguiente tabla podemos ver los datos de probabilidad de penalización por parte de Google, calculada por la herramienta MOZ, en sitios web que utilizan Meteotemplate.
He limitado la lista a los sitios que tienen una posibilidad superior al 50%, hay muchos más con valores más bajos.
Por privacidad y seguridad he eliminado parte de la URL.