Kerentanan Kontrak OrionProtocol Mengakibatkan Kerugian 2,9 Juta Dolar
Pada tanggal 2 Februari 2023, kontrak OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy, mengakibatkan kerugian sekitar 2,9 juta dolar AS. Kerugian spesifik termasuk 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token khusus dan melakukan operasi transfer dan otorisasi yang relevan. Selanjutnya, penyerang meminjam dana melalui metode swap dari suatu DEX dan memanggil metode swapThroughOrionPool dari OrionProtocol untuk pertukaran token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Saat menjalankan metode swapThroughOrionPool, karena kontrak Token penyerang menyertakan fungsi callback, metode depositAsset dapat dipanggil ulang selama proses transfer. Ini menyebabkan jumlah setoran dihitung ulang, dan akhirnya penyerang memperoleh keuntungan berlebih melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang diperoleh penyerang, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Inti Kerentanan
Masalah terletak pada fungsi doSwapThroughOrionPool. Fungsi ini melakukan operasi transfer terlebih dahulu sebelum memperbarui variabel curBalance saat mengeksekusi _doSwapTokens. Penyerang memanfaatkan metode transfer fungsi Token kustom untuk memanggil metode depositAsset, yang menyebabkan curBalance diperbarui secara tidak benar. Hal ini memungkinkan penyerang untuk menarik dana berlebih melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Keamanan
Untuk kontrak pintar yang memiliki fungsi pertukaran token, pengembang perlu mempertimbangkan hal-hal berikut:
Pertimbangkan kemungkinan situasi tak terduga yang dapat disebabkan oleh berbagai Token dan jalur pertukaran.
Mengikuti pola pengkodean "Cek-Dampak-Interaksi" (Checks-Effects-Interactions), yaitu pertama melakukan pemeriksaan status, kemudian memperbarui status kontrak, dan terakhir berinteraksi dengan kontrak eksternal.
Perbarui variabel status kunci sebelum melakukan panggilan eksternal.
Terapkan mekanisme keamanan seperti pengunci reentrancy.
Melakukan audit keamanan menyeluruh terhadap kontrak.
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara signifikan dikurangi, meningkatkan keamanan dan stabilitas proyek.
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.
OrionProtocol diserang dengan serangan reentrancy, 2,9 juta dolar AS dicuri
Kerentanan Kontrak OrionProtocol Mengakibatkan Kerugian 2,9 Juta Dolar
Pada tanggal 2 Februari 2023, kontrak OrionProtocol di Ethereum dan Binance Smart Chain mengalami serangan reentrancy, mengakibatkan kerugian sekitar 2,9 juta dolar AS. Kerugian spesifik termasuk 2.844.766 USDT di rantai Ethereum dan 191.606 BUSD di rantai Binance Smart.
Analisis Proses Serangan
Penyerang pertama-tama menyebarkan kontrak Token khusus dan melakukan operasi transfer dan otorisasi yang relevan. Selanjutnya, penyerang meminjam dana melalui metode swap dari suatu DEX dan memanggil metode swapThroughOrionPool dari OrionProtocol untuk pertukaran token. Jalur pertukaran mencakup alamat kontrak Token yang dibuat oleh penyerang.
Saat menjalankan metode swapThroughOrionPool, karena kontrak Token penyerang menyertakan fungsi callback, metode depositAsset dapat dipanggil ulang selama proses transfer. Ini menyebabkan jumlah setoran dihitung ulang, dan akhirnya penyerang memperoleh keuntungan berlebih melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari dompet panas suatu platform perdagangan. Dari 1.651 ETH yang diperoleh penyerang, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara sisanya telah dipindahkan melalui layanan pencampuran koin.
Inti Kerentanan
Masalah terletak pada fungsi doSwapThroughOrionPool. Fungsi ini melakukan operasi transfer terlebih dahulu sebelum memperbarui variabel curBalance saat mengeksekusi _doSwapTokens. Penyerang memanfaatkan metode transfer fungsi Token kustom untuk memanggil metode depositAsset, yang menyebabkan curBalance diperbarui secara tidak benar. Hal ini memungkinkan penyerang untuk menarik dana berlebih melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Keamanan
Untuk kontrak pintar yang memiliki fungsi pertukaran token, pengembang perlu mempertimbangkan hal-hal berikut:
Dengan mengambil langkah-langkah ini, risiko serangan terhadap kontrak pintar dapat secara signifikan dikurangi, meningkatkan keamanan dan stabilitas proyek.