9 dari 10 rantai TVL teratas mendukung kontrak pintar EVM.
Judul asli: "Cara membuat Forked EVMs untuk Risiko Keamanan"
撰文:Ethan Pociask、Eric Meng、Nadir Akhtar、Gabriela Melendez Quan、Tom Ryan
Kompiler: Katie Koo
Untuk memperkuat jaminan keamanan dan penyimpanan bagi pelanggan yang memperdagangkan ERC-20 dan aset berbasis kontrak pintar lainnya, tim Coinbase Blockchain Security menyelidiki lapisan terprogram yang menentukan perilaku aset ini: Mesin Virtual Ethereum (EVM). Saat mengevaluasi proyek yang memodifikasi EVM jaringan mereka sendiri, tim keamanan blockchain Coinbase meninjau perubahan EVM utama untuk menentukan apakah EVM yang dimodifikasi dapat memberikan jaminan keamanan dan penyimpanan yang sama seperti implementasi EVM asli.
Status Garpu EVM
Pada Mei 2023, Mesin Virtual Ethereum (EVM) telah memenangkan gelar "Big Brother" dari platform eksekusi kontrak pintar paling populer. Menurut DefiLlama, 9 dari 10 rantai teratas oleh Total Value Locked (TVL) mendukung kontrak pintar EVM. Oleh karena itu, pemahaman mendalam tentang EVM sangat penting untuk mendukung kontrak pintar di seluruh ekosistem blockchain.
EVM adalah mesin virtual untuk pelaksanaan kontrak pintar yang terdesentralisasi di jaringan Ethereum. Banyak blockchain yang kompatibel dengan EVM memanfaatkan implementasi standar dari klien implementasi Ethereum yang populer dalam berbagai bahasa seperti go-ethereum (Golang) dan besu (Java) secara langsung dalam perangkat lunak protokol mereka.
Yang mengatakan, forking dan memodifikasi EVM sebenarnya cukup umum di ekosistem blockchain, bahkan dalam protokol utama. Misalnya, Tumpukan Batuan Dasar Optimisme yang "mendukung" blockchain Base L2 Coinbase menggunakan fork klien eksekusi go-ethereum yang disebut op-geth, yang menjalankan EVM yang sama dengan klien eksekusi ethereum yang populer. Namun, ini tidak berarti bahwa EVM di Ethereum berperilaku persis sama dengan EVM di Optimisme: EVM op-geth berperilaku sedikit berbeda dalam beberapa kasus (yaitu KESULITAN mengembalikan nilai acak ditentukan oleh sequencer).
Meskipun ini terdengar menakutkan, umumnya bermanfaat untuk adopsi EVM. Sementara implementasi EVM standar sangat dioptimalkan untuk protokol Ethereum dasar, EVM bercabang sering memperluasnya untuk protokol baru mereka sendiri. Akibatnya, kontrak dapat dieksekusi secara berbeda pada beberapa rantai yang kompatibel dengan EVM daripada yang mereka lakukan pada Ethereum, dan asumsi keamanan perilaku kontrak cerdas EVM juga dapat sangat bervariasi di antara protokol yang berbeda.
Garpu kerangka kerja keamanan EVM
Untuk tujuan ini, Coinbase telah mengembangkan kerangka kerja keamanan Web3 untuk mengevaluasi dampak keamanan dari beberapa implementasi EVM bercabang. Kami menyebutnya kerangka EVM bercabang Coinbase, yang akan dijelaskan secara rinci di bawah ini.
Dengan kerangka kerja keamanan EVM bercabang ini, Coinbase dapat secara efektif:
Memahami ketidakabsahan asumsi keamanan kerangka kerja token Ethereum kami memungkinkan kami mengaktifkan blockchain baru yang kompatibel dengan EVM dengan aman untuk mendukung token ERC-20/ERC-721 di bursa terdesentralisasi kami;
Memberikan auditor kontrak pintar dengan analisis situasi kerentanan kontrak pintar dari EVM bercabang, terutama perbedaan kecil dalam lintas jaringan;
Pastikan penggunaan yang aman dan pelaksanaan kontrak pintar EVM di blockchain Coinbase's Base L2.
Standar keamanan untuk blockchain yang kompatibel dengan EVM
Untuk memahami bagaimana risiko keamanan ada di mesin virtual Ethereum, pertama-tama kita harus mengetahui jaminan apa yang diberikan implementasi EVM standar kepada kita. Kami mendefinisikan EVM Standar sebagai EVM yang secara konsisten digunakan oleh klien eksekusi validator Ethereum seperti yang dijelaskan dalam Spesifikasi Implementasi Ethereum. Sejauh ini klien yang paling banyak digunakan adalah go ethereum (yaitu geth).
Kami meringkas keamanan menjadi dua kriteria keamanan yang mewakili persyaratan minimum untuk setiap implementasi EVM bercabang agar memenuhi syarat untuk dukungan Coinbase.
Kerangka kerja EVM bercabang kami berfokus pada persyaratan audit berikut saat mengevaluasi kepatuhan terhadap kriteria keamanan secara keseluruhan (yaitu, kekekalan kontrak dan lingkungan eksekusi yang aman). Perlu dicatat bahwa komponen risiko berikut ini bukan cakupan penuh dari audit fork EVM.
Memodifikasi definisi dan pengkodean opcode EVM dapat menyebabkan perbedaan signifikan dalam cara kontrak dijalankan. Misalnya, beberapa implementasi EVM bercabang (EVM ') mengubah opcode ADD aritmatika untuk mendefinisikan logika (x1 + x2) untuk mengurangi dua nilai (x1 - x2).
Akibatnya, EVM yang menyimpang tidak sama dan tidak kompatibel dalam eksekusi dengan EVM standar. Konsekuensi dari memodifikasi opcode dapat berupa perilaku yang menguntungkan, seperti mencegah integer overflow dan underflow dalam opcode aritmatika, atau perilaku yang lebih berbahaya, seperti perilaku penghancuran diri yang menyebabkan pencetakan aset lokal tanpa batas.
EVM menggunakan kontrak yang telah dikompilasi untuk mendefinisikan fungsi kompleks (seperti fungsi enkripsi), menggunakan bahasa yang lebih nyaman dan berperforma tinggi seperti Golang, daripada menggunakan bytecode EVM yang kurang dapat diakses.
Pada dasarnya, ini adalah fungsi terprogram yang diakses melalui alamat berantai yang telah ditentukan yang diwakili dalam perangkat lunak node. Ada 9 prekompiler yang didefinisikan dalam Ethereum Yellow Paper (per Mei 2023), dan setiap perubahan pada 9 prekompilasi ini atau pengenalan prekompilasi baru perlu diaudit.
Mari kita ambil contoh konkret lainnya — kerentanan BNB Smart Chain. BNB Smart Chain menggunakan implementasi menyimpang dari go-ethereum untuk menjalankan node. Untuk tujuan ini, dua kontrak baru yang telah dikompilasi (tmHeaderValidate, iavlMerkleProofValidate) diperkenalkan untuk menggunakan perangkat lunak pihak ketiga (yaitu Cosmos SDK) untuk melakukan validasi blok klien ringan dan validasi bukti Merkle. Masalahnya adalah perangkat lunak Cosmos SDK memiliki bug implementasi dalam representasi pohon IAWL-nya yang memungkinkan bukti yang tidak valid secara kriptografis lolos verifikasi. Dengan kata lain, siapa pun dapat menghasilkan uang begitu saja. Penyerang dapat mengeksploitasi kelemahan implementasi ini yang bersarang di prakompilasi iavlMerkleProofValidate untuk menyedot ratusan juta dolar dari jembatan lintas rantai Binance.
Contoh eksploit ini dimaksudkan untuk menunjukkan perlunya keamanan precompiler dan potensi risiko memperkenalkan kontrak baru yang telah dikompilasi untuk implementasi EVM yang menyimpang.
Risiko yang berpotensi fatal dalam memperkenalkan prekompiler tambahan meliputi:
Izinkan satu pihak untuk secara sepihak mengubah status kontrak yang diterapkan;
Ini termasuk semua modifikasi penyimpanan (sisipan, pembaruan, penghapusan);
penggunaan dependensi pihak ketiga yang tidak tepercaya, tidak diverifikasi, atau tidak diaudit;
Menyediakan akses ke nilai dalam node tak tentu.
Meskipun memperlakukan kompiler dan EVM sebagai entitas yang benar-benar terpisah, perlu dicatat bahwa kompiler Soliditas membuat asumsi ketat tentang perilaku tiga kontrak pertama yang telah dikompilasi (ecrecover, sha256, dan &ripemd) yang diteruskan melalui fungsi kata kunci bahasa asli Soliditas representasi dalam bahasa. Di belakang layar, kompiler Solidity benar-benar memproses kata kunci ini menjadi bytecode, yang mengeksekusi panggilan statis antar kontrak. Diagram di bawah ini lebih jauh mengilustrasikan cara komunikasi antar kontrak ini.
Risiko keamanan yang diperkenalkan dengan memodifikasi precompiler standar meliputi:
Mengizinkan rekanan terpusat untuk secara sepihak mengubah status kontrak yang diterapkan;
Ini termasuk semua modifikasi penyimpanan (sisipan, pembaruan, penghapusan);
Asumsi posisi precompilation compiler Solidity tidak konsisten;
Menyediakan akses ke nilai dalam node tak tentu;
Penggunaan dependensi pihak ketiga yang tidak tepercaya, tidak diverifikasi, atau tidak diaudit.
Risiko utama yang ditimbulkan dengan memodifikasi komponen fundamental EVM meliputi:
tidak membatasi tumpukan juru bahasa menjadi sangat besar;
Mengubah ukuran atau mengubah model memori dapat mengakibatkan eksekusi non-deterministik;
Lewati kontrol akses, memungkinkan rekanan mana pun untuk secara sepihak mengakses semua status rantai;
Penggunaan dependensi pihak ketiga yang tidak tepercaya, tidak diverifikasi, atau tidak diaudit.
Mengapa kita harus memperhatikan keamanan EVM?
Tujuan kami adalah membangun sistem keuangan terbuka berdasarkan teknologi blockchain, dan untuk tujuan ini, kami mendorong pengembangan berbagai implementasi EVM. Namun, agar blockchain yang sesuai dengan EVM didukung penuh oleh Coinbase, itu harus memenuhi persyaratan dasar implementasi EVM standar. Makalah ini berharap dapat meningkatkan kesadaran akan risiko yang terkait dengan penyimpangan dari EVM, dan mendorong penerbit aset untuk memprioritaskan pengembangan komponen yang aman saat menyimpang dari EVM, meningkatkan kesadaran keamanan di seluruh ekosistem Web3.
Lihat Asli
Konten ini hanya untuk referensi, bukan ajakan atau tawaran. Tidak ada nasihat investasi, pajak, atau hukum yang diberikan. Lihat Penafian untuk pengungkapan risiko lebih lanjut.
Bagaimana menilai risiko keamanan "EVM bercabang"?
Judul asli: "Cara membuat Forked EVMs untuk Risiko Keamanan"
撰文:Ethan Pociask、Eric Meng、Nadir Akhtar、Gabriela Melendez Quan、Tom Ryan
Kompiler: Katie Koo
Untuk memperkuat jaminan keamanan dan penyimpanan bagi pelanggan yang memperdagangkan ERC-20 dan aset berbasis kontrak pintar lainnya, tim Coinbase Blockchain Security menyelidiki lapisan terprogram yang menentukan perilaku aset ini: Mesin Virtual Ethereum (EVM). Saat mengevaluasi proyek yang memodifikasi EVM jaringan mereka sendiri, tim keamanan blockchain Coinbase meninjau perubahan EVM utama untuk menentukan apakah EVM yang dimodifikasi dapat memberikan jaminan keamanan dan penyimpanan yang sama seperti implementasi EVM asli.
Status Garpu EVM
Pada Mei 2023, Mesin Virtual Ethereum (EVM) telah memenangkan gelar "Big Brother" dari platform eksekusi kontrak pintar paling populer. Menurut DefiLlama, 9 dari 10 rantai teratas oleh Total Value Locked (TVL) mendukung kontrak pintar EVM. Oleh karena itu, pemahaman mendalam tentang EVM sangat penting untuk mendukung kontrak pintar di seluruh ekosistem blockchain.
EVM adalah mesin virtual untuk pelaksanaan kontrak pintar yang terdesentralisasi di jaringan Ethereum. Banyak blockchain yang kompatibel dengan EVM memanfaatkan implementasi standar dari klien implementasi Ethereum yang populer dalam berbagai bahasa seperti go-ethereum (Golang) dan besu (Java) secara langsung dalam perangkat lunak protokol mereka.
Yang mengatakan, forking dan memodifikasi EVM sebenarnya cukup umum di ekosistem blockchain, bahkan dalam protokol utama. Misalnya, Tumpukan Batuan Dasar Optimisme yang "mendukung" blockchain Base L2 Coinbase menggunakan fork klien eksekusi go-ethereum yang disebut op-geth, yang menjalankan EVM yang sama dengan klien eksekusi ethereum yang populer. Namun, ini tidak berarti bahwa EVM di Ethereum berperilaku persis sama dengan EVM di Optimisme: EVM op-geth berperilaku sedikit berbeda dalam beberapa kasus (yaitu KESULITAN mengembalikan nilai acak ditentukan oleh sequencer).
Meskipun ini terdengar menakutkan, umumnya bermanfaat untuk adopsi EVM. Sementara implementasi EVM standar sangat dioptimalkan untuk protokol Ethereum dasar, EVM bercabang sering memperluasnya untuk protokol baru mereka sendiri. Akibatnya, kontrak dapat dieksekusi secara berbeda pada beberapa rantai yang kompatibel dengan EVM daripada yang mereka lakukan pada Ethereum, dan asumsi keamanan perilaku kontrak cerdas EVM juga dapat sangat bervariasi di antara protokol yang berbeda.
Garpu kerangka kerja keamanan EVM
Untuk tujuan ini, Coinbase telah mengembangkan kerangka kerja keamanan Web3 untuk mengevaluasi dampak keamanan dari beberapa implementasi EVM bercabang. Kami menyebutnya kerangka EVM bercabang Coinbase, yang akan dijelaskan secara rinci di bawah ini.
Dengan kerangka kerja keamanan EVM bercabang ini, Coinbase dapat secara efektif:
Standar keamanan untuk blockchain yang kompatibel dengan EVM
Untuk memahami bagaimana risiko keamanan ada di mesin virtual Ethereum, pertama-tama kita harus mengetahui jaminan apa yang diberikan implementasi EVM standar kepada kita. Kami mendefinisikan EVM Standar sebagai EVM yang secara konsisten digunakan oleh klien eksekusi validator Ethereum seperti yang dijelaskan dalam Spesifikasi Implementasi Ethereum. Sejauh ini klien yang paling banyak digunakan adalah go ethereum (yaitu geth).
Kami meringkas keamanan menjadi dua kriteria keamanan yang mewakili persyaratan minimum untuk setiap implementasi EVM bercabang agar memenuhi syarat untuk dukungan Coinbase.
Bagaimana kami mengaudit risiko keamanan implementasi EVM?
Kerangka kerja EVM bercabang kami berfokus pada persyaratan audit berikut saat mengevaluasi kepatuhan terhadap kriteria keamanan secara keseluruhan (yaitu, kekekalan kontrak dan lingkungan eksekusi yang aman). Perlu dicatat bahwa komponen risiko berikut ini bukan cakupan penuh dari audit fork EVM.
Memodifikasi definisi dan pengkodean opcode EVM dapat menyebabkan perbedaan signifikan dalam cara kontrak dijalankan. Misalnya, beberapa implementasi EVM bercabang (EVM ') mengubah opcode ADD aritmatika untuk mendefinisikan logika (x1 + x2) untuk mengurangi dua nilai (x1 - x2).
Akibatnya, EVM yang menyimpang tidak sama dan tidak kompatibel dalam eksekusi dengan EVM standar. Konsekuensi dari memodifikasi opcode dapat berupa perilaku yang menguntungkan, seperti mencegah integer overflow dan underflow dalam opcode aritmatika, atau perilaku yang lebih berbahaya, seperti perilaku penghancuran diri yang menyebabkan pencetakan aset lokal tanpa batas.
EVM menggunakan kontrak yang telah dikompilasi untuk mendefinisikan fungsi kompleks (seperti fungsi enkripsi), menggunakan bahasa yang lebih nyaman dan berperforma tinggi seperti Golang, daripada menggunakan bytecode EVM yang kurang dapat diakses.
Pada dasarnya, ini adalah fungsi terprogram yang diakses melalui alamat berantai yang telah ditentukan yang diwakili dalam perangkat lunak node. Ada 9 prekompiler yang didefinisikan dalam Ethereum Yellow Paper (per Mei 2023), dan setiap perubahan pada 9 prekompilasi ini atau pengenalan prekompilasi baru perlu diaudit.
Mari kita ambil contoh konkret lainnya — kerentanan BNB Smart Chain. BNB Smart Chain menggunakan implementasi menyimpang dari go-ethereum untuk menjalankan node. Untuk tujuan ini, dua kontrak baru yang telah dikompilasi (tmHeaderValidate, iavlMerkleProofValidate) diperkenalkan untuk menggunakan perangkat lunak pihak ketiga (yaitu Cosmos SDK) untuk melakukan validasi blok klien ringan dan validasi bukti Merkle. Masalahnya adalah perangkat lunak Cosmos SDK memiliki bug implementasi dalam representasi pohon IAWL-nya yang memungkinkan bukti yang tidak valid secara kriptografis lolos verifikasi. Dengan kata lain, siapa pun dapat menghasilkan uang begitu saja. Penyerang dapat mengeksploitasi kelemahan implementasi ini yang bersarang di prakompilasi iavlMerkleProofValidate untuk menyedot ratusan juta dolar dari jembatan lintas rantai Binance.
Contoh eksploit ini dimaksudkan untuk menunjukkan perlunya keamanan precompiler dan potensi risiko memperkenalkan kontrak baru yang telah dikompilasi untuk implementasi EVM yang menyimpang.
Risiko yang berpotensi fatal dalam memperkenalkan prekompiler tambahan meliputi:
Meskipun memperlakukan kompiler dan EVM sebagai entitas yang benar-benar terpisah, perlu dicatat bahwa kompiler Soliditas membuat asumsi ketat tentang perilaku tiga kontrak pertama yang telah dikompilasi (ecrecover, sha256, dan &ripemd) yang diteruskan melalui fungsi kata kunci bahasa asli Soliditas representasi dalam bahasa. Di belakang layar, kompiler Solidity benar-benar memproses kata kunci ini menjadi bytecode, yang mengeksekusi panggilan statis antar kontrak. Diagram di bawah ini lebih jauh mengilustrasikan cara komunikasi antar kontrak ini.
Risiko keamanan yang diperkenalkan dengan memodifikasi precompiler standar meliputi:
Risiko utama yang ditimbulkan dengan memodifikasi komponen fundamental EVM meliputi:
Mengapa kita harus memperhatikan keamanan EVM?
Tujuan kami adalah membangun sistem keuangan terbuka berdasarkan teknologi blockchain, dan untuk tujuan ini, kami mendorong pengembangan berbagai implementasi EVM. Namun, agar blockchain yang sesuai dengan EVM didukung penuh oleh Coinbase, itu harus memenuhi persyaratan dasar implementasi EVM standar. Makalah ini berharap dapat meningkatkan kesadaran akan risiko yang terkait dengan penyimpangan dari EVM, dan mendorong penerbit aset untuk memprioritaskan pengembangan komponen yang aman saat menyimpang dari EVM, meningkatkan kesadaran keamanan di seluruh ekosistem Web3.