El ataque de USD 8 millones al préstamo flash de Platypus fue posible gracias a un código que estaba mal ordenado, según un informe post mortem de la auditora de Platypus, Omniscia. La empresa auditora afirma que el código problemático no existía en la versión que vieron.
Según el informe, el contrato Platypus MasterPlatypusV4 "contenía un error fatal en su mecanismo emergencyWithdraw" que le hacía realizar "su comprobación de solvencia antes de actualizar los tokens LP asociados a la posición de staking".
El informe destacaba que el código de la función emergencyWithdraw tenía todos los elementos necesarios para evitar un ataque, pero estos elementos simplemente estaban escritos en el orden equivocado, según explicaba Omniscia:
"El problema podría haberse evitado reordenando las sentencias de MasterPlatypusV4::emergencyWithdraw y realizando la comprobación de solvencia después de que la entrada de importe del usuario se hubiera puesto a 0, lo que habría impedido que se produjera el ataque".
Omnisia admitió que auditó una versión del contrato MasterPlatypusV4 del 21 de noviembre al 5 de diciembre de 2021. Sin embargo, esta versión "no contenía puntos de integración con un sistema externo de platypusTreasure" y, por tanto, no contenía las líneas de código desordenadas. Desde el punto de vista de Omniscia, esto implica que los desarrolladores deben haber desplegado una nueva versión del contrato en algún momento posterior a la realización de la auditoría.



