Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsi utamanya adalah mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi di tingkat bawah komputer. Seperti kode aplikasi, kompilator itu sendiri juga mungkin memiliki celah keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Peran 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 kompilasi, tidak langsung mempengaruhi jaringan Ethereum itu sendiri, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang, yang dapat menyebabkan kesalahan dalam eksekusi kontrak pintar, bahkan menyebabkan kerugian aset pengguna.
Berikut adalah beberapa kasus nyata untuk menjelaskan bentuk, alasan, dan bahaya spesifik dari kerentanan kompilator Solidity:
SOL-2016-9 Penyimpanan Byte Tinggi Bersih
Vuln ini ada di versi awal compiler Solidity (\u003e=0.1.6 \u003c0.4.4). Dalam beberapa kasus, compiler tidak membersihkan bit tinggi setelah overflow integer dengan benar, yang mengakibatkan variabel yang berdekatan secara tidak sengaja diubah. Ini bisa memicu kesalahan dalam logika kritis seperti validasi izin atau pencatatan aset.
SOL-2022-4 Efek Samping Memori InlineAssembly
Kerentanan ini terdapat pada kompiler versi 0.8.13 hingga 0.8.15. Karena implementasi strategi optimasi kompilasi yang tidak tepat, dapat secara keliru menghapus instruksi penulisan memori dalam assembler inline, menyebabkan ketidakcocokan data.
Kerentanan ini mempengaruhi versi compiler dari 0.5.8 hingga 0.8.16. Saat melakukan pengkodean ABI pada array tipe calldata, beberapa data dibersihkan secara keliru, menyebabkan data yang berdekatan dimodifikasi, yang mengakibatkan hasil pengkodean dan penguraian yang tidak konsisten.
Terkait kerentanan compiler Solidity, disarankan kepada pengembang dan profesional keamanan untuk mengambil langkah-langkah berikut:
Untuk pengembang:
Gunakan versi terbaru dari compiler Solidity
Memperbaiki kasus uji unit, meningkatkan cakupan kode
Hindari penggunaan assembly inline, operasi kompleks seperti pengkodean dan dekode ABI yang mudah menyebabkan kesalahan.
Kepada petugas keamanan:
Perhatikan risiko yang mungkin ditimbulkan oleh versi compiler saat audit
Menambahkan pemeriksaan versi compiler dalam alur pengembangan
Menilai dampak nyata kerentanan compiler berdasarkan proyek tertentu
Beberapa sumber yang berguna:
Peringatan Keamanan Resmi Solidity
Daftar bug di repositori GitHub Solidity
Peringatan kerentanan compiler di halaman kode kontrak Etherscan
Dengan memahami karakteristik kerentanan compiler Solidity dan mengambil langkah-langkah yang sesuai, risiko masalah keamanan pada kontrak pintar akibat masalah compiler dapat secara efektif diminimalkan.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
8 Suka
Hadiah
8
5
Bagikan
Komentar
0/400
GateUser-bd883c58
· 07-12 08:17
Sepertinya kompiler juga tidak dapat diandalkan.
Lihat AsliBalas0
HashRatePhilosopher
· 07-12 08:14
Apakah kompilator ini berat?
Lihat AsliBalas0
LiquidationWatcher
· 07-12 08:07
sudah pernah di sana, kehilangan terlalu banyak... periksa versi kompiler Anda atau benar-benar hancur
Analisis Risiko Kerentanan Compiler Solidity dan Strategi Penanggulangannya
Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsi utamanya adalah mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi di tingkat bawah komputer. Seperti kode aplikasi, kompilator itu sendiri juga mungkin memiliki celah keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Peran 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 kompilasi, tidak langsung mempengaruhi jaringan Ethereum itu sendiri, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang, yang dapat menyebabkan kesalahan dalam eksekusi kontrak pintar, bahkan menyebabkan kerugian aset pengguna.
Berikut adalah beberapa kasus nyata untuk menjelaskan bentuk, alasan, dan bahaya spesifik dari kerentanan kompilator Solidity:
Vuln ini ada di versi awal compiler Solidity (\u003e=0.1.6 \u003c0.4.4). Dalam beberapa kasus, compiler tidak membersihkan bit tinggi setelah overflow integer dengan benar, yang mengakibatkan variabel yang berdekatan secara tidak sengaja diubah. Ini bisa memicu kesalahan dalam logika kritis seperti validasi izin atau pencatatan aset.
Kerentanan ini terdapat pada kompiler versi 0.8.13 hingga 0.8.15. Karena implementasi strategi optimasi kompilasi yang tidak tepat, dapat secara keliru menghapus instruksi penulisan memori dalam assembler inline, menyebabkan ketidakcocokan data.
Kerentanan ini mempengaruhi versi compiler dari 0.5.8 hingga 0.8.16. Saat melakukan pengkodean ABI pada array tipe calldata, beberapa data dibersihkan secara keliru, menyebabkan data yang berdekatan dimodifikasi, yang mengakibatkan hasil pengkodean dan penguraian yang tidak konsisten.
Terkait kerentanan compiler Solidity, disarankan kepada pengembang dan profesional keamanan untuk mengambil langkah-langkah berikut:
Untuk pengembang:
Kepada petugas keamanan:
Beberapa sumber yang berguna:
Dengan memahami karakteristik kerentanan compiler Solidity dan mengambil langkah-langkah yang sesuai, risiko masalah keamanan pada kontrak pintar akibat masalah compiler dapat secara efektif diminimalkan.