Serangan platipus mengeksploitasi urutan kode yang salah, klaim auditor

Penafian: Artikel telah diperbarui untuk mencerminkan bahwa Omniscia tidak mengaudit versi kontrak MasterPlatypusV4. Sebagai gantinya, perusahaan mengaudit versi kontrak MasterPlatypusV1 dari 21 November hingga 5 Desember 2021.

Serangan flash loan Platipus senilai $8 juta dimungkinkan karena urutan kode yang salah, menurut ke laporan post-mortem dari auditor Platypus Omniscia. Perusahaan audit mengklaim kode bermasalah tidak ada dalam versi yang mereka audit.

Menurut laporan tersebut, kontrak Platypus MasterPlatypusV4 “mengandung kesalahpahaman fatal dalam mekanisme Penarikan darurat”, yang membuatnya melakukan “pemeriksaan solvabilitas sebelum memperbarui token LP yang terkait dengan posisi taruhan.”

Laporan tersebut menekankan bahwa kode untuk fungsi emergencyWithdraw memiliki semua elemen yang diperlukan untuk mencegah serangan, tetapi elemen ini hanya ditulis dengan urutan yang salah, seperti yang dijelaskan oleh Omniscia:

“Masalah ini dapat dicegah dengan memesan ulang pernyataan MasterPlatypusV4::emergencyWithdraw dan melakukan pemeriksaan solvabilitas setelah entri jumlah pengguna disetel ke 0 yang akan melarang terjadinya serangan.”

Omniscia mengaudit versi kontrak MasterPlatypusV1 dari 21 November hingga 5 Desember 2021. Namun, versi ini “tidak berisi poin integrasi dengan sistem platypusTreasure eksternal” dan karenanya tidak berisi baris kode yang salah urutan.

Penting untuk dicatat bahwa kode yang dieksploitasi tidak ada pada saat audit Omniscia. Sudut pandang Omniscia menyiratkan bahwa pengembang harus menerapkan versi baru kontrak di beberapa titik setelah audit dilakukan.

Terkait: Raydium mengumumkan detail peretasan, mengusulkan kompensasi bagi para korban

Auditor mengklaim bahwa implementasi kontrak di alamat C-Chain Avalanche 0xc007f27b757a782c833c568f5851ae1dfe0e6ec7 adalah yang dieksploitasi. Baris 582–584 dari kontrak ini tampaknya memanggil fungsi yang disebut "isSolvent" pada kontrak PlatypusTreasure, dan baris 599–601 tampaknya menyetel jumlah, faktor, dan rewardDebt pengguna ke nol. Namun, jumlah ini disetel ke nol setelah fungsi "isSolvent" dipanggil.

Tim Platipus dikonfirmasi pada 16 Februari penyerang mengeksploitasi “cacat dalam [the] mekanisme pemeriksaan solvabilitas USP,” tetapi tim awalnya tidak memberikan detail lebih lanjut. Laporan baru dari auditor ini menjelaskan lebih lanjut tentang bagaimana penyerang mungkin dapat melakukan eksploitasi.

Tim Platipus mengumumkan pada 16 Februari bahwa serangan telah terjadi. Itu telah mencoba untuk menghubungi peretas dan mengembalikan dana dengan imbalan hadiah bug. Penyerang menggunakan pinjaman flashed untuk melakukan eksploitasi, yang mirip dengan strategi yang digunakan dalam Eksploitasi Defrost Finance pada 25 Desember 2022.