Descripción General
Un ataque eclipse apunta a un nodo de Bitcoin específico controlando todas sus conexiones de pares entrantes y salientes. Una vez que el nodo víctima está aislado de la red honesta, el atacante puede alimentarle una visión manipulada de la blockchain, habilitando varios ataques secundarios como el doble gasto, la amplificación de minería egoísta o la censura de transacciones.
Cómo Funciona
Operación normal:
┌──────┐ ┌──────┐ ┌──────┐
│Nodo A│◄──►│Víctima│◄──►│Nodo B│ (Conectado a pares honestos)
└──────┘ └──┬───┘ └──────┘
│
┌────┴────┐
│ Nodo C │
└─────────┘
Ataque eclipse:
┌───────────┐ ┌───────────┐
│ Atacante │◄──►│ Víctima │◄──►│ Atacante │
│ Nodo 1 │ │ Nodo │ │ Nodo 2 │
└───────────┘ └─────┬─────┘ └───────────┘
│
┌─────┴──────┐
│ Atacante │
│ Nodo 3 │ (TODOS los pares están bajo el control del atacante)
└────────────┘
Metodología del Ataque
- Reconocimiento: El atacante identifica la dirección IP del nodo víctima
- Envenenamiento de la tabla de direcciones: El atacante inunda la tabla de direcciones de la víctima con direcciones IP controladas por el atacante enviando muchos mensajes
addr - Reinicio forzado: El atacante espera o induce un reinicio del nodo (por ejemplo, mediante agotamiento de recursos)
- Monopolización de conexiones: Cuando la víctima reinicia y se conecta a pares, selecciona de su tabla de direcciones envenenada, conectándose exclusivamente a nodos del atacante
Consecuencias
- Doble gasto: El atacante puede mostrar a la víctima una versión diferente de la cadena, engañando a los comerciantes que ejecutan ese nodo para que acepten pagos inválidos
- Desperdicio de potencia de minería: Si la víctima es un minero, puede minar en una cadena obsoleta o fabricada por el atacante, desperdiciando hash power
- Censura de transacciones: El atacante puede impedir que la víctima vea o transmita transacciones específicas
- Ataques de 0 confirmaciones: Las transacciones no confirmadas son especialmente vulnerables ya que la víctima no puede ver transacciones en competencia
Mitigaciones en Bitcoin Core
Bitcoin Core ha implementado varias contramedidas a lo largo de los años:
- Selección diversificada de pares: Las conexiones salientes se eligen de diferentes rangos de direcciones IP (diferentes subredes /16)
- Conexiones ancla: Dos conexiones de solo retransmisión de bloques se conservan entre reinicios
- Límites de conexión por subred: Limita cuántos pares pueden conectarse desde el mismo rango de IP
- Conexiones exploradoras: Prueban periódicamente direcciones aleatorias para verificar que son nodos honestos accesibles
- Límites de conexiones entrantes: Evitan que una sola IP abra demasiadas conexiones
Mejores Prácticas para Operadores de Nodos
- Ejecutar nodos con una IP estática y configurar pares de confianza usando la opción
addnode - Usar conexiones Tor o VPN junto con clearnet para diversificar las rutas de red
- Monitorear la diversidad de conexiones de pares y vigilar patrones inusuales
- Mantener Bitcoin Core actualizado para beneficiarse de las últimas mitigaciones contra ataques eclipse