Introdução
Um ataque eclipse é um ataque relativamente simples que um ator mal-intencionado pode implantar para interferir nos nós de uma rede. Como o nome pode sugerir, o ataque visa obscurecer a visão que um participante tem da rede peer-to-peer, a fim de causar perturbações gerais ou de se preparar para ataques mais sofisticados.
Os ataques de Eclipse podem parecer semelhantes, superficialmente, aos ataques de Sybil. Embora compartilhem certas semelhanças – o ator mal-intencionado inundará a rede com pares falsos – seu objetivo final é, em última análise, diferente. Um ataque Eclipse visa um único nó (por razões explicadas em uma seção posterior), enquanto um ataque Sybil é um ataque em toda a rede projetado para manipular o sistema de reputação do protocolo.
O conceito é discutido detalhadamente no artigo Eclipse Attacks on Bitcoin’s Peer-to-Peer Network de 2015, no qual pesquisadores da Universidade de Boston e da Universidade Hebraica relatam suas descobertas de seus experimentos na montagem de ataques de eclipse, bem como possíveis contramedidas para combatê-los.
Como funciona um ataque de eclipse
Os mineradores de Bitcoin exigem equipamentos especializados para gerar novos blocos, mas nós não-mineradores (ou completos) são facilmente executados com poder computacional mínimo. Isso ajuda na descentralização do Bitcoin, já que qualquer pessoa pode criar um nó em um dispositivo de baixa especificação. O software mantém um banco de dados de transações que sincroniza com seus pares imediatos, de modo a permanecer em sincronia com a rede.
Um fator limitante para muitos nós é a largura de banda. Embora haja uma enorme quantidade de dispositivos executando o software, o dispositivo médio não consegue se conectar diretamente a muitos deles devido às limitações estabelecidas no software Bitcoin (que permite apenas um máximo de 125 conexões).
Em um ataque Eclipse, o agente malicioso garantirá que todas as conexões do alvo sejam feitas com nós controlados pelo invasor. A entidade primeiro inundará o alvo com seus próprios endereços IP, aos quais a vítima provavelmente se conectará ao reiniciar o software. Uma reinicialização pode ser forçada (ou seja, com um ataque DDoS ao alvo) ou o invasor pode simplesmente esperar que ela ocorra.
Uma vez que isso ocorra, a vítima inocente fica à mercê dos nós maliciosos – sem visão da rede mais ampla, eles podem receber dados incorretos do invasor.
Consequências de um ataque de eclipse
Se um invasor estiver gastando recursos para afastar um peer da rede, provavelmente terá um motivo para fazê-lo. Existem vários ataques sucessivos que podem ser lançados mais facilmente quando um nó é sufocado.
0-confirmação de gastos duplos
Se um indivíduo aceitar uma transação sem confirmações, corre o risco de gastar em dobro. A transação pode ter sido transmitida, mas até que seja incluída em um bloco (e, portanto, comprometida com o blockchain), o remetente pode facilmente criar uma nova transação que gaste os mesmos fundos em outro lugar. Se a nova transação tiver uma taxa mais alta, o minerador provavelmente a incluirá antes da original, invalidando a anterior.
Algumas empresas e indivíduos aceitam essas transações com confirmação 0. Considere um comerciante, Bob, que vende veículos de última geração. Ele não sabe que Alice eclipsou seu nó e não suspeita de nada enquanto ela faz um pedido de um carro esportivo de luxo. Ela cria uma transação, que Bob transmite para a rede. Satisfeito com o pagamento, ele entrega as chaves do carro e Alice sai em alta velocidade.
É claro que a transação não foi transmitida para a rede – Bob apenas a retransmitiu para os nós maliciosos de Alice, que não a transmitirão para os nós honestos. Enquanto esta transação permanece no limbo, Alice gasta os mesmos fundos na rede (real), seja para outra parte ou para um endereço que ela possui. Mesmo que a transação inicial para Bob seja eventualmente vista, ela será rejeitada porque as moedas já foram gastas.
Gastos duplos de confirmação N
O gasto duplo com confirmação N é semelhante ao gasto com confirmação 0, mas envolve mais preparação. Muitas empresas preferem esperar por um certo número de confirmações antes de marcar um pagamento como válido. Para contornar isso, o invasor deve eclipsar os mineiros e o comerciante. Depois que o invasor configura o pedido com o comerciante, ele transmite uma transação aos mineradores (eclipsados). A transação é confirmada e incluída no blockchain – mas esse blockchain não é a cadeia que a maior parte da rede observa, já que o minerador está cortado.
A partir daí, o invasor retransmite essa versão do blockchain ao comerciante, que libera a mercadoria acreditando que a transação foi confirmada. Uma vez que os nós eclipsados regressem à rede real, a blockchain que eles erroneamente acreditam ser válida fica órfã daquela em que o resto da rede tem trabalhado (isto tem algumas semelhanças com um ataque de 51%).
Enfraquecendo mineradores concorrentes
Um nó eclipsado continuará a operar, alheio ao fato de ter sido segregado da rede. Os mineiros continuarão a minerar blocos dentro das regras estabelecidas pelo protocolo, mas os blocos adicionados serão descartados à medida que sincronizam com pares honestos.
Teoricamente, um ataque de eclipse em grande escala contra grandes mineradores poderia ser usado para facilitar um ataque de 51%. Da forma como está, o custo para assumir a maior parte do poder de hashing do Bitcoin é simplesmente alto demais até mesmo para os invasores mais engenhosos – a aproximadamente 80TH/s, a entidade precisaria de mais de 40TH/s para tentar tal manobra.
Em um cenário hipotético em que esse poder de hashing é distribuído entre 10 partes (de modo que cada uma possua 8TH/s), o invasor pode reduzir significativamente os requisitos para um ataque de 51%, isolando essas partes da rede. Se cinco forem eclipsados, 40TH/s serão removidos da corrida para encontrar o próximo bloco, e o atacante agora só precisa adquirir um pouco mais de 20TH/s para assumir o controle.
Outra sabotagem que pode ser alcançada eclipsando alvos inclui a manipulação de nós para mineração egoísta ou a engenharia de corridas entre mineradores para encontrar o próximo bloco.
Mitigação
Com endereços IP suficientes, um invasor pode eclipsar qualquer nó. O método mais simples de evitar que isso aconteça é um operador bloquear conexões de entrada e fazer conexões de saída apenas para nós específicos (como aqueles que foram colocados na lista de permissões de outros pares). No entanto, como salienta o documento de investigação, esta não é uma abordagem que funcione à escala – se todos os participantes adotarem estas medidas, novos nós não poderão aderir à rede.
Os autores propõem alguns ajustes no software Bitcoin, alguns dos quais foram integrados desde o lançamento do artigo. Isso torna os ataques Eclipse mais custosos por meio de pequenas modificações no código, como seleção aleatória de novas conexões e maior capacidade de armazenamento de endereços.
Considerações finais
Os ataques Eclipse são realizados no nível da rede ponto a ponto. Implantados como um ataque independente, eles podem ser um incômodo. A sua verdadeira eficácia consiste em potenciar outros ataques que impactam financeiramente os alvos ou proporcionam ao atacante uma vantagem na frente de mineração.
Na natureza, ainda não houve consequências graves resultantes de um ataque de eclipse, mas a ameaça ainda existe apesar das contramedidas integradas na rede. Tal como acontece com a maioria dos vetores de ataque que existem para Bitcoin e outras criptomoedas, a defesa mais forte será aquela que torna financeiramente proibitivo que partes mal-intencionadas os tentem.

