No mês passado, o desenvolvedor da Lightning Network (LN) do Bitcoin (BTC) Rusty Russel alertou os operadores do LN sobre vulnerabilidades na rede. Agora, ele publicou um relatório completo sobre o problema e trouxe junto uma solução.
As vulnerabilidades na rede, que recentemente atingiu 10 mil nós públicos ativos, foram encontradas pelo australiano nas versões do c-lightning anteriores à 0.7.1 e anteriores a 0.7, e eclair até a versão 0.3 quando Russell abriu os canais de financiamento.
Para que este processo ocorra, não é preciso que os receptores verifiquem se uma transação é a prometida pelo financiador em termos de valores e do scriptPubKey (também conhecido como script de saída ou bloqueio) que requer condições específicas a serem observadas para que um destinatário gaste seus Bitcoins.
O documento explica que um nó da rede Lightning que aceita um canal deve verificar se a saída da transação de financiamento realmente abre o canal proposto.
Caso isso não aconteça, “um invasor pode reivindicar a abertura de um canal, mas não paga ao par ou não paga o valor total”, diz o texto. “Quando essa transação atinge a profundidade mínima, pode gastar fundos do canal.”
Como consequência, a vítima só notará quando tentar fechar o canal e nenhum dos compromissos ou transações mútuas de fechamento que tiver forem válidas.
No entanto, Russell parece ter encontrado uma solução para o problema. Segundo o desenvolvedor, assim que a transação de financiamento é vista, os pares “devem verificar se o objetivo descrito em `funding_created`[1] é uma saída da transação de financiamento[2] com a quantia descrita em `open_channel`[3]”.
O arquivo também avisa que as versões 0.7.1 e superiores do c-lightning executam o processo corretamente, insistindo que os usuários atualizem as versões mais antigas de seus nodes do Lightning.
A Lightning Network é uma solução de escalabilidade de Bitcoin fora da cadeia de segunda camada destinada a permitir pagamentos em BTC instantâneos e com taxas baixas.