Poolz Mengalami Serangan Overflow Aritmetika, Mengalami Kerugian Sekitar 66,5 Ribu Dolar
Baru-baru ini, terjadi serangan terhadap Poolz di jaringan Ethereum, Binance Smart Chain, dan Polygon. Menurut pemantauan data on-chain, serangan terjadi pada 15 Maret 2023 pukul 03:16 ( waktu UTC ). Serangan ini melibatkan berbagai token, termasuk MEE, ESNC, DON, ASW, KMON, POOLZ, dengan total kerugian sekitar 665.000 dolar.
Penyerang memanfaatkan kerentanan overflow aritmatika dalam kontrak pintar Poolz. Secara khusus, masalah terletak pada fungsi getArraySum dalam fungsi CreateMassPools. Fungsi ini gagal menangani dengan benar situasi overflow yang diakibatkan oleh penjumlahan angka besar saat menghitung likuiditas awal yang diberikan oleh pengguna saat membuat kolam secara massal.
Proses serangan adalah sebagai berikut:
Penyerang pertama-tama menukarkan sejumlah kecil token MNZ di suatu bursa terdesentralisasi.
Kemudian panggil fungsi CreateMassPools, dengan parameter yang telah disusun dengan hati-hati. Array _StartAmount berisi dua nilai: satu angka besar yang mendekati batas atas uint256, dan satu jumlah token yang normal.
Karena operasi penjumlahan dalam fungsi getArraySum menyebabkan overflow, nilai yang dikembalikan akhirnya adalah 1. Namun, kontrak masih menggunakan nilai _StartAmount yang asli saat mencatat atribut kolam.
Ini mengakibatkan penyerang sebenarnya hanya mentransfer 1 token, tetapi mencatat jumlah likuiditas yang sangat besar dalam kontrak.
Akhirnya, penyerang memanggil fungsi withdraw untuk menarik token dan menyelesaikan serangan.
Untuk mencegah masalah seperti ini terjadi lagi, disarankan kepada pengembang untuk mengambil langkah-langkah berikut:
Gunakan versi compiler Solidity yang lebih baru, yang secara otomatis melakukan pemeriksaan overflow.
Jika harus menggunakan versi lama Solidity, Anda dapat mengimpor pustaka keamanan pihak ketiga untuk menangani operasi integer, seperti pustaka SafeMath dari OpenZeppelin.
Dalam menangani input pengguna, terutama dalam situasi yang melibatkan perhitungan angka besar, harus dilakukan pemeriksaan batas yang ketat dan penanganan pengecualian.
Lakukan audit kode secara berkala, dengan perhatian khusus pada bagian yang mungkin melibatkan overflow integer.
Pertimbangkan untuk memperkenalkan mekanisme seperti tanda tangan ganda atau penguncian waktu untuk memberikan waktu tanggapan dalam situasi darurat.
Kejadian ini sekali lagi mengingatkan kita bahwa keamanan harus selalu menjadi faktor utama dalam pengembangan kontrak pintar. Bahkan operasi aritmatika yang tampak sederhana pun bisa menjadi celah yang dimanfaatkan oleh penyerang.
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.
16 Suka
Hadiah
16
4
Bagikan
Komentar
0/400
zkProofInThePudding
· 07-31 01:15
Gelap dan merugi, terlalu jelek ya?
Lihat AsliBalas0
DaisyUnicorn
· 07-31 01:15
Lihat drama besar di mana bunga kerentanan mekar~ Sekali lagi, sebuah honeypot yang tidak dihitung dengan baik meluap-luap ya
Lihat AsliBalas0
CryptoPhoenix
· 07-31 01:14
Satu proyek lagi jatuh... untuk bangkit kembali membutuhkan waktu untuk memperbaiki kepercayaan[翻白眼] tetapi pasar selalu bisa dibangun kembali!
Poolz mengalami serangan overflow aritmetika dengan kerugian sebesar 665.000 USD. Aset multichain terpengaruh.
Poolz Mengalami Serangan Overflow Aritmetika, Mengalami Kerugian Sekitar 66,5 Ribu Dolar
Baru-baru ini, terjadi serangan terhadap Poolz di jaringan Ethereum, Binance Smart Chain, dan Polygon. Menurut pemantauan data on-chain, serangan terjadi pada 15 Maret 2023 pukul 03:16 ( waktu UTC ). Serangan ini melibatkan berbagai token, termasuk MEE, ESNC, DON, ASW, KMON, POOLZ, dengan total kerugian sekitar 665.000 dolar.
Penyerang memanfaatkan kerentanan overflow aritmatika dalam kontrak pintar Poolz. Secara khusus, masalah terletak pada fungsi getArraySum dalam fungsi CreateMassPools. Fungsi ini gagal menangani dengan benar situasi overflow yang diakibatkan oleh penjumlahan angka besar saat menghitung likuiditas awal yang diberikan oleh pengguna saat membuat kolam secara massal.
Proses serangan adalah sebagai berikut:
Penyerang pertama-tama menukarkan sejumlah kecil token MNZ di suatu bursa terdesentralisasi.
Kemudian panggil fungsi CreateMassPools, dengan parameter yang telah disusun dengan hati-hati. Array _StartAmount berisi dua nilai: satu angka besar yang mendekati batas atas uint256, dan satu jumlah token yang normal.
Karena operasi penjumlahan dalam fungsi getArraySum menyebabkan overflow, nilai yang dikembalikan akhirnya adalah 1. Namun, kontrak masih menggunakan nilai _StartAmount yang asli saat mencatat atribut kolam.
Ini mengakibatkan penyerang sebenarnya hanya mentransfer 1 token, tetapi mencatat jumlah likuiditas yang sangat besar dalam kontrak.
Akhirnya, penyerang memanggil fungsi withdraw untuk menarik token dan menyelesaikan serangan.
Untuk mencegah masalah seperti ini terjadi lagi, disarankan kepada pengembang untuk mengambil langkah-langkah berikut:
Gunakan versi compiler Solidity yang lebih baru, yang secara otomatis melakukan pemeriksaan overflow.
Jika harus menggunakan versi lama Solidity, Anda dapat mengimpor pustaka keamanan pihak ketiga untuk menangani operasi integer, seperti pustaka SafeMath dari OpenZeppelin.
Dalam menangani input pengguna, terutama dalam situasi yang melibatkan perhitungan angka besar, harus dilakukan pemeriksaan batas yang ketat dan penanganan pengecualian.
Lakukan audit kode secara berkala, dengan perhatian khusus pada bagian yang mungkin melibatkan overflow integer.
Pertimbangkan untuk memperkenalkan mekanisme seperti tanda tangan ganda atau penguncian waktu untuk memberikan waktu tanggapan dalam situasi darurat.
Kejadian ini sekali lagi mengingatkan kita bahwa keamanan harus selalu menjadi faktor utama dalam pengembangan kontrak pintar. Bahkan operasi aritmatika yang tampak sederhana pun bisa menjadi celah yang dimanfaatkan oleh penyerang.