Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler sebagai 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 di tingkat bawah. Meskipun pengembang dan personel keamanan biasanya lebih memperhatikan keamanan kode aplikasi, keamanan kompilernya sendiri juga tidak boleh diabaikan. Kerentanan pada kompiler 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 terutama terjadi selama proses konversi dari Solidity ke kode EVM. Kerentanan ini tidak akan secara langsung mempengaruhi jaringan Ethereum, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan pengembang, sehingga menimbulkan masalah keamanan pada kontrak pintar.
Berikut adalah beberapa contoh kerentanan compiler Solidity yang khas:
Kerentanan HighOrderByteCleanStorage ( mempengaruhi versi: >=0.1.6 <0.4.4)
Kerentanan ini dapat menyebabkan variabel storage mengembalikan nilai yang tidak terduga tanpa modifikasi.
Kerentanan InlineAssemblyMemorySideEffects ( mempengaruhi versi: >=0.8.13 <0.8.15)
Karena masalah strategi optimasi compiler, mungkin menyebabkan modifikasi memori dalam assembly inline dioptimalkan secara salah.
Kerentanan AbiReencodingHeadOverflowWithStaticArrayCleanup ( mempengaruhi versi: >= 0.5.8 < 0.8.16)
Saat melakukan operasi abi.encode pada array tipe calldata, mungkin secara tidak sengaja mengubah data yang berdekatan, menyebabkan data yang dikodekan dan didekodekan tidak konsisten.
Untuk mengatasi risiko yang ditimbulkan oleh kerentanan compiler Solidity, pengembang dan personel keamanan dapat mengambil langkah-langkah berikut:
Saran Pengembang:
Gunakan versi terbaru dari compiler Solidity
Memperbaiki kasus uji unit, meningkatkan cakupan kode
Hindari penggunaan inline assembly, operasi decoding/encoding ABI yang kompleks, dan gunakan fitur baru dengan hati-hati
Petugas keamanan menyarankan:
Pertimbangkan risiko yang mungkin ditimbulkan oleh compiler dalam audit keamanan
Mendorong peningkatan versi compiler dalam proses pengembangan
Memperkenalkan pemeriksaan otomatis versi compiler dalam proses CI/CD
Sumber Daya Praktis:
Blog Peringatan Keamanan Resmi Solidity
Daftar bug di repositori GitHub Solidity
Daftar bug compiler untuk setiap versi
Peringatan keamanan di halaman kode kontrak Etherscan
Dengan memperhatikan keamanan compiler dan mengambil langkah pencegahan yang tepat, potensi risiko yang ditimbulkan oleh kerentanan compiler Solidity dapat secara efektif dikurangi, meningkatkan keselamatan 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.
11 Suka
Hadiah
11
4
Bagikan
Komentar
0/400
0xSunnyDay
· 20jam yang lalu
Tidak ada masalah, hanya bermain dengan kerentanan compiler.
Lihat AsliBalas0
BearMarketMonk
· 20jam yang lalu
Siapa yang masih mencari celah sendiri? Alat yang sudah ada tidak lebih baik?
Lihat AsliBalas0
NeverVoteOnDAO
· 20jam yang lalu
Sepertinya ada banyak celah, jadi hanya untuk Kupon Klip.
Lihat AsliBalas0
DefiEngineerJack
· 20jam yang lalu
*sigh* bug compiler adalah alasan mengapa kita membutuhkan verifikasi formal... ngmi tanpanya jujur
Analisis dan Strategi Penanggulangan Kerentanan Compiler Solidity
Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler sebagai 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 di tingkat bawah. Meskipun pengembang dan personel keamanan biasanya lebih memperhatikan keamanan kode aplikasi, keamanan kompilernya sendiri juga tidak boleh diabaikan. Kerentanan pada kompiler 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 terutama terjadi selama proses konversi dari Solidity ke kode EVM. Kerentanan ini tidak akan secara langsung mempengaruhi jaringan Ethereum, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan pengembang, sehingga menimbulkan masalah keamanan pada kontrak pintar.
Berikut adalah beberapa contoh kerentanan compiler Solidity yang khas:
Kerentanan HighOrderByteCleanStorage ( mempengaruhi versi: >=0.1.6 <0.4.4) Kerentanan ini dapat menyebabkan variabel storage mengembalikan nilai yang tidak terduga tanpa modifikasi.
Kerentanan InlineAssemblyMemorySideEffects ( mempengaruhi versi: >=0.8.13 <0.8.15) Karena masalah strategi optimasi compiler, mungkin menyebabkan modifikasi memori dalam assembly inline dioptimalkan secara salah.
Kerentanan AbiReencodingHeadOverflowWithStaticArrayCleanup ( mempengaruhi versi: >= 0.5.8 < 0.8.16) Saat melakukan operasi abi.encode pada array tipe calldata, mungkin secara tidak sengaja mengubah data yang berdekatan, menyebabkan data yang dikodekan dan didekodekan tidak konsisten.
Untuk mengatasi risiko yang ditimbulkan oleh kerentanan compiler Solidity, pengembang dan personel keamanan dapat mengambil langkah-langkah berikut:
Saran Pengembang:
Petugas keamanan menyarankan:
Sumber Daya Praktis:
Dengan memperhatikan keamanan compiler dan mengambil langkah pencegahan yang tepat, potensi risiko yang ditimbulkan oleh kerentanan compiler Solidity dapat secara efektif dikurangi, meningkatkan keselamatan keseluruhan kontrak pintar.