Analisis dan Langkah-langkah Pencegahan Kerentanan Kompiler Solidity
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, dengan fungsi utama mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan petugas keamanan biasanya lebih memperhatikan keamanan kode aplikasi, keamanan kompilernya sendiri juga tidak boleh diabaikan. Faktanya, sebagai sebuah program komputer, kompiler juga dapat memiliki kerentanan keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Fungsi kompilator Solidity adalah untuk mengubah kode kontrak pintar menjadi kode instruksi Ethereum Virtual Machine (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan kompilator Solidity terutama merujuk pada masalah yang muncul selama proses konversi kode. Jenis kerentanan ini tidak akan langsung mempengaruhi jaringan Ethereum, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang, yang dapat mengakibatkan konsekuensi serius.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
SOL-2016-9 Penyimpanan Byte Tinggi yang Bersih
Kerentanan ini ada pada versi awal pengompilasi Solidity (>=0.1.6 <0.4.4). Ini dapat menyebabkan variabel storage mengembalikan nilai yang tidak diharapkan tanpa modifikasi. Ketidakcocokan ini dapat menyebabkan masalah serius dalam operasi penting seperti verifikasi izin atau akuntansi aset.
SOL-2022-4 Efek Samping Memori InlineAssembly
Kerentanan ini mempengaruhi versi compiler >=0.8.13 <0.8.15. Ini berasal dari kesalahan compiler yang secara tidak benar menghapus instruksi operasi memori yang tampaknya berlebihan tetapi sebenarnya diperlukan selama proses optimasi, yang mengakibatkan nilai kembali fungsi tidak sesuai dengan yang diharapkan.
Kerentanan ini mempengaruhi versi compiler >= 0.5.8 < 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, compiler secara keliru menghapus beberapa data, yang mengakibatkan data berdekatan dimodifikasi, dan pada akhirnya menyebabkan ketidakcocokan data setelah pengkodean dan pengkodean ulang.
Untuk mengatasi risiko yang ditimbulkan oleh kerentanan compiler Solidity, tim keamanan blockchain Cobo mengajukan saran berikut:
Untuk Pengembang:
Gunakan versi terbaru dari compiler Solidity
Memperbaiki kasus pengujian unit, meningkatkan cakupan kode
Hindari penggunaan assembly inline, operasi decoding/encoding abi yang kompleks, dan gunakan fitur baru serta fitur eksperimental dengan hati-hati.
Kepada petugas keamanan:
Perhatikan risiko yang mungkin diperkenalkan oleh compiler saat audit keamanan
Mendorong peningkatan versi compiler dalam proses pengembangan SDL, mempertimbangkan untuk memperkenalkan pemeriksaan otomatis dalam CI/CD.
Menilai dampak keamanan nyata dari kerentanan compiler berdasarkan situasi proyek yang spesifik
Beberapa sumber daya yang berguna:
Peringatan keamanan resmi dari Solidity
Daftar bug di repositori GitHub Solidity
Peringatan keamanan di halaman kode kontrak Etherscan
Dengan memperhatikan keamanan compiler dan menggunakan sumber daya terkait secara bijak, pengembang dan personel keamanan dapat lebih baik mencegah risiko potensial yang ditimbulkan oleh kerentanan compiler Solidity, serta meningkatkan keamanan keseluruhan kontrak pintar.
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.
18 Suka
Hadiah
18
6
Bagikan
Komentar
0/400
MEVSupportGroup
· 07-24 16:22
Masalah compiler adalah bencana besar...
Lihat AsliBalas0
MetaverseLandlord
· 07-24 02:50
Peringatan risiko tinggi untuk profesi programmer saat ini!
Analisis kerentanan compiler Solidity dan langkah-langkah pencegahannya
Analisis dan Langkah-langkah Pencegahan Kerentanan Kompiler Solidity
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, dengan fungsi utama mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan petugas keamanan biasanya lebih memperhatikan keamanan kode aplikasi, keamanan kompilernya sendiri juga tidak boleh diabaikan. Faktanya, sebagai sebuah program komputer, kompiler juga dapat memiliki kerentanan keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Fungsi kompilator Solidity adalah untuk mengubah kode kontrak pintar menjadi kode instruksi Ethereum Virtual Machine (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan kompilator Solidity terutama merujuk pada masalah yang muncul selama proses konversi kode. Jenis kerentanan ini tidak akan langsung mempengaruhi jaringan Ethereum, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang, yang dapat mengakibatkan konsekuensi serius.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
Kerentanan ini ada pada versi awal pengompilasi Solidity (>=0.1.6 <0.4.4). Ini dapat menyebabkan variabel storage mengembalikan nilai yang tidak diharapkan tanpa modifikasi. Ketidakcocokan ini dapat menyebabkan masalah serius dalam operasi penting seperti verifikasi izin atau akuntansi aset.
Kerentanan ini mempengaruhi versi compiler >=0.8.13 <0.8.15. Ini berasal dari kesalahan compiler yang secara tidak benar menghapus instruksi operasi memori yang tampaknya berlebihan tetapi sebenarnya diperlukan selama proses optimasi, yang mengakibatkan nilai kembali fungsi tidak sesuai dengan yang diharapkan.
Kerentanan ini mempengaruhi versi compiler >= 0.5.8 < 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, compiler secara keliru menghapus beberapa data, yang mengakibatkan data berdekatan dimodifikasi, dan pada akhirnya menyebabkan ketidakcocokan data setelah pengkodean dan pengkodean ulang.
Untuk mengatasi risiko yang ditimbulkan oleh kerentanan compiler Solidity, tim keamanan blockchain Cobo mengajukan saran berikut:
Untuk Pengembang:
Kepada petugas keamanan:
Beberapa sumber daya yang berguna:
Dengan memperhatikan keamanan compiler dan menggunakan sumber daya terkait secara bijak, pengembang dan personel keamanan dapat lebih baik mencegah risiko potensial yang ditimbulkan oleh kerentanan compiler Solidity, serta meningkatkan keamanan keseluruhan kontrak pintar.