Analisis Kerentanan Compiler Solidity: Risiko Potensial yang Tidak Boleh Diabaikan oleh Pengembang

robot
Pembuatan abstrak sedang berlangsung

Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya

Kompilator adalah bagian penting dari sistem komputer modern, yang berfungsi untuk mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Dibandingkan dengan kode aplikasi, keamanan kompilator itu sendiri sering kali diabaikan. Namun, kerentanan kompilator dalam beberapa kasus dapat membawa risiko keamanan yang serius.

Fungsi utama dari compiler Solidity adalah mengubah kode kontrak pintar menjadi instruksi Ethereum Virtual Machine (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan compiler Solidity lebih mempengaruhi pengembang kontrak pintar dan tidak secara langsung membahayakan keamanan jaringan Ethereum.

Kerentanan compiler dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang. Karena kontrak pintar biasanya melibatkan aset cryptocurrency, setiap bug yang disebabkan oleh compiler dapat mengakibatkan kerugian aset pengguna. Hanya dengan audit kode sumber kontrak sulit untuk menemukan masalah semacam ini, diperlukan analisis yang menggabungkan versi compiler tertentu dan pola kode.

Analisis dan Tindakan Terhadap Kerentanan Compiler Solidity

Contoh Kerentanan Compiler Solidity

SOL-2016-9 HighOrderByteCleanStorage

Kerentanan ini ada pada versi awal compiler Solidity (>=0.1.6 <0.4.4). Dalam beberapa kasus, variabel storage mungkin secara tidak sengaja dimodifikasi, yang mengakibatkan nilai pengembalian fungsi tidak sesuai dengan yang diharapkan. Ketidaksesuaian ini dapat menyebabkan konsekuensi serius ketika melibatkan verifikasi izin atau akuntansi aset.

Penyebab terjadinya kerentanan adalah karena kompiler tidak membersihkan data tinggi dengan benar saat memproses tipe data di bawah 32 byte, yang mengakibatkan saat overflow integer, data tinggi ditulis salah ke variabel yang berdekatan.

SOL-2022-4 InlineAssemblyMemorySideEffects

Kerentanan ini mempengaruhi versi compiler >=0.8.13 <0.8.15. Masalahnya berasal dari penanganan yang salah terhadap operasi memori selama proses optimasi compiler. Dalam beberapa kasus, compiler secara keliru menghapus instruksi penulisan memori yang tampaknya redundan, yang mengakibatkan nilai kembali fungsi yang tidak normal.

SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup

Kerentanan ini ada di compiler versi >= 0.5.8 < 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, compiler secara keliru membersihkan beberapa data, menyebabkan data bersebelahan diubah, yang mengakibatkan ketidaksesuaian data setelah pengkodean dan pengkodean ulang.

Perlu dicatat bahwa saat melakukan panggilan eksternal dan mengeluarkan peristiwa, akan secara implisit dilakukan abi.encode, sehingga dampak dari kerentanan ini mungkin lebih luas dari yang diperkirakan.

Analisis Kerentanan Compiler Solidity dan Langkah Penanganan

Saran Keamanan

Terkait dengan kerentanan compiler Solidity, tim keamanan blockchain Cobo mengusulkan saran berikut:

Untuk pengembang:

  • Gunakan versi terbaru dari compiler Solidity
  • Memperbaiki kasus uji unit, meningkatkan cakupan kode
  • Hindari penggunaan assembly inline, operasi pengkodean dan penguraian ABI yang kompleks, dan gunakan fitur baru serta fitur eksperimental dengan hati-hati.

Untuk petugas keamanan:

  • Perhatikan risiko keamanan yang mungkin diperkenalkan oleh compiler saat audit
  • Mendorong peningkatan versi compiler dalam proses pengembangan, mempertimbangkan untuk memperkenalkan pemeriksaan versi otomatis dalam CI/CD
  • Menilai dampak keamanan nyata dari kerentanan compiler berdasarkan proyek tertentu

Sumber Daya Praktis:

  • Blog Peringatan Keamanan Resmi Solidity
  • Daftar bug di repositori GitHub Solidity
  • Daftar bug compiler untuk berbagai versi
  • Peringatan kerentanan compiler di halaman kode kontrak Etherscan

Analisis Kerentanan Compiler Solidity dan Langkah Penanggulangan

Singkatnya, pengembang dan petugas keamanan harus memperhatikan risiko yang mungkin ditimbulkan oleh kerentanan compiler Solidity, serta mengambil langkah-langkah yang sesuai untuk mengurangi risiko keamanan. Selain itu, mereka juga harus mengevaluasi dampak secara objektif untuk menghindari kepanikan berlebihan.

SOL-4.7%
ETH-4.96%
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
  • 4
  • Bagikan
Komentar
0/400
AirdropChaservip
· 13jam yang lalu
Sekali lagi alasan untuk play people for suckers muncul.
Lihat AsliBalas0
BearMarketBuildervip
· 13jam yang lalu
Sigh, seharian mengembangkan, hanya takut hal ini.
Lihat AsliBalas0
TeaTimeTradervip
· 13jam yang lalu
Apakah literatur menyalahkan compiler masih berlaku?
Lihat AsliBalas0
0xOverleveragedvip
· 13jam yang lalu
Compiler rumput tidak dapat diandalkan, apa yang bisa dimainkan dengan kontrak?
Lihat AsliBalas0
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)