Næbdyrangreb udnyttede forkert rækkefølge af kode, hævder revisor

Ansvarsfraskrivelse: Artiklen er blevet opdateret for at afspejle, at Omniscia ikke reviderede en version af MasterPlatypusV4-kontrakten. I stedet reviderede virksomheden en version af MasterPlatypusV1-kontrakten fra 21. november til 5. december 2021.

Platypus flash-lånsangrebet på $8 millioner blev gjort muligt på grund af kode, der var i den forkerte rækkefølge, ifølge til en obduktionsrapport fra Platypus auditor Omniscia. Revisionsfirmaet hævder, at den problematiske kode ikke fandtes i den version, de reviderede.

Ifølge rapporten indeholdt Platypus MasterPlatypusV4-kontrakten "en fatal misforståelse i sin nødudbetalingsmekanisme", som fik den til at udføre "sin solvenskontrol, før den opdaterede LP-tokenserne forbundet med indsatspositionen."

Rapporten understregede, at koden til funktionen for nødudtræk havde alle de nødvendige elementer for at forhindre et angreb, men disse elementer blev simpelthen skrevet i den forkerte rækkefølge, som Omniscia forklarede:

"Problemet kunne have været forhindret ved at genbestille MasterPlatypusV4::emergencyWithdraw-opgørelserne og udføre solvenskontrollen, efter at brugerens beløbsindtastning er blevet sat til 0, hvilket ville have forhindret angrebet i at finde sted."

Omniscia reviderede en version af MasterPlatypusV1-kontrakten fra den 21. november til den 5. december 2021. Denne version "indeholdt dog ingen integrationspunkter med et eksternt platypusTreasure-system" og indeholdt derfor ikke de fejlordnede kodelinjer.

Det er vigtigt at bemærke, at den kode, der blev udnyttet, ikke eksisterede på tidspunktet for Omniscias revision. Omniscias synspunkt indebærer, at udviklerne skal have implementeret en ny version af kontrakten på et tidspunkt efter revisionen blev foretaget.

Relateret: Raydium annoncerer detaljer om hack, foreslår erstatning til ofre

Revisoren hævder, at kontraktimplementeringen på Avalanche C-Chain adresse 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 er den, der var Exploited. Linje 582-584 i denne kontrakt ser ud til at kalde en funktion kaldet "isSolvent" på PlatypusTreasure-kontrakten, og linje 599-601 ser ud til at sætte brugerens beløb, faktor og belønningDebt til nul. Disse beløb sættes dog til nul, efter at "isSolvent"-funktionen allerede er blevet kaldt.

Platypus-holdet bekræftet den 16. februar, at angriberen udnyttede en "fejl i [the] USP solvens check-mekanisme", men holdet gav i første omgang ikke yderligere detaljer. Denne nye rapport fra revisoren kaster yderligere lys over, hvordan angriberen kan have været i stand til at udføre udnyttelsen.

Platypus-teamet annoncerede den 16. februar, at angreb var sket. Den har forsøgt at kontakte hackeren og få pengene tilbage i bytte for en bug-bounty. Angriberen brugte blinkede lån at udføre udnyttelsen, som ligner den strategi, der bruges i Defrost Finance udnytte den 25. december 2022.