Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsinya adalah mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan personel keamanan biasanya fokus pada keamanan kode aplikasi program, keamanan dari kompilernya sendiri juga sangat penting. Kompiler sebagai program komputer juga dapat memiliki kerentanan keamanan, yang dalam beberapa kasus dapat membawa risiko keamanan yang serius.
Sebagai contoh, saat mengompilasi dan mengeksekusi kode JavaScript di browser, mungkin terjadi akibat kerentanan pada mesin JavaScript yang dapat mengakibatkan eksekusi kode jarak jauh dan konsekuensi serius lainnya. Compiler Solidity juga tidak terkecuali, ada kerentanan keamanan di beberapa versi.
Fungsi compiler Solidity adalah untuk mengubah kode kontrak pintar menjadi kode instruksi Ethereum Virtual Machine (EVM). Perlu membedakan antara kerentanan compiler Solidity dan kerentanan EVM itu sendiri. Kerentanan EVM mengacu pada masalah keamanan yang muncul saat mesin virtual mengeksekusi instruksi, yang dapat mempengaruhi seluruh jaringan Ethereum. Sementara itu, kerentanan compiler Solidity adalah masalah yang terjadi selama proses kompilasi, yang tidak akan secara langsung mempengaruhi jaringan Ethereum, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang.
Salah satu bahaya dari kerentanan compiler Solidity adalah dapat menyebabkan perbedaan antara kode EVM yang dihasilkan dan harapan pengembang kontrak pintar. Karena kontrak pintar biasanya melibatkan aset cryptocurrency pengguna, setiap bug yang disebabkan oleh compiler dapat mengakibatkan konsekuensi yang serius. Sangat sulit untuk menemukan masalah semacam ini hanya dengan mengaudit kode sumber kontrak, perlu menganalisis bersama versi compiler tertentu dan pola kode.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity, yang menunjukkan bentuk, penyebab, dan bahaya spesifiknya.
Kerentanan HighOrderByteCleanStorage SOL-2016-9 ada di versi awal compiler Solidity (>=0.1.6 <0.4.4). Kerentanan ini dapat menyebabkan variabel storage mengembalikan nilai yang tidak terduga tanpa modifikasi. Ketidakkonsistenan ini dapat menyebabkan konsekuensi serius dalam skenario seperti verifikasi izin, pencatatan aset, dan sebagainya.
Kerentanan InlineAssemblyMemorySideEffects pada SOL-2022-4 ada pada compiler versi >=0.8.13 <0.8.15. Kerentanan ini berasal dari penanganan yang salah terhadap kode assembly inline selama proses optimasi kompilasi, yang dapat menyebabkan beberapa operasi memori dihapus secara salah.
Vulnerability SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup mempengaruhi versi compiler >= 0.5.8 < 0.8.16. Kerentanan ini dapat menyebabkan ketidakcocokan data saat melakukan operasi abi.encode pada array tipe calldata.
Berdasarkan analisis terhadap kerentanan compiler Solidity, berikut adalah saran bagi pengembang dan staf keamanan:
Pengembang:
Gunakan versi terbaru dari kompiler Solidity
Memperbaiki kasus uji unit, meningkatkan cakupan kode
Hindari menggunakan assembly inline, operasi pengkodean dan penguraian ABI yang kompleks, dll.
Gunakan fitur baru dan fungsi eksperimental dengan hati-hati
Petugas Keamanan:
Pertimbangkan risiko yang mungkin diperkenalkan oleh compiler selama audit keamanan
Mendorong peningkatan versi compiler dalam proses SDL
Memperkenalkan pemeriksaan otomatis versi compiler dalam CI/CD
Menilai dampak nyata dari kerentanan compiler berdasarkan proyek tertentu
Beberapa sumber daya praktis:
Peringatan keamanan yang dirilis resmi oleh Solidity
Daftar bug di repositori GitHub Solidity
Daftar bug compiler untuk berbagai versi
Peringatan kerentanan compiler di Etherscan
Singkatnya, meskipun kerentanan pada compiler Solidity tidak umum, dapat menyebabkan konsekuensi serius. Pengembang dan profesional keamanan harus tetap waspada dan mengambil langkah-langkah yang sesuai untuk mengurangi risiko.
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.
8 Suka
Hadiah
8
5
Bagikan
Komentar
0/400
MetaverseHobo
· 3jam yang lalu
Sekali lagi, ada banyak celah. Kenapa panik?
Lihat AsliBalas0
OfflineValidator
· 3jam yang lalu
Bermain hancur lebih dari 2k usdt, serangan dimensi rendah pada pemahami beli rendah jual tinggi
Mengandalkan compiler lagi ada celah...
Lihat AsliBalas0
FallingLeaf
· 3jam yang lalu
Kerentanan ini membuatku ketakutan, aku tidak berani bermain apapun.
Lihat AsliBalas0
PoetryOnChain
· 3jam yang lalu
lagi-lagi ikuti celah, sudah pergi
Lihat AsliBalas0
AirDropMissed
· 3jam yang lalu
Sekali lagi, ada masalah dengan kompilator, tidak bisa menahan untuk tertawa.
Analisis Kerentanan Compiler Solidity: Risiko, Contoh, dan Strategi Penanganan
Analisis Kerentanan Compiler Solidity dan Strategi Penanganannya
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsinya adalah mengubah kode sumber bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan personel keamanan biasanya fokus pada keamanan kode aplikasi program, keamanan dari kompilernya sendiri juga sangat penting. Kompiler sebagai program komputer juga dapat memiliki kerentanan keamanan, yang dalam beberapa kasus dapat membawa risiko keamanan yang serius.
Sebagai contoh, saat mengompilasi dan mengeksekusi kode JavaScript di browser, mungkin terjadi akibat kerentanan pada mesin JavaScript yang dapat mengakibatkan eksekusi kode jarak jauh dan konsekuensi serius lainnya. Compiler Solidity juga tidak terkecuali, ada kerentanan keamanan di beberapa versi.
Fungsi compiler Solidity adalah untuk mengubah kode kontrak pintar menjadi kode instruksi Ethereum Virtual Machine (EVM). Perlu membedakan antara kerentanan compiler Solidity dan kerentanan EVM itu sendiri. Kerentanan EVM mengacu pada masalah keamanan yang muncul saat mesin virtual mengeksekusi instruksi, yang dapat mempengaruhi seluruh jaringan Ethereum. Sementara itu, kerentanan compiler Solidity adalah masalah yang terjadi selama proses kompilasi, yang tidak akan secara langsung mempengaruhi jaringan Ethereum, tetapi dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang.
Salah satu bahaya dari kerentanan compiler Solidity adalah dapat menyebabkan perbedaan antara kode EVM yang dihasilkan dan harapan pengembang kontrak pintar. Karena kontrak pintar biasanya melibatkan aset cryptocurrency pengguna, setiap bug yang disebabkan oleh compiler dapat mengakibatkan konsekuensi yang serius. Sangat sulit untuk menemukan masalah semacam ini hanya dengan mengaudit kode sumber kontrak, perlu menganalisis bersama versi compiler tertentu dan pola kode.
Berikut adalah beberapa contoh nyata dari kerentanan compiler Solidity, yang menunjukkan bentuk, penyebab, dan bahaya spesifiknya.
Kerentanan HighOrderByteCleanStorage SOL-2016-9 ada di versi awal compiler Solidity (>=0.1.6 <0.4.4). Kerentanan ini dapat menyebabkan variabel storage mengembalikan nilai yang tidak terduga tanpa modifikasi. Ketidakkonsistenan ini dapat menyebabkan konsekuensi serius dalam skenario seperti verifikasi izin, pencatatan aset, dan sebagainya.
Kerentanan InlineAssemblyMemorySideEffects pada SOL-2022-4 ada pada compiler versi >=0.8.13 <0.8.15. Kerentanan ini berasal dari penanganan yang salah terhadap kode assembly inline selama proses optimasi kompilasi, yang dapat menyebabkan beberapa operasi memori dihapus secara salah.
Vulnerability SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup mempengaruhi versi compiler >= 0.5.8 < 0.8.16. Kerentanan ini dapat menyebabkan ketidakcocokan data saat melakukan operasi abi.encode pada array tipe calldata.
Berdasarkan analisis terhadap kerentanan compiler Solidity, berikut adalah saran bagi pengembang dan staf keamanan:
Pengembang:
Petugas Keamanan:
Beberapa sumber daya praktis:
Singkatnya, meskipun kerentanan pada compiler Solidity tidak umum, dapat menyebabkan konsekuensi serius. Pengembang dan profesional keamanan harus tetap waspada dan mengambil langkah-langkah yang sesuai untuk mengurangi risiko.
Mengandalkan compiler lagi ada celah...