Proyek Poolz mengalami insiden serangan overflow aritmatika, kerugian sekitar 66,5 ribu dolar AS
Baru-baru ini, sebuah insiden keamanan yang menargetkan proyek multi-rantai Poolz menarik perhatian industri. Menurut data pemantauan blockchain, penyerang memanfaatkan celah overflow aritmatika dalam kontrak pintar, berhasil mencuri sejumlah besar token dari proyek Poolz di jaringan Ethereum, BNB Chain, dan Polygon, dengan total nilai sekitar 66,5 ribu dolar AS.
Serangan terjadi sekitar pukul 03:16 UTC pada 15 Maret 2023. Aset yang dicuri termasuk berbagai token ERC-20, seperti MEE, ESNC, DON, ASW, KMON, POOLZ, dan lain-lain. Penyerang kemudian menukar sebagian token menjadi BNB, tetapi saat ini dana tersebut belum dipindahkan.
Masalah inti dari serangan ini terletak pada fungsi CreateMassPools proyek Poolz. Fungsi ini awalnya digunakan untuk membuat kumpulan likuiditas secara massal dan menyediakan likuiditas awal, tetapi terdapat celah overflow integer dalam fungsi getArraySum. Penyerang dengan cermat menyusun parameter input sehingga hasil penjumlahan melebihi rentang uint256, menyebabkan nilai yang dikembalikan oleh fungsi menjadi 1.
Namun, fungsi CreatePool menggunakan parameter _StartAmount yang asli saat mencatat atribut kolam, bukan jumlah token yang sebenarnya ditransfer. Ini menyebabkan penyerang hanya perlu mentransfer 1 token untuk mencatat likuiditas awal yang jauh lebih besar dari jumlah yang sebenarnya. Selanjutnya, penyerang menyelesaikan operasi penarikan dengan memanggil fungsi withdraw, sehingga mencapai tujuan serangan.
Untuk mencegah masalah seperti ini terjadi lagi, disarankan kepada pengembang untuk menggunakan versi Solidity yang lebih baru untuk melakukan kompilasi, agar dapat memanfaatkan fitur pemeriksaan overflows yang ada. Untuk proyek yang menggunakan versi Solidity yang lebih lama, bisa mempertimbangkan untuk mengintegrasikan pustaka SafeMath dari OpenZeppelin untuk mengatasi masalah overflow integer.
Peristiwa ini kembali mengingatkan kita akan pentingnya keamanan dan audit kode dalam pengembangan kontrak pintar. Bahkan kesalahan aritmatika yang terlihat kecil pun dapat dimanfaatkan oleh penyerang, menyebabkan kerugian ekonomi yang besar.
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.
9 Suka
Hadiah
9
5
Posting ulang
Bagikan
Komentar
0/400
TrustMeBro
· 08-10 11:16
Hehe, hanya uang kecil. Yang berikutnya.
Lihat AsliBalas0
DeFiAlchemist
· 08-10 11:15
*mengatur grafik mistis* protokol lain turun ke aritmatika gelap... angka tidak pernah berbohong
Lihat AsliBalas0
RooftopReserver
· 08-10 11:13
Ini adalah waktu terbaik untuk bersantai di atap lagi.
Poolz mengalami serangan overflow aritmetika dengan kerugian sebesar 66,5 ribu dolar AS
Proyek Poolz mengalami insiden serangan overflow aritmatika, kerugian sekitar 66,5 ribu dolar AS
Baru-baru ini, sebuah insiden keamanan yang menargetkan proyek multi-rantai Poolz menarik perhatian industri. Menurut data pemantauan blockchain, penyerang memanfaatkan celah overflow aritmatika dalam kontrak pintar, berhasil mencuri sejumlah besar token dari proyek Poolz di jaringan Ethereum, BNB Chain, dan Polygon, dengan total nilai sekitar 66,5 ribu dolar AS.
Serangan terjadi sekitar pukul 03:16 UTC pada 15 Maret 2023. Aset yang dicuri termasuk berbagai token ERC-20, seperti MEE, ESNC, DON, ASW, KMON, POOLZ, dan lain-lain. Penyerang kemudian menukar sebagian token menjadi BNB, tetapi saat ini dana tersebut belum dipindahkan.
Masalah inti dari serangan ini terletak pada fungsi CreateMassPools proyek Poolz. Fungsi ini awalnya digunakan untuk membuat kumpulan likuiditas secara massal dan menyediakan likuiditas awal, tetapi terdapat celah overflow integer dalam fungsi getArraySum. Penyerang dengan cermat menyusun parameter input sehingga hasil penjumlahan melebihi rentang uint256, menyebabkan nilai yang dikembalikan oleh fungsi menjadi 1.
Namun, fungsi CreatePool menggunakan parameter _StartAmount yang asli saat mencatat atribut kolam, bukan jumlah token yang sebenarnya ditransfer. Ini menyebabkan penyerang hanya perlu mentransfer 1 token untuk mencatat likuiditas awal yang jauh lebih besar dari jumlah yang sebenarnya. Selanjutnya, penyerang menyelesaikan operasi penarikan dengan memanggil fungsi withdraw, sehingga mencapai tujuan serangan.
Untuk mencegah masalah seperti ini terjadi lagi, disarankan kepada pengembang untuk menggunakan versi Solidity yang lebih baru untuk melakukan kompilasi, agar dapat memanfaatkan fitur pemeriksaan overflows yang ada. Untuk proyek yang menggunakan versi Solidity yang lebih lama, bisa mempertimbangkan untuk mengintegrasikan pustaka SafeMath dari OpenZeppelin untuk mengatasi masalah overflow integer.
Peristiwa ini kembali mengingatkan kita akan pentingnya keamanan dan audit kode dalam pengembangan kontrak pintar. Bahkan kesalahan aritmatika yang terlihat kecil pun dapat dimanfaatkan oleh penyerang, menyebabkan kerugian ekonomi yang besar.