Poolz mengalami serangan overflow aritmatika, mengalami kerugian sekitar 66,5 ribu dolar AS
Baru-baru ini, proyek Poolz di beberapa jaringan blockchain diserang, menyebabkan banyak token dicuri dengan total nilai sekitar 66,5 ribu dolar AS. Serangan ini terjadi pada 15 Maret 2023, mempengaruhi kontrak Poolz di beberapa jaringan seperti Ethereum, BNB Chain, dan Polygon.
Penyerang memanfaatkan celah overflow aritmatika dalam kontrak pintar Poolz. Secara spesifik, masalah terletak pada fungsi getArraySum dalam fungsi CreateMassPools. Fungsi ini, saat menghitung likuiditas awal kolam, menyebabkan penyerang hanya perlu mentransfer sedikit token untuk menciptakan ilusi likuiditas yang besar karena overflow integer.
Proses serangan adalah sebagai berikut:
Penyerang pertama-tama menukarkan sejumlah kecil token MNZ di DEX tertentu.
Selanjutnya memanggil fungsi CreateMassPools yang memiliki celah. Fungsi ini memungkinkan pengguna untuk membuat kumpulan likuiditas secara massal dan memberikan likuiditas awal.
Saat menghitung jumlah likuiditas awal, fungsi getArraySum mengalami overflow bilangan bulat. Jumlah array yang dimasukkan oleh penyerang melebihi nilai maksimum yang dapat diwakili oleh uint256, menyebabkan nilai pengembalian fungsi menjadi 1.
Namun, kontrak masih menggunakan nilai array _StartAmount yang asli saat mencatat atribut kolam. Ini menyebabkan penyerang sebenarnya hanya mentransfer 1 token, tetapi dicatat memiliki likuiditas yang besar.
Terakhir, penyerang memanggil fungsi withdraw untuk menarik dana, menyelesaikan serangan.
Kejadian ini mengungkapkan bahaya dari overflow aritmetika dalam kontrak pintar. Untuk mencegah masalah serupa, pengembang harus mempertimbangkan untuk menggunakan versi terbaru dari compiler Solidity, yang secara otomatis melakukan pemeriksaan overflow. Untuk proyek yang menggunakan versi Solidity yang lebih lama, dapat menggunakan pustaka SafeMath dari OpenZeppelin untuk menangani operasi integer, guna menghindari risiko overflow.
Serangan kali ini sekali lagi menekankan pentingnya perhatian khusus terhadap keamanan operasi aritmatika saat mengembangkan dan mengaudit kontrak pintar. Pada saat yang sama, pihak proyek juga harus secara teratur melakukan audit keamanan untuk segera menemukan dan memperbaiki potensi kerentanan, demi melindungi keamanan 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.
16 Suka
Hadiah
16
6
Bagikan
Komentar
0/400
OnChainDetective
· 7jam yang lalu
melihat pola serangan ini sebelumnya... kesalahan rookie overflow integer. kapan para pengembang akan belajar untuk menggunakan safeMath smh
Lihat AsliBalas0
AirdropGrandpa
· 7jam yang lalu
Ini adalah stack overflow lagi, benar-benar buruk.
Lihat AsliBalas0
CryptoSurvivor
· 7jam yang lalu
Kekurangan kecil seperti ini dapat ditemukan, benar-benar seperti lalat yang berkerumun.
Lihat AsliBalas0
FrogInTheWell
· 7jam yang lalu
Sudah overflow lagi... Apakah audit keamanan mengerti?
Poolz mengalami serangan overflow aritmatika dengan kerugian sebesar 665.000 dolar AS, proyek multi-rantai terpengaruh.
Poolz mengalami serangan overflow aritmatika, mengalami kerugian sekitar 66,5 ribu dolar AS
Baru-baru ini, proyek Poolz di beberapa jaringan blockchain diserang, menyebabkan banyak token dicuri dengan total nilai sekitar 66,5 ribu dolar AS. Serangan ini terjadi pada 15 Maret 2023, mempengaruhi kontrak Poolz di beberapa jaringan seperti Ethereum, BNB Chain, dan Polygon.
Penyerang memanfaatkan celah overflow aritmatika dalam kontrak pintar Poolz. Secara spesifik, masalah terletak pada fungsi getArraySum dalam fungsi CreateMassPools. Fungsi ini, saat menghitung likuiditas awal kolam, menyebabkan penyerang hanya perlu mentransfer sedikit token untuk menciptakan ilusi likuiditas yang besar karena overflow integer.
Proses serangan adalah sebagai berikut:
Penyerang pertama-tama menukarkan sejumlah kecil token MNZ di DEX tertentu.
Selanjutnya memanggil fungsi CreateMassPools yang memiliki celah. Fungsi ini memungkinkan pengguna untuk membuat kumpulan likuiditas secara massal dan memberikan likuiditas awal.
Saat menghitung jumlah likuiditas awal, fungsi getArraySum mengalami overflow bilangan bulat. Jumlah array yang dimasukkan oleh penyerang melebihi nilai maksimum yang dapat diwakili oleh uint256, menyebabkan nilai pengembalian fungsi menjadi 1.
Namun, kontrak masih menggunakan nilai array _StartAmount yang asli saat mencatat atribut kolam. Ini menyebabkan penyerang sebenarnya hanya mentransfer 1 token, tetapi dicatat memiliki likuiditas yang besar.
Terakhir, penyerang memanggil fungsi withdraw untuk menarik dana, menyelesaikan serangan.
Kejadian ini mengungkapkan bahaya dari overflow aritmetika dalam kontrak pintar. Untuk mencegah masalah serupa, pengembang harus mempertimbangkan untuk menggunakan versi terbaru dari compiler Solidity, yang secara otomatis melakukan pemeriksaan overflow. Untuk proyek yang menggunakan versi Solidity yang lebih lama, dapat menggunakan pustaka SafeMath dari OpenZeppelin untuk menangani operasi integer, guna menghindari risiko overflow.
Serangan kali ini sekali lagi menekankan pentingnya perhatian khusus terhadap keamanan operasi aritmatika saat mengembangkan dan mengaudit kontrak pintar. Pada saat yang sama, pihak proyek juga harus secara teratur melakukan audit keamanan untuk segera menemukan dan memperbaiki potensi kerentanan, demi melindungi keamanan aset pengguna.