Ataque Platypus explorou ordem incorreta de código, afirma auditor

Isenção de responsabilidade: o artigo foi atualizado para refletir que a Omniscia não auditou uma versão do contrato MasterPlatypusV4. Em vez disso, a empresa auditou uma versão do contrato MasterPlatypusV1 de 21 de novembro a 5 de dezembro de 2021.

O ataque de empréstimo flash Platypus de US$ 8 milhões foi possível devido ao código que estava na ordem errada, segundo a um relatório post-mortem do auditor Platypus Omniscia. A empresa de auditoria afirma que o código problemático não existia na versão auditada.

De acordo com o relatório, o contrato Platypus MasterPlatypusV4 “continha um equívoco fatal em seu mecanismo de retirada de emergência”, que o fazia realizar “sua verificação de solvência antes de atualizar os tokens LP associados à posição de participação”.

O relatório enfatizou que o código para a função EmergencyWithdraw tinha todos os elementos necessários para prevenir um ataque, mas esses elementos foram simplesmente escritos na ordem errada, como explicou Omniscia:

“O problema poderia ter sido evitado reordenando as declarações MasterPlatypusV4::emergencyWithdraw e executando a verificação de solvência após a entrada do valor do usuário ter sido definida como 0, o que teria proibido o ataque de ocorrer.”

A Omniscia auditou uma versão do contrato MasterPlatypusV1 de 21 de novembro a 5 de dezembro de 2021. No entanto, esta versão “não continha pontos de integração com um sistema platypusTreasure externo” e, portanto, não continha as linhas de código mal ordenadas.

É importante observar que o código que foi explorado não existia no momento da auditoria da Omniscia. O ponto de vista da Omniscia implica que os desenvolvedores devem ter implantado uma nova versão do contrato em algum momento após a realização da auditoria.

Relacionado: Raydium anuncia detalhes do hack e propõe compensação para as vítimas

O auditor afirma que a implementação do contrato no endereço 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 da Avalanche C-Chain é a que foi exploradas. As linhas 582–584 desse contrato parecem chamar uma função chamada “isSolvent” no contrato PlatypusTreasure, e as linhas 599–601 parecem definir o valor, o fator e o rewardDebt do usuário como zero. No entanto, esses valores são zerados depois que a função “isSolvent” já foi chamada.

A equipe Platypus confirmado em 16 de fevereiro, que o invasor explorou uma “falha [no] mecanismo de verificação de solvência da USP”, mas a equipe inicialmente não forneceu mais detalhes. Este novo relatório do auditor lança mais luz sobre como o invasor pode ter conseguido realizar a exploração.

A equipe Platypus anunciou em 16 de fevereiro que o ataque ocorreu. Ele tentou entrar em contato com o hacker e obter os fundos devolvidos em troca de uma recompensa por bug. o atacante empréstimos flash usados para executar a exploração, que é semelhante à estratégia usada no Exploit Defrost Finance em 25 de dezembro de 2022.