Analisis dan Strategi Penanganan Kerentanan Compiler Solidity
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. Seperti halnya kode aplikasi, compiler itu sendiri juga mungkin memiliki celah keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Fungsi compiler Solidity adalah 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 harapan pengembang, sehingga memicu masalah keamanan kontrak pintar.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
SOL-2016-9 HighOrderByteCleanStorage
Kerentanan ini ada di versi awal dari compiler Solidity (>=0.1.6 <0.4.4). Dalam beberapa kasus, compiler tidak membersihkan byte tinggi dengan benar, menyebabkan nilai variabel storage secara tidak sengaja dimodifikasi.
SOL-2022-4 InlineAssemblyMemorySideEffects
Kerentanan ini ada di dalam compiler versi 0.8.13 hingga 0.8.15. Karena penanganan yang salah terhadap blok assembly selama proses optimisasi kompilasi, operasi penulisan memori mungkin secara keliru dihapus.
Vuln ini mempengaruhi compiler versi 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin dapat secara keliru menghapus data tertentu, yang mengakibatkan data yang berdekatan diubah.
Hindari penggunaan fitur bahasa yang kompleks, seperti penyusunan kode inline, pengkodean dan penguraian ABI untuk array multidimensi, dan lain-lain.
Untuk petugas keamanan:
Pertimbangkan risiko keamanan yang mungkin diperkenalkan oleh compiler saat audit
Mendorong peningkatan versi compiler dalam proses pengembangan
Menilai dampak keamanan nyata dari kerentanan compiler berdasarkan situasi spesifik
Beberapa sumber yang berguna:
Blog Peringatan Keamanan Resmi Solidity
Daftar bug di repositori GitHub Solidity
Daftar bug compiler versi berbeda
Peringatan kerentanan compiler pada halaman kode kontrak Etherscan
Dengan memahami karakteristik dan dampak dari kerentanan compiler Solidity, pengembang dan petugas keamanan dapat mengevaluasi risiko keamanan kontrak pintar secara lebih komprehensif dan mengambil langkah-langkah pencegahan yang sesuai.
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.
20 Suka
Hadiah
20
5
Bagikan
Komentar
0/400
blocksnark
· 07-10 15:09
Uang untuk memperbaiki bug sangat berharga
Lihat AsliBalas0
BlockchainDecoder
· 07-08 10:18
Menurut makalah klasik Analisis Compiler Solidity (2022), risiko kerentanan jenis ini mencapai 78,3%, disarankan untuk menggunakan versi 0.8.0+ dengan hati-hati.
Lihat AsliBalas0
DaisyUnicorn
· 07-08 10:14
Yingying, compiler juga punya bug kecil ya, cepat naikkan versi baru.
Lihat AsliBalas0
FlashLoanLarry
· 07-08 10:13
hanya hari biasa di defi... eksploitasi compiler = peluang mev tak terbatas sejujurnya
Analisis dan Strategi Pencegahan Kerentanan Compiler Solidity
Analisis dan Strategi Penanganan Kerentanan Compiler Solidity
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. Seperti halnya kode aplikasi, compiler itu sendiri juga mungkin memiliki celah keamanan, yang dalam beberapa kasus dapat menimbulkan risiko keamanan yang serius.
Fungsi compiler Solidity adalah 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 harapan pengembang, sehingga memicu masalah keamanan kontrak pintar.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity:
Kerentanan ini ada di versi awal dari compiler Solidity (>=0.1.6 <0.4.4). Dalam beberapa kasus, compiler tidak membersihkan byte tinggi dengan benar, menyebabkan nilai variabel storage secara tidak sengaja dimodifikasi.
Kerentanan ini ada di dalam compiler versi 0.8.13 hingga 0.8.15. Karena penanganan yang salah terhadap blok assembly selama proses optimisasi kompilasi, operasi penulisan memori mungkin secara keliru dihapus.
Vuln ini mempengaruhi compiler versi 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin dapat secara keliru menghapus data tertentu, yang mengakibatkan data yang berdekatan diubah.
Terkait kerentanan compiler Solidity, tim keamanan blockchain Cobo mengusulkan saran berikut:
Untuk Pengembang:
Untuk petugas keamanan:
Beberapa sumber yang berguna:
Dengan memahami karakteristik dan dampak dari kerentanan compiler Solidity, pengembang dan petugas keamanan dapat mengevaluasi risiko keamanan kontrak pintar secara lebih komprehensif dan mengambil langkah-langkah pencegahan yang sesuai.