Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, yang fungsinya terutama adalah mengubah bahasa pemrograman tingkat tinggi menjadi instruksi tingkat rendah yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan personel keamanan lebih fokus pada keamanan kode aplikasi, keamanan dari kompiler itu sendiri juga sama pentingnya. Sebagai sebuah program komputer, kompiler juga dapat memiliki celah keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Fungsi compiler Solidity adalah untuk mengubah kode kontrak pintar menjadi instruksi Ethereum Virtual Machine (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan compiler Solidity lebih berdampak pada pengembang kontrak pintar dan tidak secara langsung mengancam keamanan jaringan Ethereum. Namun, kerentanan compiler dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan oleh pengembang, yang pada gilirannya dapat mengakibatkan kehilangan aset pengguna dan konsekuensi serius lainnya.
Berikut adalah beberapa contoh kerentanan compiler Solidity yang nyata:
SOL-2016-9 HighOrderByteCleanStorage
Kerentanan ini ada di versi awal dari compiler Solidity (>=0.1.6 <0.4.4). Masalahnya terletak pada EVM yang menggunakan elemen stack berukuran 32 byte, sedangkan Solidity mendukung tipe data yang lebih kecil. Dalam beberapa kasus, compiler gagal membersihkan byte tinggi dengan benar, yang menyebabkan penimpaan data yang tidak terduga.
SOL-2022-4 Efek Samping Memori InlineAssembly
Kerentanan ini mempengaruhi versi >=0.8.13 <0.8.15 dari kompiler. Masalah ini berasal dari penanganan yang salah terhadap blok assembly inline selama proses optimasi kompiler, yang mengakibatkan beberapa operasi penulisan memori dihapus secara tidak benar.
Kerentanan ini ada pada versi compiler >=0.5.8 <0.8.16. Saat melakukan ABI encoding pada array tipe calldata tertentu, operasi pembersihan data yang salah menyebabkan data yang berdekatan terubah, mengakibatkan hasil pengkodean dan penguraian tidak konsisten.
Terkait kerentanan compiler Solidity, kami memberikan saran berikut:
Untuk Pengembang:
Gunakan versi terbaru dari kompiler Solidity
Memperbaiki kasus uji unit, meningkatkan cakupan kode
Hindari penggunaan fitur tingkat lanjut seperti inline assembly, ABI encoding dan decoding yang kompleks.
Untuk petugas keamanan:
Pertimbangkan risiko keamanan yang mungkin diperkenalkan oleh kompiler saat audit
Mengawasi peningkatan versi compiler dalam proses pengembangan
Memperkenalkan pemeriksaan otomatis versi compiler dalam CI/CD
Beberapa sumber daya praktis:
Peringatan Keamanan Resmi Solidity
Daftar bug di repositori Solidity
Daftar bug compiler versi yang berbeda
Peringatan kerentanan compiler di Etherscan
Singkatnya, meskipun tidak perlu terlalu khawatir tentang kerentanan compiler, namun dalam proses pengembangan dan audit kontrak pintar, tetap harus memperhatikan ancaman keamanan potensial ini. Dengan mengambil langkah pencegahan yang tepat, risiko yang ditimbulkan oleh kerentanan compiler dapat diminimalkan.
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.
9 Suka
Hadiah
9
7
Posting ulang
Bagikan
Komentar
0/400
BoredApeResistance
· 07-08 04:11
Lebih baik hati-hati dalam hal kode.
Lihat AsliBalas0
SelfCustodyBro
· 07-06 15:49
Masih menulis kode? Kembali ke rumah dan uji coba dulu.
Lihat AsliBalas0
TokenDustCollector
· 07-05 04:47
Sebelum memeriksa kontrak, saya juga harus memeriksa kompilator..
Lihat AsliBalas0
0xSoulless
· 07-05 04:46
Setiap hari saya dipermainkan, lebih baik kompiler langsung memotong saya selesai.
Lihat AsliBalas0
SmartContractPlumber
· 07-05 04:43
Tahu bahwa kalian semua terburu-buru untuk meluncurkan Mainnet, tetapi apakah kalian berani melakukannya dengan adanya celah?
Kerentanan Compiler Solidity: Hal yang Harus Diketahui dan Strategi Penanggulangan untuk Pengembang
Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, yang fungsinya terutama adalah mengubah bahasa pemrograman tingkat tinggi menjadi instruksi tingkat rendah yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan personel keamanan lebih fokus pada keamanan kode aplikasi, keamanan dari kompiler itu sendiri juga sama pentingnya. Sebagai sebuah program komputer, kompiler juga dapat memiliki celah keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Fungsi compiler Solidity adalah untuk mengubah kode kontrak pintar menjadi instruksi Ethereum Virtual Machine (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan compiler Solidity lebih berdampak pada pengembang kontrak pintar dan tidak secara langsung mengancam keamanan jaringan Ethereum. Namun, kerentanan compiler dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan oleh pengembang, yang pada gilirannya dapat mengakibatkan kehilangan aset pengguna dan konsekuensi serius lainnya.
Berikut adalah beberapa contoh kerentanan compiler Solidity yang nyata:
Kerentanan ini ada di versi awal dari compiler Solidity (>=0.1.6 <0.4.4). Masalahnya terletak pada EVM yang menggunakan elemen stack berukuran 32 byte, sedangkan Solidity mendukung tipe data yang lebih kecil. Dalam beberapa kasus, compiler gagal membersihkan byte tinggi dengan benar, yang menyebabkan penimpaan data yang tidak terduga.
Kerentanan ini mempengaruhi versi >=0.8.13 <0.8.15 dari kompiler. Masalah ini berasal dari penanganan yang salah terhadap blok assembly inline selama proses optimasi kompiler, yang mengakibatkan beberapa operasi penulisan memori dihapus secara tidak benar.
Kerentanan ini ada pada versi compiler >=0.5.8 <0.8.16. Saat melakukan ABI encoding pada array tipe calldata tertentu, operasi pembersihan data yang salah menyebabkan data yang berdekatan terubah, mengakibatkan hasil pengkodean dan penguraian tidak konsisten.
Terkait kerentanan compiler Solidity, kami memberikan saran berikut:
Untuk Pengembang:
Untuk petugas keamanan:
Beberapa sumber daya praktis:
Singkatnya, meskipun tidak perlu terlalu khawatir tentang kerentanan compiler, namun dalam proses pengembangan dan audit kontrak pintar, tetap harus memperhatikan ancaman keamanan potensial ini. Dengan mengambil langkah pencegahan yang tepat, risiko yang ditimbulkan oleh kerentanan compiler dapat diminimalkan.