Analisis Kerentanan Compiler Solidity: Risiko, Contoh, dan Strategi Penanganan

robot
Pembuatan abstrak sedang berlangsung

Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya

Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsinya adalah mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan personel keamanan biasanya fokus pada keamanan kode aplikasi program, keamanan dari kompilernya sendiri juga sangat penting. Kompiler sebagai program komputer juga dapat memiliki kerentanan keamanan, yang dalam beberapa kasus dapat membawa risiko keamanan yang serius.

Sebagai contoh, saat mengompilasi dan mengeksekusi kode JavaScript di browser, mungkin terjadi akibat kerentanan pada mesin JavaScript yang dapat mengakibatkan eksekusi kode jarak jauh dan konsekuensi serius lainnya. Compiler Solidity juga tidak terkecuali, ada kerentanan keamanan di beberapa versi.

Analisis Kerentanan Compiler Solidity dan Langkah Penanganan

Fungsi compiler Solidity adalah untuk mengubah kode kontrak pintar menjadi kode instruksi Ethereum Virtual Machine (EVM). Perlu membedakan antara kerentanan compiler Solidity dan kerentanan EVM itu sendiri. Kerentanan EVM mengacu pada masalah keamanan yang muncul saat mesin virtual mengeksekusi instruksi, yang dapat mempengaruhi seluruh jaringan Ethereum. Sementara itu, kerentanan compiler Solidity adalah masalah yang terjadi selama proses kompilasi, yang tidak akan secara langsung mempengaruhi jaringan Ethereum, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang.

Salah satu bahaya dari kerentanan compiler Solidity adalah dapat menyebabkan perbedaan antara kode EVM yang dihasilkan dan harapan pengembang kontrak pintar. Karena kontrak pintar biasanya melibatkan aset cryptocurrency pengguna, setiap bug yang disebabkan oleh compiler dapat mengakibatkan konsekuensi yang serius. Sangat sulit untuk menemukan masalah semacam ini hanya dengan mengaudit kode sumber kontrak, perlu menganalisis bersama versi compiler tertentu dan pola kode.

Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity, yang menunjukkan bentuk, penyebab, dan bahaya spesifiknya.

Kerentanan HighOrderByteCleanStorage SOL-2016-9 ada di versi awal compiler Solidity (>=0.1.6 <0.4.4). Kerentanan ini dapat menyebabkan variabel storage mengembalikan nilai yang tidak terduga tanpa modifikasi. Ketidakkonsistenan ini dapat menyebabkan konsekuensi serius dalam skenario seperti verifikasi izin, pencatatan aset, dan sebagainya.

Kerentanan InlineAssemblyMemorySideEffects pada SOL-2022-4 ada pada compiler versi >=0.8.13 <0.8.15. Kerentanan ini berasal dari penanganan yang salah terhadap kode assembly inline selama proses optimasi kompilasi, yang dapat menyebabkan beberapa operasi memori dihapus secara salah.

Vulnerability SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup mempengaruhi versi compiler >= 0.5.8 < 0.8.16. Kerentanan ini dapat menyebabkan ketidakcocokan data saat melakukan operasi abi.encode pada array tipe calldata.

Analisis dan Tindakan Terhadap Kerentanan Compiler Solidity

Berdasarkan analisis terhadap kerentanan compiler Solidity, berikut adalah saran bagi pengembang dan staf keamanan:

Pengembang:

  • Gunakan versi terbaru dari kompiler Solidity
  • Memperbaiki kasus uji unit, meningkatkan cakupan kode
  • Hindari menggunakan assembly inline, operasi pengkodean dan penguraian ABI yang kompleks, dll.
  • Gunakan fitur baru dan fungsi eksperimental dengan hati-hati

Petugas Keamanan:

  • Pertimbangkan risiko yang mungkin diperkenalkan oleh compiler selama audit keamanan
  • Mendorong peningkatan versi compiler dalam proses SDL
  • Memperkenalkan pemeriksaan otomatis versi compiler dalam CI/CD
  • Menilai dampak nyata dari kerentanan compiler berdasarkan proyek tertentu

Beberapa sumber daya praktis:

  • Peringatan keamanan yang dirilis resmi oleh Solidity
  • Daftar bug di repositori GitHub Solidity
  • Daftar bug compiler untuk berbagai versi
  • Peringatan kerentanan compiler di Etherscan

Analisis dan Tindakan Terhadap Kerentanan Compiler Solidity

Singkatnya, meskipun kerentanan pada compiler Solidity tidak umum, dapat menyebabkan konsekuensi serius. Pengembang dan profesional keamanan harus tetap waspada dan mengambil langkah-langkah yang sesuai untuk mengurangi risiko.

ETH2.76%
SOL1.12%
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
MetaverseHobovip
· 7jam yang lalu
Sekali lagi, ada banyak celah. Kenapa panik?
Lihat AsliBalas0
OfflineValidatorvip
· 7jam yang lalu
Bermain hancur lebih dari 2k usdt, serangan dimensi rendah pada pemahami beli rendah jual tinggi

Mengandalkan compiler lagi ada celah...
Lihat AsliBalas0
FallingLeafvip
· 7jam yang lalu
Kerentanan ini membuatku ketakutan, aku tidak berani bermain apapun.
Lihat AsliBalas0
PoetryOnChainvip
· 8jam yang lalu
lagi-lagi ikuti celah, sudah pergi
Lihat AsliBalas0
AirDropMissedvip
· 8jam yang lalu
Sekali lagi, ada masalah dengan kompilator, tidak bisa menahan untuk tertawa.
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)