Analisis Kerentanan Compiler Solidity dan Tindakan Pencegahannya
Compiler 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 kode aplikasi, keamanan compiler itu sendiri sering kali diabaikan. Namun, sebagai program komputer, compiler juga dapat memiliki celah keamanan, yang 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 menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan oleh pengembang, yang pada gilirannya dapat menimbulkan masalah keamanan kontrak pintar.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
SOL-2016-9 Penyimpanan Byte Tinggi yang Bersih
Kerentanan ini ada pada versi awal compiler Solidity (>=0.1.6 <0.4.4). Dalam beberapa kasus, compiler tidak membersihkan byte tinggi dengan benar, yang menyebabkan nilai variabel diubah secara tidak sengaja.
SOL-2022-4 Efek Samping Memori InlineAssembly
Kerentanan ini mempengaruhi versi 0.8.13 hingga 0.8.15 dari compiler. Karena penanganan kesalahan yang salah pada blok assembly tunggal selama proses optimasi kompilasi, ini dapat menyebabkan operasi memori dioptimalkan secara keliru.
Kerentanan ini mempengaruhi compiler versi 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array bertipe calldata, beberapa data secara keliru dibersihkan, mengakibatkan data yang berdekatan dimodifikasi.
Untuk kerentanan compiler Solidity, berikut adalah beberapa saran keamanan:
Untuk Pengembang:
Gunakan versi terbaru dari compiler Solidity
Memperbaiki kasus pengujian unit
Hindari menggunakan penyusunan inline, operasi pengkodean dan penguraian ABI yang rumit, dll.
Untuk petugas keamanan:
Pertimbangkan risiko keamanan yang mungkin diperkenalkan oleh compiler saat diaudit
Mendorong peningkatan versi compiler dalam proses pengembangan
Menilai dampak keamanan aktual dari kerentanan compiler berdasarkan situasi spesifik
Beberapa sumber daya praktis:
Blog Peringatan Keamanan Resmi Solidity
Daftar bug di repositori GitHub Solidity
Peringatan kerentanan compiler di halaman kode kontrak Etherscan
Secara keseluruhan, meskipun kerentanan compiler tidak perlu menyebabkan kepanikan berlebihan, pengembang dan personel keamanan tetap harus waspada, mengambil langkah yang tepat untuk mengurangi risiko terkait.
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
5
Bagikan
Komentar
0/400
hodl_therapist
· 07-15 05:58
Para juara, perhatikan kesehatan tubuh!
Lihat AsliBalas0
CommunitySlacker
· 07-15 05:49
Bug lagi diperbarui, menyebalkan sekali.
Lihat AsliBalas0
GasGuru
· 07-15 05:45
Membuat saya tidak berani untuk masuk ke kontrak.
Lihat AsliBalas0
SmartContractRebel
· 07-15 05:41
Compiler terlalu manis ya
Lihat AsliBalas0
PebbleHander
· 07-15 05:36
Bagaimana cara mengatasi celah baru di kontrak... Jangan panik
Analisis dan langkah pencegahan terhadap kerentanan compiler Solidity
Analisis Kerentanan Compiler Solidity dan Tindakan Pencegahannya
Compiler 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 kode aplikasi, keamanan compiler itu sendiri sering kali diabaikan. Namun, sebagai program komputer, compiler juga dapat memiliki celah keamanan, yang 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 menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan oleh pengembang, yang pada gilirannya dapat menimbulkan masalah keamanan kontrak pintar.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
Kerentanan ini ada pada versi awal compiler Solidity (>=0.1.6 <0.4.4). Dalam beberapa kasus, compiler tidak membersihkan byte tinggi dengan benar, yang menyebabkan nilai variabel diubah secara tidak sengaja.
Kerentanan ini mempengaruhi versi 0.8.13 hingga 0.8.15 dari compiler. Karena penanganan kesalahan yang salah pada blok assembly tunggal selama proses optimasi kompilasi, ini dapat menyebabkan operasi memori dioptimalkan secara keliru.
Kerentanan ini mempengaruhi compiler versi 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array bertipe calldata, beberapa data secara keliru dibersihkan, mengakibatkan data yang berdekatan dimodifikasi.
Untuk kerentanan compiler Solidity, berikut adalah beberapa saran keamanan:
Untuk Pengembang:
Untuk petugas keamanan:
Beberapa sumber daya praktis:
Secara keseluruhan, meskipun kerentanan compiler tidak perlu menyebabkan kepanikan berlebihan, pengembang dan personel keamanan tetap harus waspada, mengambil langkah yang tepat untuk mengurangi risiko terkait.