Así se usó un fallo en el tejido de Internet para robar Bitcoins

Así se usó un fallo en el tejido de Internet para robar Bitcoins
17 comentarios Facebook Twitter Flipboard E-mail

¿Alguna vez os habéis parado a pensar cómo llegan los datos que enviáis desde vuestro móvil o PC - un correo, un mensaje de Whatsapp, cualquier cosa - a su destino? En menos de un segundo, los datos viajan por la red y acaban en la otra punta del mundo. ¿Cómo lo hacen?

Si fuéseis vosotros los que tuviéseis que viajar, necesitaríais un mapa. Lo malo es que nadie tiene un mapa concreto de Internet. Para ir de un punto A a un punto B, lo que se hace es ir "pasándose la bola". Tu ordenador le pasa los datos a enviar a tu _router_ de casa y él se los transmite a otro _router_ de tu proveedor de servicios (ISP).

Ahí la cosa empieza a complicarse algo. Quizás el destino está conectado a tu mismo proveedor, y entonces la cosa es fácil: tu ISP sabe perfectamente cómo están conectadas sus redes y sus _routers_ enviarán tu paquete de datos por el camino correcto.

Pero, ¿y si el paquete tiene que viajar más allá? Por ejemplo, desde Telefónica hasta los servidores de Google. Tu ISP sabe la dirección IP de destino, pero nada más. ¿Por cuál de todos los caminos posibles mandamos tus datos?

Cada red anuncia a dónde puede enviar tráfico, y con esa información se van construyendo los caminos

Resulta que hay un protocolo para resolver el problema: _Border Gateway Protocol_ o BGP. A grandes rasgos, cada red anuncia al resto los caminos que conoce. En un primer momento, la red de Telefónica - siguiendo con nuestro ejemplo - anunciará a todos que para acceder a las IPs de sus clientes (de la IP 1.1.1.1 a la 5.5.5.5, por ejemplo), contacten con ella. Esta información la reciben otros _routers_ de otras redes y van construyendo caminos más completos.

Por ejemplo, la red de Ono recibirá esos datos y lo que anunciará a sus compañeros será algo como "Para acceder a mis IPs (de la 5.5.5.6 a la 7.7.7.7) avísame a mí. Y para las de Telefónica (1.1.1.1 a 5.5.5.5) avísame a mí también porque sé cómo mandarle los datos en un sólo salto".

Así, poco a poco, cada una de las redes que conforman Internet van haciéndose una idea de cómo está todo conectado y a quién enviar datos para que lleguen a su destino rápidamente y sin dar muchas vueltas.

Un vistazo a…
Cómo comprar Bitcoins de forma segura y sin riesgo

¿Seguridad? ¿Para qué?

¿A dónde quiero llegar con todo este lío del BGP y la espina dorsal de Internet? Pues a algo que no es nuevo, pero que lo que se habla poco. Cuando se creó BGP, para dar el salto de ARPANet a un modelo descentralizado, se hizo pensando que todo el mundo era bueno y confiable, así que no se tuvo la seguridad del sistema muy en cuenta.

En Pakistán alguien se equivocó al darle a un botón y acabó dejando a YouTube fuera de línea en todo el mundo.

Eso lleva a situaciones curiosas. Por ejemplo, en 2008 Pakistán quiso bloquear YouTube. Para ello, uno de los ISP del país, Pakistan Telecom, cambió una entrada en sus routers, que venía a decir "Para ir a las IPs de YouTube 21.3.4.5 o 21.5.4.3, mandad los datos a la basura". Dicho de forma más elegante, ordenaron a sus _routers_ que todo el tráfico destinado a YouTube se descartase para que no llegue a su destino.

El problema es que se equivocaron un poco al hacer la configuración, y esa ruta se anunció a las redes conectadas con Pakistan Telecom, y en pocos minutos se extendieron por todo el mundo. Resultado: YouTube inaccesible por completo.

1: Suponiendo que quieres ir a 3.3.3.3, si tienes dos posibles rutas, una hacia una red que dice poder acceder a las IPs 1.1.1.1 a 5.5.5.5 y otra hacia otra red que accede a las IPs 3.3.3.0 a 3.3.3.5; BGP se decantará por la segunda porque el rango de IPs que anuncia es menor, más específico, y por lo tanto se supone que esa ruta es más eficiente.

Lo que pasó es que todas las redes recibieron datos que decían que Pakistan Telecom sabía llegar a dos IPs. Tal y como está diseñado BGP, se hace caso a la ruta que mejor acota la IP de destino1, que en este caso era la de Pakistan Telecom. Google lo resolvió en poco tiempo anunciando rangos de IP más pequeños todavía que sobreescribiesen los de Pakistan Telecom, y todo volvió a la normalidad.

Esto fue un accidente, pero en todo momento los protocolos funcionaron como tenían que funcionar. Ese es el problema de BGP: cualquiera puede anunciar rutas alternativas y desviar ingentes cantidades de tráfico. Es muy difícil distinguir cuándo es un cambio legítimo (si aparece una red nueva o un enlace deja de funcionar hay que cambiar las rutas, por ejemplo) de cuándo es malicioso.

bgpattack.png

Esquema, simplificado de nuevo, de un ataque BGP.

El fallo se conoce desde hace muchos años, y en 2008, en la conferencia DefCon, se hizo una demostración de cómo podía ejecutarse un ataque y redirigir tráfico de Internet sigilosamente, sin que hubiese ningún corte de servicio.

La esperanza es que es muy difícil acceder a ese centro de Internet: uno tendría que ser un ISP o una entidad gestora de red para poder hacer los anuncios falsos. ¿No?

En realidad no hace falta _ser_, sino _tener acceso_ a uno. Hace unos días, Dell SecureWorks descubría descubría cómo unos _crackers_ habían aprovechado esta debilidad de BGP para robar Bitcoins y otras criptomonedas.

La idea es sencilla, y se aprovecha de los grupos de servidores que usa algunas personas para minar Bitcoins. Esos servidores tienen un centro de control que les envía los comandos necesarios.

Los atacantes desviaban tráfico para controlar los servidores de minado de Bitcoins y otras criptomonedas.

Los atacantes usaron una cuenta de un ISP canadiense para desviar el tráfico de los servidores de minado, de tal forma que en lugar de llegar al centro de control normal lo hacía al de los atacantes. Ese "impostor" respondía con un comando para que los servidores se conectasen al centro de control de los atacantes. De esta forma, las rutas BGP sólo se cambiaban puntualmente para tomar control de los servidores, y después, una vez que ya estaba el daño hecho, se dejaban como estaban para evitar ser descubiertos.

bgphijackingmoney.png

Gráfico de Dell SecureWorks con el dinero robado por día en cada criptomoneda.

Según Dell, en cuatro meses los atacantes se podrían haber hecho con más de 83.000 dólares. Si bien el ataque podía mitigarse por parte de los administradores de los servidores, es muy difícil detectar y parar ataques BGP tal y como está diseñado el protocolo. Por suerte, HTTPS y demás tecnologías seguras impedirían que el atacante viese los datos que envías, pero no por ello deja de ser un fallo importante.

La solución sería usar criptografía de clave pública para que sólo ciertas redes puedan anunciar cambios en ciertas IPs, evitando así que cualquiera pueda redirigir tráfico arbitrario. Pero es un cambio que todavía no se ha implementado y que tampoco parece cercano.

Dentro de todas las tecnologías que usamos diariamente cuando navegamos por Internet, BGP no es la que más nos pone en riesgo, desde luego, pero no deja de ser curioso que el tejido que soporta Internet sea tan vulnerable.

Comentarios cerrados
Inicio