Versi populer: "Terjemahan" sederhana untuk menafsirkan analisis peretas @CetusProtocol oleh bos teknologi: Serangan ini mengekspos masalah overflow bilangan bulat klasik, yang dimanifestasikan dalam pemotongan data selama konversi jenis. Detail teknis dibongkar: 1) Lokasi kerentanan: Masalah terjadi pada mekanisme konversi tipe fungsi get_amount_by_liquidity, dan konversi cast dari U256 ke U64 menyebabkan kehilangan data tingkat tinggi. 2) Proses serangan: 1. Penyerang meneruskan sejumlah besar parameter likuiditas melalui fungsi add_liquidity; 2. Jumlah token B yang diperlukan untuk perhitungan fungsi get_delta_b panggilan sistem; 3. Dalam proses perhitungan, dua data tipe U128 dikalikan, dan hasil teoritis harus tipe U256; Kelemahan utama: Hasil u256 ditujukan ke u64 saat fungsi kembali, menghasilkan pemotongan data 128-bit tingkat tinggi. 3) Efek pemanfaatan: Kuota likuiditas yang awalnya membutuhkan sejumlah besar token untuk dicetak sekarang dapat diselesaikan hanya dengan jumlah token yang sangat sedikit. Penyerang memperoleh bagian besar dari likuiditas dengan biaya yang sangat rendah, dan kemudian menyadari arbitrase kumpulan dengan menghancurkan sebagian likuiditas. Analogi sederhana: Sama seperti menggunakan kalkulator yang hanya dapat menampilkan 8 digit untuk menghitung 1 miliar × 1 miliar, hasil perhitungan 20 digit hanya dapat menampilkan 8 digit terakhir, dan 12 digit pertama langsung menghilang. Penyerang mengeksploitasi kerentanan ini. Untuk lebih jelasnya: kerentanan ini tidak ada hubungannya dengan arsitektur keamanan yang mendasarinya @SuiNetwork, dan "kemuliaan" keamanan bahasa Move masih kredibel untuk saat ini. Mengapa? Bahasa Move memang memiliki keunggulan yang signifikan dalam hal manajemen sumber daya dan keamanan jenis, dan secara efektif dapat mencegah masalah keamanan tingkat rendah seperti pengeluaran ganda dan kebocoran sumber daya. Namun, kali ini protokol Cetus adalah kesalahan matematis pada tingkat logika aplikasi, bukan cacat desain dalam bahasa Move itu sendiri. Secara khusus, sistem tipe Move, meskipun ketat, masih mengandalkan penilaian yang tepat dari pengembang untuk casting eksplisit. Ketika program secara aktif melakukan konversi jenis dari U256 ke U64, kompiler tidak dapat mengetahui apakah ini disengaja atau kesalahan logis. Selain itu, insiden keamanan ini tidak ada hubungannya dengan fungsi inti Sui seperti mekanisme konsensus, pemrosesan transaksi, dan manajemen status. Sui Network hanya dengan setia menjalankan instruksi transaksi yang dikirimkan oleh protokol Cetus, dan kerentanan tersebut berasal dari kelemahan logis dari protokol lapisan aplikasi itu sendiri. Terus terang, tidak ada jumlah bahasa pemrograman tingkat lanjut yang dapat sepenuhnya menghilangkan kesalahan logis di lapisan aplikasi. Move dapat mencegah sebagian besar risiko keamanan yang mendasarinya, tetapi tidak dapat menggantikan pengembang dengan pemeriksaan batas logika bisnis dan perlindungan luapan operasi matematika.
53.43K