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.
8 Suka
Hadiah
8
5
Posting ulang
Bagikan
Komentar
0/400
ValidatorVibes
· 8jam yang lalu
smh... serangan overflow lainnya. audit protokol itu benar-benar governance 101 frfr
Lihat AsliBalas0
MetaverseVagrant
· 8jam yang lalu
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.