Uma recente falha do Monero, chamada de Burning Bug, foi divulgada hoje pelo desenvolvedor dEBRUYNE. A falha estava presente na carteira oficial do Monero e consistia na não-detecção de um recebimento duplo em um mesmo endereço stealth, uma situação anormal que “queima” moedas, impossibilitando a vítima de gastar o seu próprio dinheiro.
Como a carteira não avisava o usuário que ele recebeu uma moeda “queimada”, esta falha poderia ter sido usada para causar grandes prejuízos a exchanges, que poderiam inadvertidamente trocar Bitcoins por moedas Monero que não poderiam mais ser usadas.
Quem descobriu a falha?
O bug foi descoberto por um usuário do reddit em um tópico onde estava sendo discutida a possibilidade de reutilização de endereços stealth. O usuário perguntou se isso poderia ser usado para um possível ataque a exchanges. A falha foi confirmada em seguida pelos desenvolvedores.
O que a falha poderia causar?
Um hacker mal intencionado poderia se aproveitar da falha para atacar a carteira de um outro usuário (como uma exchange), fazendo com que o outro usuário recebesse, sem perceber, moedas impossíveis de serem gastas.
Para atacar a sua vítima, o hacker precisaria gastar apenas o custo das taxas das transações. O hacker não teria um ganho financeiro direto, mas poderia causar um grande prejuízo financeiro à pessoa ou exchange que recebeu as transações.
Como a falha poderia ser explorada?
Para explorar o bug, um usuário de uma exchange teria que enviar diversas transações para um mesmo endereço stealth da carteira da exchange (por exemplo, enviar 1.000 XMR através de 1.000 transações de 1 XMR). Para conseguir fazer várias transações reutilizando o mesmo endereço stealth, o hacker teria que modificar o código-fonte de sua própria carteira.
Ao receber o saldo em sua carteira, a exchange disponibilizaria o saldo de 1.000 XMR para o usuário, que iria vendê-los na exchange por BTCs, não tendo nenhum prejuízo.
No entanto, como cada endereço stealth possui uma única imagem chave, e cada imagem chave só pode ser publicada uma única vez na rede, a exchange só conseguiria gastar o valor recebido em uma única dessas transações. Os valores recebidos em todas as demais transações ficariam bloqueados. Ou seja, a exchange conseguiria gastar 1 XMR e ficaria com 999 XMR bloqueados (“queimados”).
Correção da falha
Ao descobrirem o bug, os desenvolvedores prontamente liberaram uma correção e avisaram as principais exchanges, que desativaram a negociação com a moeda por algumas horas, até que a correção fosse aplicada. A partir de agora, ao receber duas transações em um mesmo endereço stealth, a carteira do Monero irá emitir um aviso e será travada.
Segundo os desenvolvedores, não há indícios de que esse ataque já tenha sido usado contra alguma exchange, e a descoberta desta falha é um lembrete de que o Monero ainda está em sua infância e, portanto, propenso a bugs críticos.