O invasor da Arcadia Finance usou uma exploração de reentrada para drenar US$ 455.000 do protocolo de finanças descentralizadas (DeFi), de acordo com um relatório post-mortem de 10 de julho emitido pela equipe de desenvolvimento do aplicativo. Uma “exploração de reentrada” é um bug que permite a um invasor “inserir novamente” um contrato ou interrompê-lo durante um processo de várias etapas, impedindo que o processo seja concluído corretamente.

A equipe enviou uma mensagem ao invasor exigindo a devolução dos fundos em até 24 horas e ameaçando ação policial caso o hacker não cumpra.

Arcadia Finance foi explorada na manhã de 10 de julho e drenada em criptomoedas no valor de US$ 455.000. Um relatório preliminar da empresa de segurança blockchain PeckShield afirmou que o invasor usou uma “falta de validação de entrada não confiável” nos contratos do aplicativo para drenar os fundos. A equipe da Arcadia negou, afirmando que a análise do PeckShield estava errada. No entanto, a equipe não explicou qual era a causa na época.

O novo relatório da Arcadia afirmou que a função “liquidateVault()” do aplicativo não continha uma verificação de reentrada. Isso permitiu que o invasor chamasse a função antes que uma verificação de integridade fosse concluída, mas depois que o invasor retirasse os fundos. Como resultado, o invasor pode pedir fundos emprestados e não reembolsá-los, drenando-os do protocolo.

A equipe agora pausou os contratos e está trabalhando em um patch para fechar a brecha.

O invasor primeiro pegou um empréstimo rápido da Aave no valor de US$ 20.672 em moedas USD (USDC) e o depositou em um cofre da Arcadia. Em seguida, o hacker usou essa garantia do cofre para emprestar US$ 103.210 USDC de um pool de liquidez da Arcadia. Isso foi conseguido por meio de uma função “doActionWithLeverage()” que permite aos usuários emprestar fundos apenas se sua conta puder permanecer saudável até o final do bloco.

O invasor depositou US$ 103.210 no cofre, elevando o total de fundos para US$ 123.882. O hacker então retirou todos os fundos, deixando o cofre sem ativos e com dívidas de US$ 103.210.

Teoricamente, isso deveria ter causado a reversão de todas as ações, já que a retirada dos fundos deveria ter feito com que a conta fosse reprovada em um exame de saúde. No entanto, o invasor usou um contrato malicioso para chamar liquidateVault() antes que a verificação de integridade pudesse começar. O cofre foi liquidado, eliminando todas as suas dívidas. Como resultado, ficou com zero ativos e zero passivos, o que lhe permitiu passar no exame de saúde.

Como a conta passou na verificação de integridade após a conclusão de todas as transações, nenhuma das transações foi revertida e o pool foi drenado em US$ 103.210. O invasor pagou o empréstimo da Aave no mesmo bloco. O hacker repetiu essa exploração várias vezes, drenando um total de US$ 455.000 dos pools do Optimism e do Ethereum.

No seu relatório, a equipa da Arcadia rejeitou as alegações de que a exploração foi causada por informações não confiáveis, afirmando que esta suposta vulnerabilidade não era “o problema central” do ataque.

A equipe da Arcadia postou uma mensagem ao invasor usando o campo de dados de entrada de uma transação do Optimism, informando:

“Entendemos que você está envolvido na exploração da Arcadia Finance. Estamos trabalhando ativamente com especialistas em segurança e autoridades policiais. Seus depósitos e saques de TC no BNB foram um pouco rápidos demais, é difícil esconder sua identidade online hoje em dia. Iremos escalar isso com as autoridades policiais na ausência de qualquer devolução de fundos nas próximas 24 horas.”

Em seu relatório, a Arcadia afirmou ter encontrado algumas pistas promissoras para rastrear o invasor. “Além de obter endereços vinculados a exchanges centralizadas, também descobrimos links para explorações anteriores de outros protocolos”, afirmou o relatório. “A equipe está investigando dados dentro e fora da rede em toda a sua extensão e tem várias pistas.”

Explorações e golpes têm sido um problema contínuo no espaço DeFi em 2023. Um relatório de 5 de julho da CertiK afirmou que mais de US$ 300 milhões foram perdidos devido a explorações no segundo trimestre do ano.