Keamanan smart contract: Analisis strategi perlindungan terhadap kerentanan overflow integer

robot
Pembuatan abstrak sedang berlangsung

Kerentanan Overflow Integer dan Perlindungannya

Overflow bilangan bulat adalah masalah pemrograman yang umum, terutama dalam pengembangan kontrak pintar blockchain yang perlu diperhatikan dengan lebih seksama. Ketika hasil perhitungan melebihi rentang yang dapat diwakili oleh tipe bilangan bulat, maka akan terjadi overflow bilangan bulat.

Overflow bilangan bulat dibagi menjadi dua kasus: overflow atas dan overflow bawah. Overflow atas berarti hasil melebihi nilai maksimum, misalnya nilai maksimum untuk tipe uint32 yaitu 4.294.967.295 ditambah 1 akan menjadi 0. Overflow bawah berarti hasil kurang dari nilai minimum, misalnya 0 untuk tipe uint32 dikurangi 1 akan menjadi 4.294.967.295.

Sebagai contoh token BEC dari BeautyChain, penyerang pernah memanfaatkan kerentanan overflow integer untuk mendapatkan banyak token. Dalam fungsi batchTransfer-nya, amount = cnt * _value dapat mengalami overflow, yang mengakibatkan pernyataan require untuk memeriksa saldo menjadi tidak efektif.

Untuk mencegah overflow integer, saat mengembangkan kontrak pintar dengan Rust, langkah-langkah berikut dapat diambil:

  1. Konfigurasikan pemeriksaan overflow integer dalam mode release di Cargo.toml.

  2. Menggunakan crate uint untuk mendukung tipe integer yang lebih besar, seperti U256, U512, dll.

  3. Gunakan fungsi konversi tipe uint untuk mendeteksi overflow, seperti as_u128().

  4. Gunakan fungsi Safe Math seperti checked_add(), checked_sub(), dan lain-lain untuk melakukan perhitungan yang aman.

  5. Lakukan unwrap atau expect pada hasil Option yang dikembalikan oleh fungsi Safe Math.

Dengan metode ini, kita dapat secara efektif menghindari risiko keamanan yang disebabkan oleh overflow integer. Dalam pengembangan kontrak pintar, kita harus selalu waspada terhadap masalah overflow integer dan mengambil langkah perlindungan yang diperlukan.

SAFE1.99%
MATH1.23%
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.
  • Hadiah
  • 5
  • Bagikan
Komentar
0/400
CompoundPersonalityvip
· 07-15 00:43
Masalah overflow sudah menjadi masalah lama.
Lihat AsliBalas0
MEVSandwichMakervip
· 07-14 16:58
Bug overflow adalah menu wajib bagi Veteran Kripto.
Lihat AsliBalas0
CommunityWorkervip
· 07-13 17:55
Bug ini harus diselesaikan, tsk tsk
Lihat AsliBalas0
GasFeeCrybabyvip
· 07-13 17:50
Rupanya gas begitu mahal masih melimpah
Lihat AsliBalas0
DegenMcsleeplessvip
· 07-13 17:34
Masalah overflow harus ditemukan lebih awal dan diobati lebih awal.
Lihat AsliBalas0
  • 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)