Analisis Kejadian Serangan Re-entrance OrionProtocol
Pada 2 Februari 2023, OrionProtocol mengalami serangan reentrancy di jaringan Ethereum dan Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS. Para penyerang memanfaatkan celah kontrak untuk mencuri 2.844.766 USDT di jaringan Ethereum dan 191.606 BUSD di Binance Smart Chain.
Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom, dan melakukan operasi transfer dan otorisasi yang relevan untuk mempersiapkan serangan berikutnya. Selanjutnya, penyerang meminjam melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk menukar token.
Pengaturan jalur pertukaran diatur ke [USDC, Token Penyerang, USDT]. Kuncinya adalah, kontrak Token yang dibuat oleh penyerang mengandung fungsi callback. Selama proses pertukaran, penyerang memanfaatkan metode Token.Transfer untuk memanggil fungsi ExchangeWithAtomic.depositAsset, melakukan serangan reentrancy, yang menyebabkan jumlah setoran terus bertambah. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang didapat, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara yang lainnya telah dipindahkan melalui layanan pencampur.
Analisis Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool dari kontrak ExchangeWithAtomic. Fungsi ini melakukan operasi _doSwapTokens dengan terlebih dahulu melakukan transfer, kemudian memperbarui variabel curBalance. Penyerang menambahkan logika callback dalam fungsi transfer dari Token kustom, yang menyebabkan pembaruan curBalance menjadi salah. Ini memungkinkan penyerang untuk menarik dana yang berlebihan melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Pencegahan
Desain kontrak harus mengikuti pola "Cek-Efek-Interaksi" (Checks-Effects-Interactions), pertama memperbarui variabel status, kemudian melakukan panggilan eksternal.
Menerapkan kunci reentrant dan mekanisme pencegahan reentrancy lainnya.
Untuk fungsi yang melibatkan pertukaran token, perlu mempertimbangkan secara menyeluruh berbagai jenis Token dan kemungkinan risiko keamanan yang ditimbulkan oleh jalur pertukaran.
Memperkuat audit kode, dengan fokus khusus pada fungsi kunci yang melibatkan operasi dana.
Pertimbangkan untuk menerapkan batas jumlah transaksi atau langkah-langkah keamanan tambahan seperti kunci waktu.
Secara berkala melakukan evaluasi keamanan dan pengujian penetrasi untuk segera menemukan dan memperbaiki potensi kerentanan.
Kejadian ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus terus memperhatikan keamanan kontrak, mengambil langkah-langkah perlindungan ganda, dan meminimalkan risiko keamanan.
Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
OrionProtocol mengalami serangan reentrancy dengan kerugian sebesar 2,9 juta USDT dan BUSD
Analisis Kejadian Serangan Re-entrance OrionProtocol
Pada 2 Februari 2023, OrionProtocol mengalami serangan reentrancy di jaringan Ethereum dan Binance Smart Chain, dengan total kerugian sekitar 2,9 juta dolar AS. Para penyerang memanfaatkan celah kontrak untuk mencuri 2.844.766 USDT di jaringan Ethereum dan 191.606 BUSD di Binance Smart Chain.
Proses Serangan
Penyerang pertama-tama menerapkan kontrak Token kustom, dan melakukan operasi transfer dan otorisasi yang relevan untuk mempersiapkan serangan berikutnya. Selanjutnya, penyerang meminjam melalui metode swap UNI-V2, dan memanggil metode swapThroughOrionPool dari kontrak ExchangeWithAtomic untuk menukar token.
Pengaturan jalur pertukaran diatur ke [USDC, Token Penyerang, USDT]. Kuncinya adalah, kontrak Token yang dibuat oleh penyerang mengandung fungsi callback. Selama proses pertukaran, penyerang memanfaatkan metode Token.Transfer untuk memanggil fungsi ExchangeWithAtomic.depositAsset, melakukan serangan reentrancy, yang menyebabkan jumlah setoran terus bertambah. Akhirnya, penyerang menyelesaikan keuntungan melalui operasi penarikan.
Arah Aliran Dana
Modal awal penyerang berasal dari akun dompet panas di suatu platform perdagangan. Dari 1.651 ETH yang didapat, 657,5 ETH masih tersisa di alamat dompet penyerang, sementara yang lainnya telah dipindahkan melalui layanan pencampur.
Analisis Kerentanan
Masalah inti terletak pada fungsi doSwapThroughOrionPool dari kontrak ExchangeWithAtomic. Fungsi ini melakukan operasi _doSwapTokens dengan terlebih dahulu melakukan transfer, kemudian memperbarui variabel curBalance. Penyerang menambahkan logika callback dalam fungsi transfer dari Token kustom, yang menyebabkan pembaruan curBalance menjadi salah. Ini memungkinkan penyerang untuk menarik dana yang berlebihan melalui fungsi withdraw setelah melunasi pinjaman kilat.
Saran Pencegahan
Desain kontrak harus mengikuti pola "Cek-Efek-Interaksi" (Checks-Effects-Interactions), pertama memperbarui variabel status, kemudian melakukan panggilan eksternal.
Menerapkan kunci reentrant dan mekanisme pencegahan reentrancy lainnya.
Untuk fungsi yang melibatkan pertukaran token, perlu mempertimbangkan secara menyeluruh berbagai jenis Token dan kemungkinan risiko keamanan yang ditimbulkan oleh jalur pertukaran.
Memperkuat audit kode, dengan fokus khusus pada fungsi kunci yang melibatkan operasi dana.
Pertimbangkan untuk menerapkan batas jumlah transaksi atau langkah-langkah keamanan tambahan seperti kunci waktu.
Secara berkala melakukan evaluasi keamanan dan pengujian penetrasi untuk segera menemukan dan memperbaiki potensi kerentanan.
Kejadian ini sekali lagi menyoroti pentingnya keamanan kontrak pintar. Pihak proyek harus terus memperhatikan keamanan kontrak, mengambil langkah-langkah perlindungan ganda, dan meminimalkan risiko keamanan.