Is BGP safe yet?: Herramienta de Cloudflare para saber si BGP es seguro

El protocolo BGP (Border Gateway Protocol) es uno de los protocolos fundamentales de Internet, ya que se encarga de intercambiar información de enrutamiento entre los diferentes sistemas autónomos que existen en el mundo. Por ejemplo, cada operador de Internet tiene su propio AS, y para comunicarse con el AS de otro operador, necesita usar el protocolo BGP. Si este protocolo no se configura correctamente, se podrían ocasionar interrupciones en Internet, o que se cambien las rutas de tráfico de manera que todo el tráfico de un cierto AS pase por otro sin solicitarlo. Cloudflare ha lanzado una herramienta gratuita para comprobar la seguridad del protocolo BGP de manera fácil y rápida.

Protocolo BGP: qué es, para qué sirve y cómo funciona

Internet está dividido en sistemas autónomos (AS), un sistema autónomo es un conjunto de routers de un mismo operador que intercambian rutas entre ellos para llegar de un origen a un destino. Es fundamental que un operador dentro de su AS, tenga perfectamente actualizas las rutas, ya que sino, podríamos tener pérdida de conectividad hacia un destino en concreto. Un AS es como un «pequeño» Internet que solamente permite comunicar al operador en cuestión, por ejemplo, si eres cliente de Movistar y quieres comunicarte con otro cliente de Movistar, todo el tráfico pasará por el interior del AS, no saliendo a Internet (en principio, depende de cómo esté configurado). Por ejemplo, cada operador que hay en España tiene como mínimo un sistema autónomo (podrían tener varios AS a su disposición). Dentro de un sistema autónomo, los routers de los operadores intercambian las diferentes rutas para llegar de un origen a un destino internamente, sin utilizar otros AS. La información de enrutamiento es proporcionada de manera dinámica por los protocolos de enrutamiento de pasarela interior (IGP – Interior Gateway Protocol), este enrutamiento es interno del propio AS, y hacen uso de protocolos específicos como OSPF o IS-IS en la gran mayoría de los casos, pero también existen otros protocolos IGP como RIP o EIGRP.

El protocolo BGP (Border Gateway Protocol) es un protocolo de pasarela exterior, externa o también se denomina «frontera». Este protocolo sirve para intercambiar las rutas entre diferentes AS, esta tarea es fundamental para que podamos tener conectividad desde un origen a un destino, cuando el tráfico debe pasar por diferentes AS. Por ejemplo, si nuestro operador es Movistar y queremos comunicarnos con alguien que tiene Vodafone, se hace necesario que nuestro tráfico pase por el AS de Movistar y también el de Vodafone para llegar a su destino correctamente. Mientras que los protocolos IGP comparten rutas dentro del AS, BGP se encarga de compartir las rutas hacia otros AS para tener conectividad entre diferentes operadores.

Cuando estamos configurando un protocolo BGP, tendremos tanto conexiones internas (iBGP) que se realizan dentro del AS, como también sesiones externas (eBGP) que se realizan entre diferentes AS. Algunas características de BGP son que garantiza una elección de rutas libres de bucles, toma decisiones de encaminamiento en función de las políticas de red que se definan (ingeniería de tráfico), como el número de «saltos» de AS de origen a destino, aunque podremos usar el atributo LOCAL-PREF para modificar este comportamiento, también se pueden modificar las rutas en función de otros atributos que existen en BGP.

¿Por qué BGP no es seguro?

El protocolo BGP si no se configura correctamente, puede dar lugar a ataques como el hijack BGP. Si para llegar desde un origen A hasta un destino C, hay que pasar por B, es posible que el nodo B «engañe» al nodo A para hacer que su tráfico pase por otro AS diferente, o que directamente no le proporcione la ruta correcta y se quede sin conectividad, porque no puede llegar a C de ninguna forma si B no le proporciona la información. El Hijack BGP funciona exactamente así, secuestrando la sesión BGP y mandándole información falsa a un AS para que nunca llegue a su «vecino», o que llegue de una forma malintencionada (pasando por un router de otro AS bajo nuestro control, por ejemplo).

Para que BGP sea seguro, debemos proteger que se realice propagación de rutas de manera malintencionada o errónea (por un fallo humano, es posible que dejemos sin conectividad a un AS entero). Es fundamental que los diferentes routers BGP tengan la posibilidad de validar la información que reciben de alguna manera, para que puedan rechazar estas rutas no deseadas por su cuenta, y no cambiar su enrutamiento.

Por defecto, BGP no incorpora ningún protocolo de seguridad para evitar esto, depende de cada AS la implementación de filtrado de rutas incorrectas. Normalmente cuando perdemos las rutas es por un fallo humano, pero también podría ser debido a la acción de un ciberdelincuente, tal y como ha ocurrido en el pasado. BGP puede ser seguro si todos los AS anuncian únicamente rutas legítimas, es decir, cuando son «suyas».

RPKI al rescate

RPKI (Resource Public Key Infraestructure) nos da la solución, actualmente en internet hay millones de rutas, por lo que comprobarlas manualmente es una tarea imposible. Este framework de seguridad es capaz de asociar una ruta con un sistema autónomo en concreto. RPKI utiliza criptografía entre los diferentes routers BGP para que los nodos validen la información de manera segura antes de pasarla a los routers, para asegurarnos al 100% de que es una ruta legítima. Os recomendamos leer más sobre RPKI en el blog de Cloudflare donde encontraréis información técnica.

Cómo funciona la herramienta para detectar si nuestro ISP utiliza BGP con RPKI

Esta herramienta se encarga de comprobar si nuestro operador está implementando BGP de manera segura, lo que hace es anunciar una ruta legítima de Cloudflare, pero se aseguran de que dicho anuncio no sea válido. Si podemos cargar el sitio web donde alojamos esa ruta, significa que podemos llegar a ella y que nuestro ISP la ha aceptado como válida, de lo contrario, no podremos acceder debido a que el operador la ha marcado como inválida.

Lo primero que debemos hacer es meternos en la web is BGP safe yet? y pinchar en «Test your ISP», tal y como podéis ver aquí:

Tras unos segundos, nos informará del resultado del test que hemos realizado, nuestro operador es Masmóvil, y parece ser que no implementa estas protecciones de BGP:

Justo debajo, nos saldrá un ranking con diferentes operadores de Internet en el mundo, y nos indicará si tienen BGP configurado correctamente o no. Por ejemplo, otros operadores en España como Vodafone, Orange o Movistar, tampoco tienen estas protecciones de BGP a juzgar por los tests de Cloudflare. Algunos operadores (o empresas con AS) que han hecho muy bien su trabajo son Telia, NTT y también Cloudflare, aunque otras como Cogent o TATA son parcialmente seguros ya que hacen filtrados de peers.