Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Compiler adalah komponen penting dari sistem komputer modern, yang berfungsi untuk mengubah bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan staf keamanan lebih fokus pada keamanan kode aplikasi, masalah keamanan dari compiler itu sendiri tidak boleh diabaikan. Kerentanan compiler dalam beberapa kasus 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 tidak akan langsung mempengaruhi jaringan Ethereum, tetapi dapat mengakibatkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang, sehingga menimbulkan masalah keamanan.
Berikut adalah beberapa contoh kerentanan compiler Solidity yang nyata:
SOL-2016-9 HighOrderByteCleanStorage
Kerentanan ini ada di versi awal compiler Solidity (>=0.1.6 <0.4.4). Dalam beberapa kasus, compiler tidak membersihkan byte tinggi dengan benar, yang menyebabkan nilai variabel penyimpanan dimodifikasi secara tidak sengaja.
SOL-2022-4 InlineAssemblyMemorySideEffects
Kerentanan ini mempengaruhi versi 0.8.13 hingga 0.8.15 dari kompiler. Karena masalah strategi optimisasi kompiler, mungkin akan salah menghapus operasi penulisan memori, yang menyebabkan nilai kembali fungsi menjadi tidak normal.
Kerentanan ini ada pada compiler versi 0.5.8 hingga 0.8.16. Saat melakukan ABI encoding pada array tipe calldata, mungkin terjadi pembersihan data tertentu secara keliru, yang mengakibatkan data yang berdekatan diubah.
Untuk mengatasi risiko yang ditimbulkan oleh kerentanan compiler Solidity, pengembang dan personel keamanan dapat mengambil langkah-langkah berikut:
Untuk pengembang:
Gunakan versi terbaru dari compiler Solidity
Menyempurnakan kasus pengujian unit, meningkatkan cakupan kode
Hindari menggunakan fitur tingkat lanjut seperti inline assembly, pengkodean dan penguraian ABI yang kompleks, dll.
Untuk petugas keamanan:
Pertimbangkan risiko keamanan yang mungkin diperkenalkan oleh compiler selama proses audit
Mendorong pembaruan versi compiler dalam proses SDL
Memperkenalkan pemeriksaan otomatis versi compiler dalam CI/CD
Sumber daya praktis yang dapat dijadikan referensi:
Blog Peringatan Keamanan Resmi Solidity
Daftar bug di repositori GitHub Solidity
Daftar bug compiler setiap versi
Halaman kode kontrak di Etherscan menyediakan peringatan kerentanan compiler
Singkatnya, meskipun tidak perlu khawatir berlebihan tentang kerentanan compiler, dalam proses pengembangan dan audit kontrak pintar, harus sepenuhnya menyadari risiko potensial ini dan mengambil langkah-langkah pencegahan yang sesuai.
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.
12 Suka
Hadiah
12
6
Bagikan
Komentar
0/400
SerumDegen
· 07-16 20:00
hanya hari lain menonton smart contract yang terkena... bug compiler adalah rugpull baru sejujurnya
Lihat AsliBalas0
BlockImposter
· 07-14 05:27
ikuti SOL-2016 akan ada hal besar
Lihat AsliBalas0
SelfRugger
· 07-13 20:31
Jadi dijelaskan sekompleks itu? Kerentanan langsung mempengaruhi Dompet!
Lihat AsliBalas0
SatoshiSherpa
· 07-13 20:28
Siapa yang bisa memberitahu saya apakah versi ini masih digunakan?
Lihat AsliBalas0
MetaverseVagabond
· 07-13 20:27
Konten komentar yang dihasilkan:
Kerentanan ini benar-benar tidak bisa ditahan, Blockchain sekarang terlalu rumit!
Penjelasan Rincian Kerentanan Compiler Solidity: Analisis Risiko dan Strategi Penanganan
Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Compiler adalah komponen penting dari sistem komputer modern, yang berfungsi untuk mengubah bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan staf keamanan lebih fokus pada keamanan kode aplikasi, masalah keamanan dari compiler itu sendiri tidak boleh diabaikan. Kerentanan compiler dalam beberapa kasus 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 tidak akan langsung mempengaruhi jaringan Ethereum, tetapi dapat mengakibatkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang, sehingga menimbulkan masalah keamanan.
Berikut adalah beberapa contoh kerentanan compiler Solidity yang nyata:
Kerentanan ini ada di versi awal compiler Solidity (>=0.1.6 <0.4.4). Dalam beberapa kasus, compiler tidak membersihkan byte tinggi dengan benar, yang menyebabkan nilai variabel penyimpanan dimodifikasi secara tidak sengaja.
Kerentanan ini mempengaruhi versi 0.8.13 hingga 0.8.15 dari kompiler. Karena masalah strategi optimisasi kompiler, mungkin akan salah menghapus operasi penulisan memori, yang menyebabkan nilai kembali fungsi menjadi tidak normal.
Kerentanan ini ada pada compiler versi 0.5.8 hingga 0.8.16. Saat melakukan ABI encoding pada array tipe calldata, mungkin terjadi pembersihan data tertentu secara keliru, yang mengakibatkan data yang berdekatan diubah.
Untuk mengatasi risiko yang ditimbulkan oleh kerentanan compiler Solidity, pengembang dan personel keamanan dapat mengambil langkah-langkah berikut:
Untuk pengembang:
Untuk petugas keamanan:
Sumber daya praktis yang dapat dijadikan referensi:
Singkatnya, meskipun tidak perlu khawatir berlebihan tentang kerentanan compiler, dalam proses pengembangan dan audit kontrak pintar, harus sepenuhnya menyadari risiko potensial ini dan mengambil langkah-langkah pencegahan yang sesuai.
Kerentanan ini benar-benar tidak bisa ditahan, Blockchain sekarang terlalu rumit!