Bitcoin Magazine
The Core Issue: Tu nodo vs. la jungla digital
Más de 50 años después del primer mensaje interconectado en red, las redes peer-to-peer siguen siendo bestias raras en la jungla de Internet. La capacidad de Bitcoin para proporcionar un sistema monetario abierto depende de su arquitectura peer-to-peer, y a través de su superficie de ataque, la capa de red –cómo los pares se descubren y conectan entre sí– es la más vulnerable. Hay dos lugares principales donde pueden ocurrir problemas: el propio protocolo de emparejamiento de Bitcoin y los protocolos de Internet de los que depende el protocolo de Bitcoin. Bajo esta luz, Core tiene un doble mandato para prevenir vectores de Denegación de Servicio (DOS) que pueden ser abusados entre nodos, y permitir que los nodos se comuniquen de forma segura en el entorno adversarial más amplio que es Internet.
"Los gobiernos son buenos cortando las cabezas de redes controladas centralmente como Napster, pero las redes P2P puras como Gnutella y Tor parecen estar manteniéndose firmes."
– Satoshi, 7 de noviembre de 2008 [1]
El protocolo P2P abarca cómo los nodos intercambian mensajes sobre transacciones, bloques y otros pares. Este intercambio de información es necesario antes de que pueda ocurrir cualquier transacción o validación de consenso, y por lo tanto es una preocupación primordial.
Ha habido varios errores en esta área a lo largo de los años. En 2017, por ejemplo, se parcheó y divulgó una vulnerabilidad de servidor SOCKS malicioso [2]. Esta vulnerabilidad de "desbordamiento de búfer" podría teóricamente llevar a muchos ataques diferentes: bloquear el nodo, inyectar cargas maliciosas o modificar datos en el nodo. En 2020, se reportó y parcheó una vulnerabilidad de alta gravedad donde un par remoto podía hacer que las direcciones fueran prohibidas, aumentando la lista de prohibiciones cuadráticamente, y por lo tanto es un DOS en el nodo [3]. La vulnerabilidad no se divulgó hasta 2024. Este error está correctamente marcado como de "alta gravedad" ya que el ataque es simple de ejecutar, su efecto resulta en una pérdida de función para el nodo, y tiene pocas condiciones previas requeridas para hacerlo funcionar. Estos son el tipo de errores que mantienen despiertos a los desarrolladores de Core por la noche, y por qué se recomienda encarecidamente actualizar su nodo a una versión que aún se mantenga (las versiones antiguas de Core no se mantienen/actualizan activamente).
Esta red distribuida que llamamos Bitcoin sigue siendo relativamente pequeña: el recuento de nodos clearnet ronda los 20k nodos, e incluso asumiendo generosos 100k nodos TOR, todavía tenemos una red pequeña y fácilmente vigilable. Recientemente, Daniela Brozzoni y naiyoma mostraron [4] que si un nodo funciona con clearnet y Tor, es trivial mapear las direcciones IPv4 y Tor de un nodo. Es muy probable que esto ya lo hagan las agencias de inteligencia y las empresas de análisis de cadena. Entonces se vuelve fácil notar qué nodos publican qué transacciones primero, deduciendo la IP original de la transacción y, por lo tanto, la ubicación. Si bien esto no es un error per se, ya que el nodo no se bloquea ni se comporta mal, puede considerarse una vulnerabilidad, ya que presenta un método para vincular una dirección IP dada a una transacción.
Cómo prevenir esto efectivamente es actualmente una pregunta abierta.
"Construimos nuestras computadoras como construimos nuestras ciudades. Con el tiempo, sin un plan, sobre ruinas." – Ellen Ullman [5]
Bitcoin funciona en Internet, y su capacidad para permanecer como un sistema distribuido y descentralizado depende de las propiedades de Internet mismo. Desafortunadamente, la arquitectura de Internet tal como la conocemos hoy sigue siendo lamentablemente insegura, con ataques conocidos empleados rutinariamente. La mayoría de estos ataques se realizan sin ser detectados hasta que se ha hecho el daño, y esto sin mencionar los regímenes de vigilancia que impregnan Internet hoy.
El vector de ataque más conocido y práctico del que preocuparse se llama ataque eclipse, donde todos los pares de un nodo víctima son maliciosos y alimentan una vista específica de la cadena o red al nodo víctima. Esta clase de ataque es fundamental en los sistemas distribuidos, si controlas los pares de un nodo, controlas su conocimiento de la red. Ethan Heilman y colaboradores presentaron uno de los primeros ataques eclipse prácticos en Bitcoin en USENIX 2015 [6], y en 2018, el documento del ataque Erebus describió un ataque eclipse "sigiloso" a través de un Sistema Autónomo (AS) malicioso [7].
Estos ataques aprovechan en gran medida las debilidades en la forma en que las redes de Internet se comunican entre sí, como la topología de enrutamiento de ASs o mediante un protocolo llamado Border Gateway Protocol (BGP). Si bien hay iniciativas en curso para asegurar el protocolo BGP –BGPsec, RPKI– ambos tienen limitaciones que se entienden bien y dejan a los administradores de Internet anhelando soluciones más fuertes. Hasta entonces, Internet seguirá siendo el salvaje oeste.
Un análisis reciente de cedarctic en Chaincode Labs encontró que los nodos de Bitcoin se alojan dentro de solo 4551 ASs, un subconjunto bastante pequeño de las redes constituyentes que conforman Internet. Describen un conjunto de ataques que pueden conducir a ataques eclipse al comprometer el AS ascendente en el que operan los nodos [8]. La pequeña distribución de nodos entre ASs y las relaciones específicas entre estos ASs crea un vector de ataque único. Si bien hay remedios, no está claro si este vector de ataque fue bien entendido de antemano por los bitcoiners o sus adversarios.
Cualquier ataque que dependa de comprometer uno o varios ASs requiere recursos, coordinación y habilidades para lograrlo. Aunque no se ha reportado ningún ataque exitoso de este tipo en un nodo de Bitcoin, tales ataques se han montado con éxito contra mineros [9], billeteras [10], plataformas de intercambio [11] y puentes [12]. Si bien no vamos a arreglar Internet, podemos armar nodos con las herramientas para operar en este entorno adversarial.
A continuación, se presentan algunas características y funcionalidades que Bitcoin Core ha desarrollado o integrado soporte para armar a los usuarios contra ataques a nivel de red:
TOR (the Onion Router) es la red superpuesta más antigua centrada en la privacidad incorporada en Bitcoin Core. Crea saltos entre una red aleatoria de pares para ofuscar el tráfico.
v2transport [13] cifra las conexiones entre pares, ocultando el tráfico de fisgones y censores. El objetivo es frustrar a los observadores de red pasivos para que no espíen el contenido de sus comunicaciones con otros nodos.
I2P (the Invisible Internet Project [14]) es una característica opcional de Core que habilita una capa adicional, privada y cifrada para las conexiones. Es una red de anonimato similar a Tor que depende de pares para ofuscar el tráfico entre clientes y servidores.
ASmap [15] es otra característica opcional de Core que implementa una mitigación para el ataque Erebus que los autores ya delinearon en el documento, y se aplica a todos los ataques basados en AS. Al hacer que el mecanismo de emparejamiento de Bitcoin sea consciente del AS del que provienen los pares para garantizar la diversidad entre pares, un eclipse se vuelve exponencialmente más difícil, ya que un atacante tendría que comprometer muchos ASs, lo cual es muy improbable y casi imposible sin ser detectado. Bitcoin Core admite tomar un mapa de redes IP a su AS (un AS-map) desde Core 20.0, y el proyecto Kartograf permite a cualquier usuario generar dicho ASmap fácilmente.
Dado que es probable que Internet continúe siendo vulnerable a muchos ataques, una de las cosas que podemos hacer es observar el comportamiento de nuestros pares para intentar detectar comportamientos maliciosos. Este es el impulso detrás del proyecto peer-observer de 0xb10c [16]. Proporciona un sistema completo de registro basado en puntos de rastreo eBPF (una forma de observar las acciones más pequeñas en un programa que se ejecuta en un sistema operativo) para observar la actividad de un nodo, incluido el comportamiento de los pares. También te brinda todo lo que necesitas para construir tus propios sistemas de registro.
Asegurar la capacidad de conectarse a pares e intercambiar mensajes es un componente clave de lo que hace funcionar a Bitcoin.
Bitcoin opera en un entorno adversarial multidimensional, en el cual muchas de las amenazas son creadas por las limitaciones de la propia arquitectura de internet. Si Bitcoin ha de sobrevivir y prosperar, sus desarrolladores y usuarios deben aprender a navegar estas extrañas aguas.
El precio de las redes abiertas es la vigilancia eterna.
¡Consigue tu copia de The Core Issue hoy!
No pierdas tu oportunidad de poseer The Core Issue — ¡con artículos escritos por muchos desarrolladores de Core explicando los proyectos en los que trabajan ellos mismos!
Esta pieza es la Carta del Editor presentada en la última edición impresa de Bitcoin Magazine, The Core Issue. La compartimos aquí como un adelanto de las ideas exploradas en todo el número completo.
[0] https://web.mit.edu/gtmarx/www/connect.html
[1] https://satoshi.nakamotoinstitute.org/emails/cryptography/4/
[2] https://bitcoincore.org/en/2019/11/08/CVE-2017-18350/
[3] https://bitcoincore.org/en/2024/07/03/disclose-unbounded-banlist/
[4] https://delvingbitcoin.org/t/fingerprinting-nodes-via-addr-requests/1786/
[5] https://en.wikiquote.org/wiki/Ellen_Ullman
[6] https://www.usenix.org/system/files/conference/usenixsecurity15/sec15-paper-heilman.pdf
[7] https://ihchoi12.github.io/assets/tran2020stealthier.pdf
[8] https://delvingbitcoin.org/t/eclipsing-bitcoin-nodes-with-bgp-interception-attacks/1965
[9] https://www.theregister.com/2014/08/07/bgp_bitcoin_mining_heist/
[10] https://www.theverge.com/2018/4/24/17275982/myetherwallet-hack-bgp-dns-hijacking-stolen-ethereum
[11] https://medium.com/s2wblog/post-mortem-of-klayswap-incident-through-bgp-hijacking-en-3ed7e33de600
[12] www.coinbase.com/blog/celer-bridge-incident-analysis
[13] https://bitcoinops.org/en/topics/v2-p2p-transport/
[14] https://geti2p.net/en/
[15] https://asmap.org
[16] https://peer.observer
[13] https://github.com/asmap/kartograf
Esta publicación The Core Issue: Your Node Vs. The Digital Wilderness apareció primero en Bitcoin Magazine y está escrita por Julien Urraca, Fabian Jahr, 0xb10c y CedArctic.
