Analisis Kerentanan Compiler Solidity dan Strategi Penanganan
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsinya adalah untuk mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Dibandingkan dengan keamanan kode aplikasi, keamanan kompilernya sendiri sering kali diabaikan. Namun, sebagai program komputer, kompilator juga dapat memiliki kerentanan keamanan, yang dalam kondisi tertentu dapat membawa risiko keamanan yang serius.
Fungsi compiler Solidity adalah untuk mengubah kode kontrak pintar menjadi kode instruksi Ethereum Virtual Machine (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan compiler Solidity terutama terletak pada masalah saat mengonversi Solidity menjadi kode EVM. Ini dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan oleh pengembang, yang dapat mengakibatkan anomali dalam eksekusi kontrak pintar, membahayakan keamanan aset pengguna.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
SOL-2016-9 HighOrderByteCleanStorage
Kerentanan ini ada di versi awal dari kompiler Solidity (>=0.1.6 <0.4.4). Dalam kondisi tertentu, variabel storage dapat diubah secara tidak sengaja, yang tidak sesuai dengan perilaku yang diharapkan. Ketidaksesuaian ini dapat menyebabkan konsekuensi serius, terutama ketika variabel digunakan untuk verifikasi izin atau pembukuan aset.
SOL-2022-4 Efek Samping Memori InlineAssembly
Vuln ini ada pada versi 0.8.13 hingga 0.8.15 dari kompiler. Karena kesalahan dalam proses optimasi kompilasi, ini dapat menyebabkan operasi penulisan memori dihapus secara keliru, yang mengakibatkan perilaku program yang tidak sesuai dengan harapan.
Kerentanan ini memengaruhi versi compiler dari 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin ada pembersihan data tertentu yang salah, yang mengakibatkan data yang berdekatan dimodifikasi, menyebabkan ketidakcocokan data setelah pengkodean dan pengkodean ulang.
Hindari penggunaan inline assembly, operasi pengkodean dan pengkodean abi yang kompleks, dan sebagainya.
Untuk petugas keamanan:
Pertimbangkan risiko keamanan yang mungkin diperkenalkan oleh kompilator saat diaudit
Mendorong upgrade versi compiler dalam proses SDL
Menilai dampak keamanan aktual dari kerentanan compiler berdasarkan situasi spesifik
Sumber Daya Praktis:
Blog Peringatan Keamanan Resmi Solidity
Daftar bug di repositori GitHub Solidity
Peringatan keamanan di halaman kode kontrak Etherscan
Singkatnya, meskipun tidak perlu panik berlebihan, pengembang dan petugas keamanan harus sepenuhnya menyadari risiko potensial dari kerentanan compiler Solidity dan mengambil langkah-langkah yang tepat untuk mengurangi kemungkinan ancaman keamanan yang ditimbulkannya.
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.
13 Suka
Hadiah
13
6
Bagikan
Komentar
0/400
ZkProofPudding
· 11jam yang lalu
Satu lagi kompiler yang dingin
Lihat AsliBalas0
TheMemefather
· 11jam yang lalu
Compiler juga memiliki celah? Sungguh menyebalkan.
Lihat AsliBalas0
HodlOrRegret
· 11jam yang lalu
Sekali lagi, ada bug setelah pembaruan, yang selalu rugi besar adalah investor ritel.
Lihat AsliBalas0
wrekt_but_learning
· 11jam yang lalu
Kerentanan kode ini benar-benar menjengkelkan, membuat kepala saya merasa gatal.
Lihat AsliBalas0
GweiTooHigh
· 11jam yang lalu
Compilernya bermasalah lagi, sangat mengganggu.
Lihat AsliBalas0
BakedCatFanboy
· 11jam yang lalu
Ada lagi celah EVM, ya ampun, tidak bisa mengatasinya.
Kerentanan compiler Solidity mengancam keamanan smart contract, pengembang perlu waspada.
Analisis Kerentanan Compiler Solidity dan Strategi Penanganan
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsinya adalah untuk mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Dibandingkan dengan keamanan kode aplikasi, keamanan kompilernya sendiri sering kali diabaikan. Namun, sebagai program komputer, kompilator juga dapat memiliki kerentanan keamanan, yang dalam kondisi tertentu dapat membawa risiko keamanan yang serius.
Fungsi compiler Solidity adalah untuk mengubah kode kontrak pintar menjadi kode instruksi Ethereum Virtual Machine (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan compiler Solidity terutama terletak pada masalah saat mengonversi Solidity menjadi kode EVM. Ini dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan oleh pengembang, yang dapat mengakibatkan anomali dalam eksekusi kontrak pintar, membahayakan keamanan aset pengguna.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
Kerentanan ini ada di versi awal dari kompiler Solidity (>=0.1.6 <0.4.4). Dalam kondisi tertentu, variabel storage dapat diubah secara tidak sengaja, yang tidak sesuai dengan perilaku yang diharapkan. Ketidaksesuaian ini dapat menyebabkan konsekuensi serius, terutama ketika variabel digunakan untuk verifikasi izin atau pembukuan aset.
Vuln ini ada pada versi 0.8.13 hingga 0.8.15 dari kompiler. Karena kesalahan dalam proses optimasi kompilasi, ini dapat menyebabkan operasi penulisan memori dihapus secara keliru, yang mengakibatkan perilaku program yang tidak sesuai dengan harapan.
Kerentanan ini memengaruhi versi compiler dari 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin ada pembersihan data tertentu yang salah, yang mengakibatkan data yang berdekatan dimodifikasi, menyebabkan ketidakcocokan data setelah pengkodean dan pengkodean ulang.
Terkait kerentanan kompilator Solidity, tim keamanan blockchain Cobo mengajukan saran berikut:
Untuk Pengembang:
Untuk petugas keamanan:
Sumber Daya Praktis:
Singkatnya, meskipun tidak perlu panik berlebihan, pengembang dan petugas keamanan harus sepenuhnya menyadari risiko potensial dari kerentanan compiler Solidity dan mengambil langkah-langkah yang tepat untuk mengurangi kemungkinan ancaman keamanan yang ditimbulkannya.