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

L’attaque de prêt flash Platypus de 8 millions de dollars a été rendue possible grâce au code qui a été dans le mauvais 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 vue.

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. »

Omnisia a admis avoir audité une version du contrat MasterPlatypusV4 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. Du point de vue d’Omniscia, cela 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.

En rapport: 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 C-Chain d’Avalanche (AVAX) 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 est celui qui a été exploité. 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écompenseDebt 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 que l’attaquant a exploité une « défaut dans [the] Mécanisme de contrôle de solvabilité 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 de Platypus a annoncé le 16 février que 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 a utilisé des prêts flashés pour exécuter l’exploit, qui est similaire à la stratégie utilisée dans l’exploit Defrost Finance du 25 décembre.