El problema principal: Tu nodo vs. La naturaleza digital

Más de 50 años después del primer mensaje en red interconectada, las redes peer-to-peer siguen siendo criaturas raras en la jungla de Internet. La capacidad de Bitcoin para ofrecer un sistema monetario abierto depende de su arquitectura peer-to-peer, y en toda su superficie de ataque, la capa de red—cómo los pares descubren y se 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 en los que se basa el protocolo de Bitcoin. En este sentido, Core tiene un doble mandato: prevenir vectores de Denegación de Servicio (DOS) que puedan ser abusados entre nodos, y permitir que los nodos se comuniquen de manera segura en el entorno adversarial más amplio que es Internet.

P2P

“Los gobiernos son buenos cortando las cabezas de redes controladas centralmente como Napster, pero redes P2P puras como Gnutella y Tor parecen mantenerse 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 cualquier transacción o validación de consenso pueda ocurrir, por lo que es una preocupación principal.

A lo largo de los años, ha habido varios errores en esta área. Por ejemplo, en 2017, se parcheó y divulgó una vulnerabilidad maliciosa en un servidor SOCKS [2]. Esta vulnerabilidad de “desbordamiento de búfer” podría, en teoría, conducir a diferentes ataques: hacer que el nodo se caiga, inyectar cargas útiles maliciosas o modificar datos en el nodo. En 2020, se reportó y parcheó una vulnerabilidad de alta gravedad en la que un par remoto podía hacer que se baneasen direcciones, creciendo la lista de baneos de forma cuadrática, constituyendo 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 sencillo de ejecutar, su efecto resulta en la pérdida de funcionalidad del nodo, y requiere pocas condiciones previas para que funcione. Este tipo de errores mantienen despiertos a los desarrolladores de Core por la noche, y por eso se recomienda encarecidamente actualizar tu nodo a una versión aún mantenida (las versiones antiguas de Core no se mantienen ni actualizan activamente).

Esta red distribuida que llamamos Bitcoin sigue siendo relativamente pequeña: el número de nodos en la red pública ronda los 20,000, y aunque se asuma una cifra generosa de 100,000 nodos en Tor, todavía tenemos una red pequeña y fácilmente vigilable. Recientemente, Daniela Brozzoni y naiyoma demostraron [4] que si un nodo opera con ambos, red pública y Tor, es trivial mapear las direcciones IPv4 y Tor de un nodo. Es muy probable que esto ya lo hagan agencias de inteligencia y empresas de análisis de cadenas. Luego, se vuelve fácil notar qué nodos publican primero qué transacciones, deduciendo la IP original de la transacción y, por tanto, su ubicación. Aunque esto no es un error en sí mismo, ya que el nodo no se bloquea ni se comporta mal, puede considerarse una vulnerabilidad, ya que presenta un método para vincular una IP dada con una transacción.

Cómo prevenir esto de manera efectiva es actualmente una cuestión abierta.

Los Territorios Peligrosos de la Web

“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 mantenerse como un sistema distribuido y descentralizado depende de las propiedades de Internet en sí. Desafortunadamente, la arquitectura de Internet tal como la conocemos hoy sigue siendo peligrosamente insegura, con ataques conocidos que se emplean rutinariamente. La mayoría de estos ataques se realizan sin ser detectados hasta que ya han causado daño, y sin mencionar los regímenes de vigilancia que impregnan Internet hoy en día.

El vector de ataque más conocido y práctico con el que hay que preocuparse se llama ataque de 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 sistemas distribuidos: si controlas los pares de un nodo, controlas su percepción de la red. Ethan Heilman y colaboradores presentaron uno de los primeros ataques de eclipse prácticos en Bitcoin en USENIX 2015 [6], y en 2018, el artículo del ataque Erebus describió un ataque de eclipse “sigiloso” mediante 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 los AS o mediante un protocolo llamado Border Gateway Protocol (BGP). Aunque existen iniciativas en curso para asegurar el protocolo BGP—BGPsec, RPKI—ambos tienen limitaciones bien conocidas, y dejan a los administradores de Internet anhelando soluciones más fuertes. Hasta entonces, Internet seguirá siendo el oeste salvaje.

