Abracadabra Kehilangan $1,8 Juta Akibat Eksploitasi Kesalahan Logika, Ungkap Hacken

8 jam yang lalu
2 menit baca
2 tampilan

Kerugian Protokol DeFi Abracadabra

Protokol DeFi Abracadabra mengalami kerugian sebesar $1,8 juta setelah seorang penyerang mengeksploitasi kesalahan logika sederhana dalam fungsi batch-nya. Analis dari Hacken melaporkan bahwa penyerang tersebut berhasil mencuci dana melalui Tornado Cash.

Deskripsi Protokol Abracadabra

Pada awal Oktober, Abracadabra, sebuah protokol peminjaman DeFi yang memungkinkan pengguna meminjam stablecoin MIM dengan menggunakan token yang disetorkan sebagai jaminan, kembali mengalami serangan setelah sebelumnya juga menjadi target hacker. Kali ini, penyerang memanfaatkan kesalahan logika dalam fungsi batch protokol untuk meminjam tanpa memberikan jaminan, mirip dengan proyek fork yang baru saja diserang beberapa hari sebelumnya, menurut catatan penelitian yang dibagikan oleh Hacken kepada crypto.news.

Abracadabra diluncurkan sebagai solusi bagi pengguna untuk memanfaatkan token yang menghasilkan bunga sebagai jaminan dan meminjam token yang terikat pada dolar AS, yang dikenal sebagai Magic Internet Money (MIM). Sistem ini terdiri dari dua komponen utama: Cauldrons, yang mengatur aturan peminjaman, dan DegenBox, brankas bersama yang menyimpan token. Secara sederhana, pengguna menyetorkan jaminan di Cauldron, sementara DegenBox melacak dana di belakang layar.

Kesalahan Logika dalam Protokol

Masalah yang terjadi adalah sebuah bendera keamanan yang seharusnya memaksa pemeriksaan akhir untuk memastikan bahwa peminjam memiliki jaminan yang cukup, dimatikan dalam satu transaksi. Dalam laporan Hacken, dijelaskan bahwa penyerang “mengeksploitasi kesalahan logika dalam fungsi masak Abracadabra, di mana mereka dapat meminjam token MIM dan kemudian segera mereset bendera validasi yang seharusnya memeriksa apakah mereka memiliki cukup jaminan.” Hal ini memungkinkan peminjaman tanpa jaminan dalam satu langkah di beberapa Cauldrons.

Proses Peminjaman yang Dieksploitasi

Berikut adalah penjelasan sederhana tentang cara kerjanya. Abracadabra menggunakan fungsi batch yang disebut masak, sehingga pengguna dapat melakukan beberapa tindakan dalam satu transaksi, seperti menyetorkan jaminan dan meminjam dalam satu klik. Salah satu tindakan tersebut, yaitu “meminjam”, mengatur bendera bernama needsSolvencyCheck menjadi true, yang berarti “di akhir transaksi ini, periksa bahwa peminjam aman.” Namun, tindakan lain yang dapat dilakukan dalam batch yang sama memanggil fungsi _additionalCookAction(…). Menurut Hacken, fungsi ini dinyatakan sebagai “virtual” dan tidak pernah diimplementasikan, sehingga secara default mengembalikan objek kosong di mana semua nilai diatur menjadi false, termasuk bendera needsSolvencyCheck tersebut. Akibatnya, penyerang dapat memanggil tindakan meminjam, kemudian memanggil tindakan default yang mereset bendera, sehingga protokol tidak pernah memeriksa solvabilitas.

Detail Serangan

Para analis melaporkan bahwa penyerang menyerang enam Cauldrons sekaligus, mengambil sekitar 1,79 juta MIM dan menukarnya dengan ETH. Penyerang mengeksploitasi kerentanan ini secara sistematis, melewati enam Cauldrons yang berbeda dengan menggunakan teknik yang sama melalui panggilan fungsi masak yang didedikasikan. Setelah menukar, penyerang mengalirkan dana melalui Tornado Cash, sebuah protokol pencampuran crypto, dengan sebagian besar transaksi sebesar 10 ETH masing-masing, yang dikirim secara bertahap selama hari berikutnya.

Sejarah Masalah pada Abracadabra

Ini bukan pertama kalinya kode CauldronV4 Abracadabra terlibat dalam masalah. Insiden lain sebelumnya tahun ini melibatkan kasus tepi yang berbeda dalam keluarga kontrak yang sama. Menariknya, seberapa cepat penerapan fork bereaksi terhadap masalah ini. Menurut laporan tersebut, sebuah fork bernama Synnax menghentikan atau menghapus daftar putih master CauldronV4-nya di DegenBox beberapa hari sebelum pengurasan Abracadabra, menunjukkan bahwa tim fork tersebut telah menarik rem darurat setelah mengidentifikasi pola kerentanan yang sama, yang menunjukkan bahwa risiko tersebut telah terlihat oleh tim yang mengawasi kode, meskipun belum diperbaiki.