Poolz mengalami serangan overflow aritmatika, mengalami kerugian sekitar 66,5 ribu dolar AS
Baru-baru ini, platform Poolz diserang di jaringan Ethereum, Binance Smart Chain, dan Polygon, yang mengakibatkan pencurian sejumlah besar token, dengan nilai total sekitar 665.000 dolar AS. Serangan terjadi pada 15 Maret 2023 pukul 03:16 (waktu UTC).
Menurut pemantauan data di blockchain, serangan kali ini melibatkan berbagai token, termasuk MEE, ESNC, DON, ASW, KMON, POOLZ, dan lainnya. Penyerang telah menukar sebagian token yang dicuri menjadi BNB, tetapi saat ini dana tersebut belum dipindahkan.
Penyerang memanfaatkan celah overflow aritmatika dalam kontrak Poolz. Secara khusus, masalah terletak pada fungsi getArraySum dalam fungsi CreateMassPools. Fungsi ini mengalami overflow saat menghitung jumlah token, karena hasil penjumlahan melebihi nilai maksimum tipe uint256, yang mengakibatkan nilai kembali menjadi 1.
Proses serangan adalah sebagai berikut:
Penyerang pertama-tama menukarkan beberapa token MNZ melalui DEX tertentu.
Selanjutnya, panggil fungsi CreateMassPools, memanfaatkan kerentanan dari fungsi getArraySum. Array _StartAmount yang dimasukkan oleh penyerang berisi nilai yang sangat besar, yang menyebabkan overflow penjumlahan.
Karena fungsi CreatePool menggunakan _StartAmount untuk mencatat atribut kolam, penyerang sebenarnya hanya mentransfer 1 token, tetapi sistem mencatat nilai yang sangat besar.
Akhirnya, penyerang memanggil fungsi withdraw untuk menarik token, menyelesaikan serangan.
Untuk mencegah masalah serupa terjadi lagi, disarankan agar pengembang menggunakan versi Solidity yang lebih baru untuk kompilasi, karena versi baru secara otomatis akan melakukan pemeriksaan overflow. Untuk proyek yang menggunakan versi Solidity yang lebih rendah, dapat mempertimbangkan untuk menggunakan pustaka SafeMath dari OpenZeppelin untuk mengatasi masalah overflow integer.
Peristiwa ini sekali lagi mengingatkan kita bahwa dalam pengembangan kontrak pintar, kita harus sangat berhati-hati saat menangani perhitungan matematis, terutama yang melibatkan perhitungan angka besar. Selain itu, melakukan audit kode dan pemeriksaan keamanan secara teratur juga merupakan langkah penting untuk memastikan keamanan proyek.
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.
13 Suka
Hadiah
13
7
Posting ulang
Bagikan
Komentar
0/400
0xInsomnia
· 6jam yang lalu
Hanya 660 ribu? Merokok
Lihat AsliBalas0
DeFiDoctor
· 22jam yang lalu
Satu lagi kasus klinis yang kurang dalam pemeriksaan tipe data
Lihat AsliBalas0
ValidatorVibes
· 08-11 18:19
smh... serangan overflow lainnya. audit protokol itu benar-benar governance 101 frfr
Lihat AsliBalas0
MetaverseVagrant
· 08-11 18:17
Lagi-lagi gelap, 660 ribu juga berani disebut hacker
Poolz diserang dengan serangan overflow aritmatika, kehilangan 665.000 dolar AS
Poolz mengalami serangan overflow aritmatika, mengalami kerugian sekitar 66,5 ribu dolar AS
Baru-baru ini, platform Poolz diserang di jaringan Ethereum, Binance Smart Chain, dan Polygon, yang mengakibatkan pencurian sejumlah besar token, dengan nilai total sekitar 665.000 dolar AS. Serangan terjadi pada 15 Maret 2023 pukul 03:16 (waktu UTC).
Menurut pemantauan data di blockchain, serangan kali ini melibatkan berbagai token, termasuk MEE, ESNC, DON, ASW, KMON, POOLZ, dan lainnya. Penyerang telah menukar sebagian token yang dicuri menjadi BNB, tetapi saat ini dana tersebut belum dipindahkan.
Penyerang memanfaatkan celah overflow aritmatika dalam kontrak Poolz. Secara khusus, masalah terletak pada fungsi getArraySum dalam fungsi CreateMassPools. Fungsi ini mengalami overflow saat menghitung jumlah token, karena hasil penjumlahan melebihi nilai maksimum tipe uint256, yang mengakibatkan nilai kembali menjadi 1.
Proses serangan adalah sebagai berikut:
Penyerang pertama-tama menukarkan beberapa token MNZ melalui DEX tertentu.
Selanjutnya, panggil fungsi CreateMassPools, memanfaatkan kerentanan dari fungsi getArraySum. Array _StartAmount yang dimasukkan oleh penyerang berisi nilai yang sangat besar, yang menyebabkan overflow penjumlahan.
Karena fungsi CreatePool menggunakan _StartAmount untuk mencatat atribut kolam, penyerang sebenarnya hanya mentransfer 1 token, tetapi sistem mencatat nilai yang sangat besar.
Akhirnya, penyerang memanggil fungsi withdraw untuk menarik token, menyelesaikan serangan.
Untuk mencegah masalah serupa terjadi lagi, disarankan agar pengembang menggunakan versi Solidity yang lebih baru untuk kompilasi, karena versi baru secara otomatis akan melakukan pemeriksaan overflow. Untuk proyek yang menggunakan versi Solidity yang lebih rendah, dapat mempertimbangkan untuk menggunakan pustaka SafeMath dari OpenZeppelin untuk mengatasi masalah overflow integer.
Peristiwa ini sekali lagi mengingatkan kita bahwa dalam pengembangan kontrak pintar, kita harus sangat berhati-hati saat menangani perhitungan matematis, terutama yang melibatkan perhitungan angka besar. Selain itu, melakukan audit kode dan pemeriksaan keamanan secara teratur juga merupakan langkah penting untuk memastikan keamanan proyek.