El ataque de préstamo flash de $ 8 millones Platypus fue posible debido a un código que estaba en el orden incorrecto, de acuerdo a a un informe post mortem del auditor Platypus Omniscia. La empresa auditora afirma que el código problemático no existía en la versión que vieron.
A la luz de los recientes @ornitorrinco incidente el https://t.co/30PzcoIJnt El equipo ha preparado un análisis técnico post-mortem que describe cómo se desarrolló el exploit en gran detalle.
Asegúrate de seguir @Omniscia_sec para recibir más actualizaciones de seguridad!https://t.co/cf784QtKPK pic.twitter.com/egHyoYaBhn
— Omniscia (@Omniscia_sec) 17 de febrero de 2023
Según el informe, el contrato Platypus MasterPlatypusV4 “contenía un concepto erróneo fatal en su mecanismo de retiro de emergencia”, lo que hizo que realizara “su verificación de solvencia antes de actualizar los tokens LP asociados con la posición de participación”.
El informe enfatizó que el código para la función de retiro de emergencia tenía todos los elementos necesarios para prevenir un ataque, pero estos elementos simplemente se escribieron en el orden incorrecto, como explicó Omniscia:
“El problema podría haberse evitado reordenando las declaraciones MasterPlatypusV4::emergencyWithdraw y realizando la verificación de solvencia después de que la cantidad ingresada por el usuario se haya establecido en 0, lo que habría impedido que se llevara a cabo el ataque”.
Omnisia admitió que auditaron 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 ornitorrinco externo” y, por lo tanto, no contenía las líneas de código desordenadas. El punto de vista de Omniscia implica que los desarrolladores deben haber implementado una nueva versión del contrato en algún momento después de que se realizó la auditoría.
Relacionado: Raydium anuncia detalles del hackeo y propone compensación para las víctimas
El auditor afirma que la implementación del contrato en Avalanche C-Chain dirección 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 es la que fue explotado. Las líneas 582 a 584 de este contrato parecen llamar a una función llamada “isSolvent” en el contrato PlatypusTreasure, y las líneas 599 a 601 parecen establecer la cantidad, el factor y la deuda de recompensa del usuario en cero. Sin embargo, estas cantidades se establecen en cero después de que ya se haya llamado a la función “isSolvent”.
El equipo ornitorrinco confirmado el 16 de febrero que el atacante aprovechó una “falla en [the] mecanismo de verificación de solvencia de USP”, pero el equipo inicialmente no proporcionó más detalles. Este nuevo informe del auditor arroja más luz sobre cómo el atacante pudo haber logrado la vulnerabilidad.
El equipo Platypus anunció el 16 de febrero que se había producido el ataque. Ha intentado ponerse en contacto con el pirata informático y obtener los fondos devueltos a cambio de una recompensa por errores. El atacante usó préstamos flasheados para realizar el exploit, que es similar a la estrategia utilizada en el exploit Defrost Finance el 25 de diciembre de 2022.