Atacul Platypus a exploatat ordinea incorectă a codului, susține auditorul

Disclaimer: articolul a fost actualizat pentru a reflecta faptul că Omniscia nu a auditat o versiune a contractului MasterPlatypusV4. În schimb, compania a auditat o versiune a contractului MasterPlatypusV1 în perioada 21 noiembrie - 5 decembrie 2021.

Atacul de împrumut flash Platypus de 8 milioane de dolari a fost posibil datorită codului care a fost în ordine greșită, conform la un raport post-mortem al auditorului Platypus Omniscia. Compania de audit susține că codul problematic nu a existat în versiunea pe care a auditat-o.

Potrivit raportului, contractul Platypus MasterPlatypusV4 „conținea o concepție greșită fatală în mecanismul său de retragere de urgență”, care l-a făcut să efectueze „verificarea solvabilității înainte de a actualiza jetoanele LP asociate cu poziția de miză”.

Raportul a subliniat că codul pentru funcția de retragere de urgență avea toate elementele necesare pentru a preveni un atac, dar aceste elemente au fost pur și simplu scrise în ordine greșită, după cum a explicat Omniscia:

„Problema ar fi putut fi prevenită recomandând extrasele MasterPlatypusV4::emergencyWithdraw și efectuând verificarea solvabilității după ce introducerea sumei utilizatorului a fost setată la 0, ceea ce ar fi interzis atacul.”

Omniscia a auditat o versiune a contractului MasterPlatypusV1 în perioada 21 noiembrie - 5 decembrie 2021. Cu toate acestea, această versiune „nu conținea puncte de integrare cu un sistem extern platypusTreasure” și, prin urmare, nu conținea linii de cod ordonate greșit.

Este important de menționat că codul care a fost exploatat nu exista la momentul auditului Omniscia. Punctul de vedere al Omniscia implică faptul că dezvoltatorii trebuie să fi implementat o nouă versiune a contractului la un moment dat după efectuarea auditului.

Related: Raydium anunță detalii despre hack, propune despăgubiri pentru victime

Auditorul susține că implementarea contractului la adresa Avalanche C-Chain 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 este cea care a fost exploatat. Rândurile 582–584 din acest contract par să numească o funcție numită „isSolvent” în contractul PlatypusTreasure, iar liniile 599–601 par să stabilească suma utilizatorului, factorul și recompensa Datoria la zero. Cu toate acestea, aceste sume sunt setate la zero după ce funcția „isSolvent” a fost deja apelată.

Echipa Platypus confirmat pe 16 februarie, că atacatorul a exploatat o „defecțiune în mecanismul de verificare a solvabilității USP”, dar echipa nu a oferit inițial mai multe detalii. Acest nou raport al auditorului aruncă o lumină suplimentară asupra modului în care atacatorul ar fi putut să realizeze exploitul.

Echipa Platypus a anunțat pe 16 februarie că atacul a avut loc. A încercat să contacteze hackerul și să obțină fondurile returnate în schimbul unei recompense pentru erori. Atacatorul utilizate împrumuturi flash pentru a efectua exploit, care este similar cu strategia utilizată în Exploatare Defrost Finance la 25 decembrie 2022.