O Bug do Bitcoin Core

0
72
O Bug do Bitcoin Core

No dia 18 de Setembro uma nova versão do software bitcoin core, versão 0.16.3, e foi disponibilizada às pressas para resolver um bug seríssimo do sistema.

Neste artigo vamos falar sobre a descoberta de um bug, uma vulnerabilidade no software do bitcoin core, e uma descoberta que foi feita por acaso por um desenvolvedor do bitcoin Cash BCH, e vale a pena agradecer ele como muitos já o fizeram ,porque ele divulgou esse bug de maneira muito responsável e profissional, então isso tem que ser falado assim foi realmente foi uma postura louvável, e a forma correta de se reportar um bug sim que foi crítico e nesse caso, então vamos falar um pouco mais em que consiste esse bug, quais eram as suas reais consequências, como ele poderia ser explorado, quais eram as chances deles ser explorado e de que forma poderia repercutir na rede do bitcoin.

O primeiro de tudo o software foi já disponibilizado para corrigir esse bug, e o bug ele afetava as versões 0.14 até 0.16.2, essa só foram as versões afetadas por essa vulnerabilidade, e o software novo já está corrigindo isso, e inclusive quem roda um full node é extremamente recomendável que atualize o full node com essa nova versão a última versão, ou quem utiliza serviços de terceiros seja uma Exchange, seja um software de carteira também insista que esses provedores de serviço atualizem com a última versão que corrigir essa mobilidade.

Então que essa volatilidade primeiro de tudo, ela foi algo importante, é uma das lições que a gente precisa tirar desse episódio, é que esse bug ele foi introduzido no software óbvio de maneira não intencionada, foi um acidente, foi um erro, mas ele foi introduzindo a versão 0.14, então isso quer dizer que todas as versões anteriores ao 0.14 não foram afetadas e não estavam sujeitos a esse risco, a essa vulnerabilidade, e o que consistia todo mundo conhece o chamado gasto duplo, o gasto duplo esse é o problema que o bitcoin resolve de forma descentralizada usando a prova de trabalho, o gasto duplo pode ser executado de duas formas, ou o gasto duplo gasta duas vezes o mesmo input, a mesma origem em duas ou mais transações, então eu uso uma transação gastando input pra outra pessoa, e uma outra transação gastando o mesmo input para um terceiro, então é feito duas transações, ou mais que gasta o mesmo input.

Para esse problema de gasto duplo o bitcoin já resolve sem nenhum problema, e o sistema não fica vulnerável a esse problema, porque essa forma de gastar duas vezes o mesmo input ela é sanada à medida que os blocos vão sendo estendido, se em algum momento as duas transações forem propagadas por um bloco, cedo ou tarde um novo bloco vai ser descoberto onde apenas uma das correntes vai estender, mas sem estendida então a transação que tentam gastar duas vezes o mesmo input vai ficar pra trás vai ser rejeitada.

Essa é a forma mais usual, porém a outra forma e é que consistia nesse bug é fazer uma única transação, e dentro dessa transação o mesmo input é gasto duas vezes, então o mesmo input digamos um bitcoin faz dois output gastando duas vezes, gastando um bitcoin para outro endereço e um, ou dois, ou três, ou quantos bitcoins para outro endereço, então por meio deste bug, você poderia na mesma transação ter uma origem de um bitcoin e gastar quantos bitcoins quiser em várias outputs, e por isso que se chamou esse bug também de bug de inflação, então porque na prática poderia causar inflação, podemos explicar um pouco mais quais são, e como isso poderia ter sido explorado.

Mas esse era o bug e por conta dessa linha de código que foi introduzida a partir da versão 0.14 os nós e os mineradores poderiam acabar aceitando este bug, essa transação gastando mais de uma vez o input, acabariam aceitando como valida essa transação, esse foi então um grande problema, e nas versões aliás de 0.14 até 0.15 o que acontecia não era uma inflação, o que aconteceu simplesmente que o software ele era derrubado, o software e simplesmente parava de funcionar da versão 0.14 até a 0.15, a partir da 0.15 até 0.16.2, que eles aceitavam e que os nós aceitariam essa transação de gasto duplo como válida, inicialmente até o bug foi apenas divulgado como sendo apenas um problema de negação de serviço, que acabaria derrubando todos os nodes que estivessem rodando a versão 0.14, e depois de alguns dias foi a finalmente revelado todo o escopo, e a extensão, e a seriedade deste bug pelo relatório até pode ver o relatório de CVE que é até uma forma padrão de reportar a vulnerabilidade, de uma forma padronizada, CVE é Common Vulnerabilities and Exposures, é o CVE 2018 17 144, e  vem o ponto que e aí tem a ver com a teoria dos jogos do bitcoin, e todo o conjunto de incentivos da rede, e por que esse bug apesar de muito sério, ele é dificilmente seria levado à prática, seria levado a cabo.

Para explorar esse bug apenas quem poderia fazer isso é o próprio minerador, porque o minerador precisaria minerar um bloco com essa transação de double spend, com essa transação inflacionária, e para fazer isso ele precisaria gastar energia computacional, executar prova de trabalho, e finalmente propagar esse bloco com uma transação não valida, nesse bloco, e porque ele poderia fazer isso, primeiro é como algumas versões do software 0.15 até 10.6.2 é reconheceria essa transação como valida, uma parte da rede reconheceria esse bloco como válido e aceitaria esse bloco, mas uma outra parte da rede não aceitaria esse bloco.

Todo mundo que não estivesse rodando a versão até 0.14, então anterior a 0.14 e todo mundo que não estivesse rodando um software no bitcoin core que essa é a implementação de referência, mas há outros softwares que não usam o bitcoin core, eles rejeitariam essa transação ou este bloco contendo essa transação, então na prática o que acabaria acontecendo um Split, uma bifurcação, uma divergência no blockchain.

DEIXE UMA RESPOSTA

Por favor digite seu comentário!
Por favor, digite seu nome aqui