El ataque de ornitorrinco aprovechó el orden incorrecto del código, afirma un auditor

Descargo de responsabilidad: el artículo se actualizó para reflejar que Omniscia no auditó una versión del contrato MasterPlatypusV4. En cambio, la empresa auditó una versión del contrato MasterPlatypusV1 del 21 de noviembre al 5 de diciembre de 2021.

El ataque de préstamo flash de $ 8 millones Platypus fue posible debido a un código que estaba en el orden incorrecto, conforme a un informe post-mortem del auditor Omniscia de Platypus. La empresa auditora afirma que el código problemático no existía en la versión auditada.

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

Omniscia auditó una versión del contrato MasterPlatypusV1 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 ornitorrincoTreasure" y, por lo tanto, no contenía las líneas de código desordenadas.

Es importante señalar que el código que se explotó no existía en el momento de la auditoría de Omniscia. 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 explotó una "falla en [el] 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 el había ocurrido un 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 préstamos flash usados para realizar el exploit, que es similar a la estrategia utilizada en el Aprovechamiento de descongelación financiera el 25 de diciembre de 2022.