Analisis prinsip kejadian serangan BNO

Pada 18 Juli 2023, waktu Beijing, Ocean BNO mengalami serangan flash loan, dan penyerang telah mendapat untung sekitar 500.000 dolar AS.

20230718161919783image.png

SharkTeam melakukan analisis teknis atas insiden ini untuk pertama kalinya, dan merangkum tindakan pencegahan keamanan, berharap proyek tindak lanjut dapat belajar darinya dan bersama-sama membangun garis pertahanan keamanan untuk industri blockchain.

1. Analisis Peristiwa

Alamat penyerang:

0xa6566574edc60d7b2adbacedb71d5142cf2677fb

Kontrak serangan:

0xd138b9a58d3e5f4be1cd5ec90b66310e241c13cd

Kontrak yang diserang:

0xdCA503449899d5649D32175a255A8835A03E4006

Transaksi penyerangan:

0x33fed54de490797b99b2fc7a159e43af57e9e6bdefc2c2d052dc814cfe0096b9

Proses serangan:

(1) Penyerang (0xa6566574) meminjam 286.449 BNO melalui flash loan pancakeSwap.

20230718161449018image.png

(2) Kemudian panggil fungsi stakeNft dari kontrak yang diserang (0xdCA50344) untuk menjaminkan dua nft.

20230718161457306image.png

(3) Kemudian panggil fungsi jaminan dari kontrak yang diserang (0xdCA50344) untuk menjaminkan 277856 koin BNO.

20230718161633397gambar.png

(4) Panggil fungsi emergencyWithdraw dari kontrak yang diserang (0xdCA50344) untuk mengekstrak semua BNO

20230718161641122image.png

(5) Kemudian panggil fungsi unstakeNft dari kontrak yang diserang (0xdCA50344), ambil dua nft yang dijanjikan dan terima token BNO tambahan.

20230718161732948image.png

(6) Ulangi proses di atas untuk terus mendapatkan token BNO tambahan

20230718161752651image.png

(7) Setelah melunasi flash loan, tukarkan semua token BNO dengan 50,5W BUSD dan tinggalkan pasar dengan untung.

20230718161800166image.png

Kedua, analisis kerentanan

Akar penyebab serangan ini adalah: ada masalah dengan mekanisme penghitungan hadiah dan logika interaksi dari fungsi penarikan darurat dalam kontrak yang diserang (0xdCA50344), yang mengakibatkan pengguna mendapatkan token hadiah ekstra setelah menarik prinsipal.

20230718161812689image.png

20230718161820027image.png

Kontrak menyediakan fungsi emergencyWithdraw untuk penarikan token secara darurat, dan menghapus total hipotek penyerang dan total hutang rewardDebt, tetapi tidak menghapus variabel nftAddtion penyerang, dan variabel nftAddition juga dihitung melalui variabel allstake.

20230718161834850image.png

Dalam fungsi unstakeNft, hadiah pengguna saat ini masih akan dihitung, dan jika variabel nftAddition tidak disetel ulang ke nol, fungsi pendingFit masih akan mengembalikan nilai hadiah BNO tambahan, menyebabkan penyerang mendapatkan token BNO tambahan.

20230718161842539image.png

Ketiga, Rekomendasi Keamanan

Menanggapi serangan ini, kita harus mengikuti tindakan pencegahan berikut selama proses pengembangan:

(1) Saat menghitung hadiah, verifikasi apakah pengguna telah menarik pokoknya.

(2) Sebelum proyek online, perlu mencari bantuan teknis dari tim audit profesional pihak ketiga.

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.
  • Hadiah
  • Komentar
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan
Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)