No final do domingo (09), pesquisadores descobriram um bug crítico de validação no LND, uma implementação popular da Lightning Network, apoiada pela Lightning Labs.
Especificamente, a implementação completa do node de Bitcoin do LND, BTCD, teve um bug em sua implementação do Taproot. BTCD é uma implementação completa de node para Bitcoin, que é popular entre os usuários da Lightning Network.
O bug afeta as versões LND 0.15.1 e anteriores. O LND pediu para que todos os seus usuários o atualizassem para a versão 0.15.2.
Durante a noite de domingo, o desenvolvedor do Bitcoin Jameson Lopp recomendou aos operadores de nós LND que não fizessem nada até que uma nova versão fosse lançada. “Espero que pagamentos e roteamento [de pagamentos] ainda funcionem. O que não está funcionando é abertura e fechamento de canais porque a sincronização do blockchain está travada.”
Notes for lnd node operators:
— Jameson Lopp (@lopp) October 10, 2022
Your node is currently safe. I wouldn't touch it until the new version is released.
I expect payments and routing still work. What won't work is channel opens / closes because the blockchain sync is stuck.
Update in the next 2 weeks if you can.
Sem a possibilidade de fechar canais, os bitcoins na rede Lightning (de quem opera essa implementação específica da LN) estavam essencialmente congelados lá por algumas horas, sem a possibilidade de serem movidos para a rede de primeira camada.
Transação multi-sig de Taproot revelou o bug
Os pesquisadores descobriram o bug ao testar os limites da Bitcoin Scripting Language, uma linguagem de programação do Bitcoin. Eles queriam testar um contrato inteligente extremamente avançado que exigia co-autenticação por inúmeras partes.
Para realizar este teste, um pesquisador, Burak, criou uma grande transação multi-sig no Taproot. Isto exigiu 998 assinaturas de chaves privadas para autenticar o envio de bitcoin, uma quantidade extraordinária de co-assinantes.
I just did a 998-of-999 tapscript multisig, and it only cost $4.90 in transaction fees.https://t.co/CvBHaRAqPu
— Burak (@brqgoo) October 9, 2022
Para contextualizar esse número, considere que os usuários da Lightning Network normalmente abrem canais usando apenas transações multi-sig de 2-de-2.
A transação 998-de-999 foi aceita pelos produtores de blocos de teste. A transação foi posteriormente minerada em um bloco de Bitcoin da rede principal. Em seguida, a transação quebrou o LND.
Essa transação confundiu o método usado pelo LND para calcular o que era o bloco mais recente. Especificamente, o LND não conseguiu analisar um novo bloco devido a sua biblioteca defeituosa.
A seguinte mensagem aparecia nos registros de erros: “Incapaz de completar a redimensionamento da cadeia: readScript: o item do script é maior do que o tamanho máximo permitido.”
A Lightning Labs começou imediatamente a trabalhar na correção do bug, atualizando a biblioteca de análise de fios do BTCD, e anunciou o lançamento da versão 0.15.2.
how was lnd affected?
— Olaoluwa Osuntokun (@roasbeef) October 10, 2022
lnd uses this library to parse blocks we get from either the full node backend or p2p network, due to this bug lnd wasn't able to parse a new block, but was able to continue to forward as normal (synced_to_chain: false)
Necessidade de serviços watchtower de implementação cruzada
Após o processo de resolução de bugs, os pesquisadores começaram a expressar a necessidade de serviços de observação, que são implementados independentemente.
Este bug só afetou o LND, uma implementação popular da Lightning Network. Outras implementações incluem o Éclair e o Core Lightning.
O serviço de observação, watchtower, são terceiros que monitoram a Lightning Network visível publicamente e permitem que os usuários busquem restituição para mau comportamento, podendo monitorar todas as implementações para proteger os usuários durante interrupções de qualquer implementação em particular.
Por exemplo, como a maioria dos usuários adere ao Lightning como uma transação multi-sig 2-de-2, eles geralmente confiam em uma contraparte para não mentir sobre o equilíbrio final do bitcoin em posse uns dos outros ao fecharem o canal e saírem da rede para o Bitcoin da rede principal.
Se alguém mente sobre o bitcoin em sua posse ao tentar fechar um canal Lightning, um usuário que possa provar esta mentira pode publicar a chamada Justice Transaction (Transação de Justiça), e receber 100% dos bitcoins em seu canal como recompensa por pegar a mentira.
Uma watchtower que monitora todas as implementações (LND, Core Lightning, Éclair, etc.) pode proteger um usuário durante bugs ou hacks, permitindo-lhes publicar Justice Transaction se alguém tentar roubar seu dinheiro durante interrupções de serviço.
Leia também: