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. Namun, kompiler itu sendiri juga mungkin memiliki kerentanan keamanan, yang dalam beberapa kasus dapat membawa risiko keamanan yang serius.
Sebagai contoh di bidang blockchain, fungsi compiler Solidity adalah mengubah kode kontrak pintar menjadi kode instruksi mesin virtual Ethereum (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan compiler Solidity terutama ditunjukkan saat mengubah Solidity menjadi kode EVM, yang dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan pengembang. Ketidaksesuaian ini dapat berdampak serius pada kontrak pintar yang melibatkan aset cryptocurrency.
Mari kita memahami lebih dalam tentang kerentanan kompiler Solidity melalui beberapa kasus nyata:
SOL-2016-9 HighOrderByteCleanStorage
Kerentanan ini ada di versi awal compiler Solidity antara 0.1.6 hingga 0.4.4 (. Dalam beberapa kasus, variabel storage mungkin secara tidak sengaja dimodifikasi, mengakibatkan nilai kembali fungsi tidak sesuai harapan. Masalah ini sulit ditemukan melalui pemeriksaan kode yang sederhana, tetapi jika melibatkan verifikasi izin atau akuntansi aset, konsekuensinya bisa sangat serius.
![Analisis Kerentanan Kompiler Solidity dan Tindakan Penanganan])https://img-cdn.gateio.im/webp-social/moments-7d1e882c0b106528437910218bf21f82.webp(
SOL-2022-4 InlineAssemblyMemorySideEffects
Kerentanan ini mempengaruhi compiler versi 0.8.13 hingga 0.8.15. Karena penanganan yang salah terhadap blok assembly selama proses optimasi kompilasi, beberapa operasi penulisan memori mungkin dihapus secara salah, yang dapat menghasilkan nilai kembali fungsi yang tidak sesuai dengan yang diharapkan.
Kerentanan ini ada pada versi compiler dari 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin akan secara keliru menghapus beberapa data, menyebabkan data yang berdekatan diubah, dan akhirnya mengakibatkan ketidaksesuaian data setelah proses encoding dan decoding.
Berdasarkan analisis terhadap kerentanan pada compiler Solidity, kami mengajukan saran berikut untuk pengembang dan pihak keamanan:
Kepada Pengembang:
Gunakan versi terbaru dari compiler Solidity
Memperbaiki kasus uji unit, meningkatkan cakupan kode
Hindari menggunakan penyusunan inline, operasi pengkodean dan penguraian ABI yang kompleks, dan lain-lain.
Gunakan fitur bahasa baru dan fungsi eksperimental dengan hati-hati
Untuk personel keamanan:
Pertimbangkan risiko keamanan yang mungkin diperkenalkan oleh kompiler saat diaudit
Mendorong peningkatan versi compiler dalam proses pengembangan
Memperkenalkan pemeriksaan otomatis versi compiler dalam proses CI/CD
Menilai dampak keamanan nyata dari kerentanan compiler berdasarkan proyek spesifik
![Analisis dan Tindakan Terhadap Kerentanan Kompiler Solidity])https://img-cdn.gateio.im/webp-social/moments-c97428f89ed62d5ad8551cdb2ba30867.webp(
Beberapa sumber daya yang berguna:
Peringatan keamanan yang dirilis oleh tim Solidity
Daftar bug dari repositori resmi Solidity
Daftar bug compiler versi berbeda
Peringatan keamanan di halaman kode kontrak Etherscan
Secara keseluruhan, meskipun kerentanan pada compiler Solidity tidak umum, dampak potensialnya tidak boleh diabaikan. Pengembang dan personel keamanan harus tetap waspada dan mengambil langkah-langkah yang tepat untuk mengurangi risiko.
![Analisis Kerentanan Compiler Solidity dan Tindakan Penanggulangannya])https://img-cdn.gateio.im/webp-social/moments-84f5083d8748f2aab71fd92671d999a7.webp(
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.
18 Suka
Hadiah
18
5
Posting ulang
Bagikan
Komentar
0/400
SchrodingersFOMO
· 18jam yang lalu
Hari lain yang terjebak oleh compiler.
Lihat AsliBalas0
PumpDetector
· 08-10 06:17
cerita yang sama... sudah melihat masalah compiler sejak '13, hari-hari mtgox jauh lebih liar sejujurnya
Lihat AsliBalas0
AirdropHuntress
· 08-10 06:13
Detail audit kode tidak berbahaya, dompet kapitalis adalah masalah besar
Lihat AsliBalas0
TokenEconomist
· 08-10 06:06
sebenarnya, seluruh masalah EVM vs compiler solidity ini paralel dengan bug Y2K yang terkenal... hal yang menarik sih
Lihat AsliBalas0
MidnightTrader
· 08-10 05:59
Rasanya compiler sudah gagal, risiko proyek sangat besar.
Kerentanan Compiler Solidity: Risiko Potensial dan Strategi Penanggulangannya
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. Namun, kompiler itu sendiri juga mungkin memiliki kerentanan keamanan, yang dalam beberapa kasus dapat membawa risiko keamanan yang serius.
Sebagai contoh di bidang blockchain, fungsi compiler Solidity adalah mengubah kode kontrak pintar menjadi kode instruksi mesin virtual Ethereum (EVM). Berbeda dengan kerentanan EVM itu sendiri, kerentanan compiler Solidity terutama ditunjukkan saat mengubah Solidity menjadi kode EVM, yang dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan yang diharapkan pengembang. Ketidaksesuaian ini dapat berdampak serius pada kontrak pintar yang melibatkan aset cryptocurrency.
Mari kita memahami lebih dalam tentang kerentanan kompiler Solidity melalui beberapa kasus nyata:
Kerentanan ini ada di versi awal compiler Solidity antara 0.1.6 hingga 0.4.4 (. Dalam beberapa kasus, variabel storage mungkin secara tidak sengaja dimodifikasi, mengakibatkan nilai kembali fungsi tidak sesuai harapan. Masalah ini sulit ditemukan melalui pemeriksaan kode yang sederhana, tetapi jika melibatkan verifikasi izin atau akuntansi aset, konsekuensinya bisa sangat serius.
![Analisis Kerentanan Kompiler Solidity dan Tindakan Penanganan])https://img-cdn.gateio.im/webp-social/moments-7d1e882c0b106528437910218bf21f82.webp(
Kerentanan ini mempengaruhi compiler versi 0.8.13 hingga 0.8.15. Karena penanganan yang salah terhadap blok assembly selama proses optimasi kompilasi, beberapa operasi penulisan memori mungkin dihapus secara salah, yang dapat menghasilkan nilai kembali fungsi yang tidak sesuai dengan yang diharapkan.
Kerentanan ini ada pada versi compiler dari 0.5.8 hingga 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin akan secara keliru menghapus beberapa data, menyebabkan data yang berdekatan diubah, dan akhirnya mengakibatkan ketidaksesuaian data setelah proses encoding dan decoding.
Berdasarkan analisis terhadap kerentanan pada compiler Solidity, kami mengajukan saran berikut untuk pengembang dan pihak keamanan:
Kepada Pengembang:
Untuk personel keamanan:
![Analisis dan Tindakan Terhadap Kerentanan Kompiler Solidity])https://img-cdn.gateio.im/webp-social/moments-c97428f89ed62d5ad8551cdb2ba30867.webp(
Beberapa sumber daya yang berguna:
Secara keseluruhan, meskipun kerentanan pada compiler Solidity tidak umum, dampak potensialnya tidak boleh diabaikan. Pengembang dan personel keamanan harus tetap waspada dan mengambil langkah-langkah yang tepat untuk mengurangi risiko.
![Analisis Kerentanan Compiler Solidity dan Tindakan Penanggulangannya])https://img-cdn.gateio.im/webp-social/moments-84f5083d8748f2aab71fd92671d999a7.webp(