O protocolo DeFi Abracadabra perdeu US$ 1,8 milhão depois que um invasor explorou um simples erro lógico em sua função de lote. Analistas da Hacken disseram que os invasores já estavam lavando dinheiro por meio do Tornado Cash.
resumo
Abracadabra perdeu cerca de US$ 2 milhões quando invasores exploraram um erro lógico simples em sua função de lote, semelhante ao ataque ao projeto bifurcado alguns dias atrás. Os invasores contornaram os sinalizadores de segurança para verificar se o mutuário tinha garantias suficientes e esvaziaram seis caldeirões de uma vez, antes de trocar o MIM roubado por ETH e encaminhá-lo para o Tornado Cash. Embora esta não seja a primeira vez que o código do Abracadabra é alvo, o incidente destaca como pequenos recursos não implementados podem ser explorados por hackers, mesmo que a mesma falha seja encontrada em um fork.
No início de outubro, Abracadabra, um protocolo de empréstimo DeFi que permite aos usuários emprestar stablecoin MIM usando tokens depositados como garantia, já sofreu vários ataques de hackers antes, mas desta vez perdeu novamente cerca de US$ 1,8 milhão depois que os invasores conseguiram pedir emprestado sem postar garantia, aproveitando um simples erro lógico na funcionalidade de lote do protocolo, disseram analistas da empresa de segurança blockchain, da mesma forma que o projeto bifurcado foi atacado há alguns dias. Hacken disse em uma nota de pesquisa compartilhada com crypto.news.
Abracadabra foi lançado como uma forma de as pessoas usarem tokens que rendem juros como garantia para emprestar um token indexado ao dólar americano chamado Magic Internet Money (MIM). O sistema é construído em torno de duas partes: o caldeirão, que controla as regras de empréstimo, e o DegenBox, um cofre compartilhado que realmente contém os tokens. Isso significa que quando você prometer seu caldeirão, a DegenBox rastreará seus fundos nos bastidores.
Uma explicação simples do que correu mal é que um sinalizador de segurança que deveria forçar uma verificação final sobre se o mutuário realmente tinha garantias foi desativado numa única transação. Como observa o relatório de Hacken, os invasores “exploraram uma falha lógica na função Cook() do Abracadabra para emprestar tokens MIM e redefinir imediatamente o sinalizador de validação para verificar se havia garantia suficiente”. Isso permitiu empréstimos únicos e inseguros em vários caldeirões.
sob o microscópio
Em termos leigos, veja como esse fluxo funcionava. Abracadabra usa uma função em lote chamada cook(), que permite aos usuários realizar múltiplas ações em uma transação. Por exemplo, você pode depositar garantias e pedir emprestado no mesmo clique. Uma das ações, como a etapa Emprestar, define um sinalizador chamado needSolvencyCheck como verdadeiro. Isso significa “garantir que o mutuário esteja seguro no final desta transação”.
Um dos Caldeirões Vulneráveis | Fonte: Hakken
Porém, outra ação que pode ser realizada dentro do mesmo lote é chamar “_AdditionalCookAction(…)”. Como aponta Hacken, essa função foi declarada como “virtual” e nunca foi implementada, portanto, por padrão, ela retornava um objeto vazio com tudo definido como falso, incluindo o sinalizador needsSolvencyCheck.
Como resultado, o invasor invocou a ação de empréstimo, depois a ação padrão que redefine o sinalizador e, finalmente, o protocolo não verificou a solvência.
Segundo analistas, os invasores atacaram seis caldeirões de uma só vez e roubaram aproximadamente 1,79 milhão de MIM, que trocaram por ETH. O invasor explorou a vulnerabilidade e passou sistematicamente por seis caldeirões diferentes, esvaziando cada um “usando a mesma técnica com uma chamada de função de cozinheiro dedicada”, disse o analista.
Lavagem de dinheiro através do hack do Abracadabra | Fonte: Hakken
Após a troca, os invasores enviaram os fundos por meio do protocolo de mistura de criptomoedas Tornado Cash, principalmente 10 ETH cada, transferindo-os gradativamente no dia seguinte.
E esta não é a primeira vez que o código CauldronV4 do Abracadabra enfrenta problemas. Outros incidentes no início deste ano envolveram diferentes casos extremos dentro da mesma família contratual. O que é interessante aqui é a capacidade de resposta das implantações bifurcadas.
De acordo com o relatório, um fork chamado Synnax suspendeu ou colocou o mestre CauldronV4 na lista de permissões em seu próprio DegenBox vários dias antes do dreno do Abracadabra. Então, basicamente, a equipe do fork puxou o freio de mão depois de descobrir o mesmo padrão fraco, sugerindo que o risco era óbvio para as equipes que monitoravam o código, mesmo que não tivesse sido corrigido.

