L'attaque de Platypus a exploité un ordre incorrect du code, selon un auditeur

Avis de non-responsabilité : l'article a été mis à jour pour indiquer qu'Omniscia n'a pas audité une version du contrat MasterPlatypusV4. Au lieu de cela, la société a audité une version du contrat MasterPlatypusV1 du 21 novembre au 5 décembre 2021.

L'attaque de prêt flash Platypus de 8 millions de dollars a été rendue possible grâce à un code qui n'était pas dans le bon ordre, selon à un rapport post-mortem de l'auditeur de Platypus Omniscia. La société d'audit affirme que le code problématique n'existait pas dans la version qu'elle a auditée.

Selon le rapport, le contrat Platypus MasterPlatypusV4 "contenait une idée fausse fatale dans son mécanisme de retrait d'urgence", qui l'obligeait à effectuer "son contrôle de solvabilité avant de mettre à jour les jetons LP associés à la position de participation".

Le rapport soulignait que le code de la fonction emergencyWithdraw contenait tous les éléments nécessaires pour empêcher une attaque, mais ces éléments étaient simplement écrits dans le mauvais ordre, comme l'a expliqué Omniscia :

"Le problème aurait pu être évité en réordonnant les instructions MasterPlatypusV4::emergencyWithdraw et en effectuant le contrôle de solvabilité après que l'entrée du montant de l'utilisateur ait été définie sur 0, ce qui aurait interdit l'attaque."

Omniscia a audité une version du contrat MasterPlatypusV1 du 21 novembre au 5 décembre 2021. Cependant, cette version "ne contenait aucun point d'intégration avec un système platypusTreasure externe" et ne contenait donc pas les lignes de code mal ordonnées.

Il est important de noter que le code qui a été exploité n'existait pas au moment de l'audit d'Omniscia. Le point de vue d'Omniscia implique que les développeurs doivent avoir déployé une nouvelle version du contrat à un moment donné après la réalisation de l'audit.

Connexe: Raydium annonce les détails du piratage et propose une indemnisation pour les victimes

L'auditeur affirme que la mise en œuvre du contrat à l'adresse Avalanche C-Chain 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 est celle qui a été Exploités. Les lignes 582 à 584 de ce contrat semblent appeler une fonction appelée "isSolvent" sur le contrat PlatypusTreasure, et les lignes 599 à 601 semblent définir le montant, le facteur et la récompense Debt de l'utilisateur à zéro. Cependant, ces quantités sont mises à zéro après que la fonction "isSolvent" ait déjà été appelée.

L'équipe Platypus confirmé le 16 février, l'attaquant a exploité une "défaut dans [le] mécanisme de vérification de la solvabilité de l'USP", mais l'équipe n'a initialement pas fourni plus de détails. Ce nouveau rapport de l'auditeur apporte un éclairage supplémentaire sur la façon dont l'attaquant a pu accomplir l'exploit.

L'équipe Platypus a annoncé le 16 février que le l'attaque avait eu lieu. Il a tenté de contacter le pirate informatique et de récupérer les fonds en échange d'une prime de bogue. L'attaquant prêts flashés utilisés pour effectuer l'exploit, qui est similaire à la stratégie utilisée dans le Exploitation de Defrost Finance le 25 décembre 2022.