L'attacco dell'ornitorinco ha sfruttato l'ordine errato del codice, sostiene il revisore

Dichiarazione di non responsabilità: l'articolo è stato aggiornato per indicare che Omniscia non ha verificato una versione del contratto MasterPlatypusV4. Invece, la società ha verificato una versione del contratto MasterPlatypusV1 dal 21 novembre al 5 dicembre 2021.

L'attacco di prestito flash Platypus da 8 milioni di dollari è stato reso possibile a causa del codice che era nell'ordine sbagliato, secondo a un rapporto post mortem dell'auditor di Platypus Omniscia. La società di revisione afferma che il codice problematico non esisteva nella versione verificata.

Secondo il rapporto, il contratto Platypus MasterPlatypusV4 "conteneva un malinteso fatale nel suo meccanismo di prelievo di emergenza", che gli ha fatto eseguire "il suo controllo di solvibilità prima di aggiornare i token LP associati alla posizione di puntata".

Il rapporto sottolineava che il codice per la funzione EmergencyWithdraw aveva tutti gli elementi necessari per prevenire un attacco, ma questi elementi erano semplicemente scritti nell'ordine sbagliato, come ha spiegato Omniscia:

"Il problema avrebbe potuto essere prevenuto riordinando le istruzioni MasterPlatypusV4::emergencyWithdraw ed eseguendo il controllo di solvibilità dopo che l'importo immesso dall'utente è stato impostato su 0, il che avrebbe impedito l'attacco."

Omniscia ha verificato una versione del contratto MasterPlatypusV1 dal 21 novembre al 5 dicembre 2021. Tuttavia, questa versione "non conteneva punti di integrazione con un sistema esterno PlatypusTreasure" e quindi non conteneva le righe di codice ordinate in modo errato.

È importante notare che il codice sfruttato non esisteva al momento dell'audit di Omniscia. Il punto di vista di Omniscia implica che gli sviluppatori devono aver implementato una nuova versione del contratto a un certo punto dopo l'audit.

Correlato: Raydium annuncia i dettagli dell'hacking, propone un risarcimento per le vittime

Il revisore afferma che l'esecuzione del contratto all'indirizzo Avalanche C-Chain 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 è quella che era Exploited. Le righe 582–584 di questo contratto sembrano richiamare una funzione denominata “isSolvent” sul contratto PlatypusTreasure e le righe 599–601 sembrano impostare l'importo, il fattore e il rewardDebt dell'utente su zero. Tuttavia, questi importi vengono impostati su zero dopo che la funzione "isSolvent" è già stata chiamata.

La squadra dell'ornitorinco confermato il 16 febbraio che l'aggressore ha sfruttato un "difetto nel meccanismo di controllo della solvibilità dell'USP", ma inizialmente il team non ha fornito ulteriori dettagli. Questo nuovo rapporto dell'auditor getta ulteriore luce su come l'attaccante potrebbe essere stato in grado di compiere l'exploit.

Il team di Platypus ha annunciato il 16 febbraio che il era avvenuto l'attacco. Ha tentato di contattare l'hacker e ottenere la restituzione dei fondi in cambio di una taglia di bug. L'attaccante prestiti flash usati per eseguire l'exploit, che è simile alla strategia utilizzata nel Scongelare l'exploit finanziario il 25 dicembre 2022.