Poolz mengalami serangan overflow aritmatika, kerugian mencapai 665.000 dolar AS
Pada dini hari 15 Maret, Poolz diserang di jaringan Ethereum, Binance Smart Chain, dan Polygon, mengakibatkan pencurian berbagai token dengan total nilai sekitar 665.000 dolar AS. Penyerang memanfaatkan celah overflow aritmatika dalam kontrak pintar untuk berhasil mendapatkan sejumlah besar token.
Penyerang dapat membuat kumpulan likuiditas secara massal dengan memanggil fungsi CreateMassPools. Fungsi ini memiliki kerentanan kritis yang memungkinkan penyerang untuk menghindari pemeriksaan likuiditas yang normal dengan parameter yang dirancang dengan cermat. Secara khusus, penyerang memanfaatkan masalah overflow integer dalam fungsi getArraySum.
Selama proses serangan, hacker pertama-tama menukar sejumlah kecil token MNZ di suatu bursa terdesentralisasi. Kemudian, mereka memanggil fungsi CreateMassPools yang memiliki celah. Fungsi ini seharusnya digunakan untuk membuat kolam likuiditas secara massal dan menyediakan likuiditas awal, tetapi karena cacat pada fungsi getArraySum, penyerang dapat menyuntikkan likuiditas palsu yang jauh melebihi jumlah sebenarnya yang ditransfer.
Fungsi getArraySum mengakumulasi array _StartAmount yang diberikan, namun karena masalah overflow, nilai yang dikembalikan akhirnya menjadi 1. Namun, fungsi CreatePool tetap menggunakan nilai _StartAmount yang asli untuk pencatatan. Ini menyebabkan penyerang hanya perlu memasukkan 1 token, maka dapat mencatat likuiditas palsu dalam jumlah besar di dalam sistem.
Setelah langkah ini selesai, penyerang cukup memanggil fungsi withdraw untuk menarik token, sehingga menyelesaikan seluruh proses serangan.
Peristiwa ini sekali lagi menyoroti pentingnya keamanan operasi aritmatika dalam kontrak pintar. Untuk mencegah masalah serupa, para pengembang disarankan untuk mempertimbangkan penggunaan versi terbaru dari compiler Solidity, yang dapat secara otomatis melakukan pemeriksaan overflow pada tahap kompilasi. Untuk proyek yang menggunakan versi lama Solidity, disarankan untuk mengintegrasikan perpustakaan SafeMath dari OpenZeppelin untuk menangani masalah overflow integer.
Kejadian serangan ini mengingatkan kita bahwa dalam ekosistem blockchain, bahkan celah kode yang tampak kecil pun dapat menyebabkan kerugian ekonomi yang serius. Oleh karena itu, audit kode yang menyeluruh dan pembaruan keamanan yang berkelanjutan sangat penting untuk melindungi aset pengguna.
Lihat Asli
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
Poolz mengalami serangan overflow aritmatika dengan kerugian sebesar 66,5 ribu dolar AS
Poolz mengalami serangan overflow aritmatika, kerugian mencapai 665.000 dolar AS
Pada dini hari 15 Maret, Poolz diserang di jaringan Ethereum, Binance Smart Chain, dan Polygon, mengakibatkan pencurian berbagai token dengan total nilai sekitar 665.000 dolar AS. Penyerang memanfaatkan celah overflow aritmatika dalam kontrak pintar untuk berhasil mendapatkan sejumlah besar token.
Penyerang dapat membuat kumpulan likuiditas secara massal dengan memanggil fungsi CreateMassPools. Fungsi ini memiliki kerentanan kritis yang memungkinkan penyerang untuk menghindari pemeriksaan likuiditas yang normal dengan parameter yang dirancang dengan cermat. Secara khusus, penyerang memanfaatkan masalah overflow integer dalam fungsi getArraySum.
Selama proses serangan, hacker pertama-tama menukar sejumlah kecil token MNZ di suatu bursa terdesentralisasi. Kemudian, mereka memanggil fungsi CreateMassPools yang memiliki celah. Fungsi ini seharusnya digunakan untuk membuat kolam likuiditas secara massal dan menyediakan likuiditas awal, tetapi karena cacat pada fungsi getArraySum, penyerang dapat menyuntikkan likuiditas palsu yang jauh melebihi jumlah sebenarnya yang ditransfer.
Fungsi getArraySum mengakumulasi array _StartAmount yang diberikan, namun karena masalah overflow, nilai yang dikembalikan akhirnya menjadi 1. Namun, fungsi CreatePool tetap menggunakan nilai _StartAmount yang asli untuk pencatatan. Ini menyebabkan penyerang hanya perlu memasukkan 1 token, maka dapat mencatat likuiditas palsu dalam jumlah besar di dalam sistem.
Setelah langkah ini selesai, penyerang cukup memanggil fungsi withdraw untuk menarik token, sehingga menyelesaikan seluruh proses serangan.
Peristiwa ini sekali lagi menyoroti pentingnya keamanan operasi aritmatika dalam kontrak pintar. Untuk mencegah masalah serupa, para pengembang disarankan untuk mempertimbangkan penggunaan versi terbaru dari compiler Solidity, yang dapat secara otomatis melakukan pemeriksaan overflow pada tahap kompilasi. Untuk proyek yang menggunakan versi lama Solidity, disarankan untuk mengintegrasikan perpustakaan SafeMath dari OpenZeppelin untuk menangani masalah overflow integer.
Kejadian serangan ini mengingatkan kita bahwa dalam ekosistem blockchain, bahkan celah kode yang tampak kecil pun dapat menyebabkan kerugian ekonomi yang serius. Oleh karena itu, audit kode yang menyeluruh dan pembaruan keamanan yang berkelanjutan sangat penting untuk melindungi aset pengguna.