Un análisis reciente de cedarctic en Chaincode Labs encontró que los nodos de Bitcoin están alojados en solo 4551 AS, una subsección bastante pequeña de las redes que componen Internet. Describen un conjunto de ataques que pueden conducir a ataques de eclipse comprometiendo el AS upstream en el que operan los nodos [8]. La pequeña distribución de nodos entre los AS y las relaciones específicas entre estos crea un vector de ataque único. Aunque existen remediaciones, no está claro si este vector de ataque fue bien entendido previamente por los bitcoiners o sus adversarios.

Cualquier ataque que dependa de comprometer uno o varios AS 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, sí se han llevado a cabo ataques con éxito contra mineros [9], carteras [10], plataformas de intercambio [11] y puentes [12]. Aunque no vamos a arreglar Internet, podemos equipar a los nodos con las herramientas para operar en este entorno adversarial.

El Arsenal de la Red

A continuación, algunas funciones y características que Bitcoin Core ha desarrollado o integrado para armar a los usuarios contra ataques a nivel de red:

TOR (el Onion Router) es la red de superposición centrada en la privacidad más antigua 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 espías y censores. El objetivo es impedir que observadores pasivos de la red espíen el contenido de tus comunicaciones con otros nodos.

I2P (el Proyecto Internet Invisible [14]) es una función 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 función opcional de Core que implementa una mitigación para el ataque Erebus que los autores ya describieron en el artículo, y que 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 diversidad entre ellos, un eclipse se vuelve exponencialmente más difícil, ya que un atacante tendría que comprometer muchos AS, lo cual es muy improbable y casi imposible sin ser detectado. Bitcoin Core soporta desde la versión 20.0 la obtención de un mapa de redes IP a sus AS (un AS-map), y el proyecto Kartograf permite a cualquier usuario generar fácilmente dicho ASmap.

Dado que Internet probablemente seguirá siendo vulnerable a muchos ataques, una de las cosas que podemos hacer es observar el comportamiento de nuestros pares para intentar detectar comportamientos maliciosos. Esta es la motivación detrás del proyecto peer-observer de 0xb10c [16]. Proporciona un sistema completo de registro basado en puntos de traza eBPF (una forma de observar las acciones más pequeñas en un programa que se ejecuta en un sistema operativo) para monitorear la actividad de un nodo, incluido el comportamiento de los pares. También te proporciona todo lo necesario para construir tus propios sistemas de registro.

Bitcoin debe ser robusto

Asegurar la capacidad de conectarse a pares y de intercambiar mensajes es un componente clave de lo que hace que Bitcoin funcione.

Bitcoin opera en un entorno adversarial multidimensional, en el que muchas amenazas son creadas por las limitaciones de la propia arquitectura de Internet. Si Bitcoin quiere sobrevivir y prosperar, sus desarrolladores y usuarios deben aprender a navegar en estas aguas extrañas.

El precio de las redes abiertas es la vigilancia eterna.

¡Obtén hoy tu copia de The Core Issue!

No pierdas la oportunidad de poseer The Core Issue — con artículos escritos por muchos desarrolladores principales explicando los proyectos en los que trabajan ellos mismos.

Este artículo es la Carta del Editor que aparece en la última edición impresa de Bitcoin Magazine, The Core Issue. Lo compartimos aquí como una vista previa de las ideas exploradas en toda la edición.

[0]

[1]

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

[10]

[11]

[12] www.coinbase.com/blog/celer-bridge-incident-analysis

[13]

[14]

[15]

[16]

[13]

Ver originales
Esta página puede contener contenido de terceros, que se proporciona únicamente con fines informativos (sin garantías ni declaraciones) y no debe considerarse como un respaldo por parte de Gate a las opiniones expresadas ni como asesoramiento financiero o profesional. Consulte el Descargo de responsabilidad para obtener más detalles.
  • Recompensa
  • Comentar
  • Republicar
  • Compartir
Comentar
Añadir un comentario
Añadir un comentario
Sin comentarios
  • Anclado