Analisis Kerentanan Compiler Solidity dan Tindakan Penanggulangan
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsinya adalah untuk mengubah kode sumber dari bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan profesional keamanan biasanya fokus pada keamanan kode aplikasi, keamanan kompilernya sendiri juga sama pentingnya. Kerentanan kompilator dalam skenario tertentu dapat membawa risiko keamanan yang serius, misalnya, saat browser mengeksekusi kode Javascript, kerentanan pada mesin pengurai dapat menyebabkan eksekusi kode jarak jauh.
Kompiler Solidity juga tidak terkecuali, terdapat celah keamanan di berbagai versi. Fungsi dari kompiler Solidity adalah mengubah kode kontrak pintar menjadi kode instruksi mesin virtual Ethereum (EVM). Perlu dicatat bahwa celah di kompiler Solidity berbeda dengan celah di EVM itu sendiri. Celah EVM dapat mempengaruhi seluruh jaringan Ethereum, sedangkan celah di kompiler Solidity terutama berdampak pada pengembang dan pengguna kontrak pintar.
Salah satu bahaya dari kerentanan compiler Solidity adalah dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang. Karena kontrak pintar biasanya melibatkan aset cryptocurrency pengguna, setiap bug yang disebabkan oleh compiler dapat mengakibatkan konsekuensi serius. Masalah semacam ini sulit ditemukan hanya dengan audit kode sederhana, dan memerlukan analisis gabungan antara versi compiler tertentu dan pola kode.
Berikut adalah beberapa contoh kerentanan kompilator Solidity yang nyata:
SOL-2016-9 HighOrderByteCleanStorage:
Vuln ini ada pada versi awal compiler Solidity (>=0.1.6 <0.4.4). Karena compiler tidak menangani operasi penghapusan tinggi setelah overflow integer dengan benar, nilai variabel yang berdekatan dapat diubah secara tidak sengaja.
SOL-2022-4 InlineAssemblyMemorySideEffects:
Kerentanan ini ada di dalam versi compiler >=0.8.13 <0.8.15. Karena penanganan yang salah terhadap kode assembly inline selama proses optimasi compiler, beberapa operasi memori mungkin dioptimalkan secara salah.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup:
Kerentanan ini mempengaruhi versi compiler >= 0.5.8 < 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin ada kesalahan dalam membersihkan beberapa data, yang menyebabkan data yang berdekatan diubah.
Hindari penggunaan inline assembly, operasi pengkodean dan penguraian ABI yang kompleks, dll.
Gunakan fitur bahasa baru dan fungsi eksperimental dengan hati-hati
Kepada petugas keamanan:
Pertimbangkan risiko yang mungkin diperkenalkan oleh compiler saat audit keamanan
Mendorong peningkatan versi compiler dalam proses pengembangan
Memperkenalkan pemeriksaan otomatis versi compiler dalam proses CI/CD
Menilai dampak keamanan nyata dari kerentanan compiler berdasarkan situasi spesifik proyek
Beberapa sumber daya yang berguna:
Peringatan keamanan resmi dari Solidity
Daftar bug yang diperbarui di repositori resmi Solidity
Daftar bug compiler untuk setiap versi
Fitur peringatan kerentanan compiler yang disediakan oleh Etherscan
Dengan memperhatikan keamanan compiler, menyempurnakan pengujian, menggunakan fitur kompleks dengan hati-hati, dan memperbarui versi compiler secara tepat waktu, para pengembang dan profesional keamanan dapat secara efektif mengurangi risiko yang ditimbulkan oleh kerentanan compiler Solidity, serta meningkatkan keamanan keseluruhan kontrak pintar.
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.
15 Suka
Hadiah
15
6
Bagikan
Komentar
0/400
Rekt_Recovery
· 07-12 06:08
rip untuk dana semua orang... sudah pernah mengalami, kehilangan semuanya karena bug compiler pada tahun 2018 smh
Lihat AsliBalas0
RunWhenCut
· 07-12 05:51
Mau diuji atau tidak, tetap saja akan dipermainkan.
Lihat AsliBalas0
FUDwatcher
· 07-12 03:11
Bug ini sangat menakutkan, saya pergi!
Lihat AsliBalas0
ResearchChadButBroke
· 07-09 10:27
Compiler bermasalah lagi? Begadang untuk memperbaiki bug.
Analisis Kerentanan Kompiler Solidity dan Strategi Penanganannya
Analisis Kerentanan Compiler Solidity dan Tindakan Penanggulangan
Kompiler adalah salah satu komponen dasar dari sistem komputer modern, fungsinya adalah untuk mengubah kode sumber dari bahasa pemrograman tingkat tinggi menjadi kode instruksi yang dapat dieksekusi oleh komputer. Meskipun sebagian besar pengembang dan profesional keamanan biasanya fokus pada keamanan kode aplikasi, keamanan kompilernya sendiri juga sama pentingnya. Kerentanan kompilator dalam skenario tertentu dapat membawa risiko keamanan yang serius, misalnya, saat browser mengeksekusi kode Javascript, kerentanan pada mesin pengurai dapat menyebabkan eksekusi kode jarak jauh.
Kompiler Solidity juga tidak terkecuali, terdapat celah keamanan di berbagai versi. Fungsi dari kompiler Solidity adalah mengubah kode kontrak pintar menjadi kode instruksi mesin virtual Ethereum (EVM). Perlu dicatat bahwa celah di kompiler Solidity berbeda dengan celah di EVM itu sendiri. Celah EVM dapat mempengaruhi seluruh jaringan Ethereum, sedangkan celah di kompiler Solidity terutama berdampak pada pengembang dan pengguna kontrak pintar.
Salah satu bahaya dari kerentanan compiler Solidity adalah dapat menyebabkan kode EVM yang dihasilkan tidak sesuai dengan harapan pengembang. Karena kontrak pintar biasanya melibatkan aset cryptocurrency pengguna, setiap bug yang disebabkan oleh compiler dapat mengakibatkan konsekuensi serius. Masalah semacam ini sulit ditemukan hanya dengan audit kode sederhana, dan memerlukan analisis gabungan antara versi compiler tertentu dan pola kode.
Berikut adalah beberapa contoh kerentanan kompilator Solidity yang nyata:
SOL-2016-9 HighOrderByteCleanStorage: Vuln ini ada pada versi awal compiler Solidity (>=0.1.6 <0.4.4). Karena compiler tidak menangani operasi penghapusan tinggi setelah overflow integer dengan benar, nilai variabel yang berdekatan dapat diubah secara tidak sengaja.
SOL-2022-4 InlineAssemblyMemorySideEffects: Kerentanan ini ada di dalam versi compiler >=0.8.13 <0.8.15. Karena penanganan yang salah terhadap kode assembly inline selama proses optimasi compiler, beberapa operasi memori mungkin dioptimalkan secara salah.
SOL-2022-6 AbiReencodingHeadOverflowWithStaticArrayCleanup: Kerentanan ini mempengaruhi versi compiler >= 0.5.8 < 0.8.16. Saat melakukan operasi abi.encode pada array tipe calldata, mungkin ada kesalahan dalam membersihkan beberapa data, yang menyebabkan data yang berdekatan diubah.
Terkait kerentanan compiler Solidity, tim keamanan blockchain Cobo mengajukan saran berikut:
Untuk pengembang:
Kepada petugas keamanan:
Beberapa sumber daya yang berguna:
Dengan memperhatikan keamanan compiler, menyempurnakan pengujian, menggunakan fitur kompleks dengan hati-hati, dan memperbarui versi compiler secara tepat waktu, para pengembang dan profesional keamanan dapat secara efektif mengurangi risiko yang ditimbulkan oleh kerentanan compiler Solidity, serta meningkatkan keamanan keseluruhan kontrak pintar.