Artikel ini merupakan kontribusi komunitas. Penulisnya adalah Minzhi He, auditor CertiK.
Pandangan yang diungkapkan dalam artikel ini adalah milik kontributor/penulis dan tidak mencerminkan pandangan Binance Academy.
Ringkasan
Jembatan Blockchain sangat penting untuk mencapai interoperabilitas di ruang blockchain. Oleh karena itu, keamanan teknologi penghubung lintas rantai sangatlah penting. Beberapa kerentanan keamanan jembatan blockchain yang umum mencakup verifikasi on-chain dan off-chain yang tidak memadai, penanganan token asli yang tidak tepat, dan kesalahan konfigurasi. Untuk memastikan bahwa logika verifikasi masuk akal, disarankan untuk menguji jembatan lintas rantai terhadap semua kemungkinan vektor serangan.
Perkenalan
Jembatan blockchain adalah protokol yang menghubungkan dua blockchain dan memungkinkan keduanya berinteraksi. Melalui jembatan blockchain, jika pengguna ingin berpartisipasi dalam aktivitas DeFi di jaringan Ethereum, mereka hanya perlu memegang Bitcoin dan tidak perlu menjualnya untuk mencapai tujuannya.
Jembatan Blockchain adalah fondasi interoperabilitas di bidang blockchain. Mereka menggunakan berbagai verifikasi on-chain dan off-chain agar berfungsi, sehingga mungkin terdapat kerentanan keamanan yang berbeda juga.
Mengapa keamanan jembatan blockchain sangat penting?
Jembatan Blockchain biasanya menyimpan token yang ingin ditransfer pengguna dari satu rantai ke rantai lainnya. Jembatan Blockchain biasanya dikerahkan dalam bentuk kontrak pintar karena transfer lintas rantai terus terakumulasi, sejumlah besar token akan disimpan di jembatan.
Selain itu, permukaan serangan jembatan blockchain cenderung besar karena banyaknya komponen yang terlibat. Oleh karena itu, penjahat memiliki insentif yang kuat untuk menargetkan aplikasi lintas rantai untuk mendapatkan dana dalam jumlah besar.
Menurut perkiraan CertiK, serangan jembatan blockchain menyebabkan kerugian lebih dari $1,3 miliar pada tahun 2022, terhitung 36% dari total kerugian tahun itu.
Kerentanan keamanan jembatan lintas rantai yang umum
Untuk meningkatkan keamanan jembatan blockchain, penting untuk memahami kerentanan umum keamanan jembatan lintas rantai dan menguji jembatan blockchain sebelum meluncurkannya. Kerentanan ini terutama berasal dari empat aspek berikut:
Verifikasi on-chain tidak memadai
Untuk jembatan blockchain sederhana, terutama yang dirancang untuk dApp tertentu, biasanya hanya ada verifikasi on-chain pada tingkat minimal. Jembatan ini mengandalkan backend terpusat untuk melakukan operasi dasar seperti pencetakan, pembakaran, dan transfer token, dengan semua verifikasi dilakukan secara off-chain.
Sementara jenis jembatan lainnya menggunakan kontrak pintar untuk memvalidasi pesan dan memverifikasinya secara on-chain. Dalam hal ini, ketika pengguna menyetor dana ke dalam rantai, kontrak pintar menghasilkan pesan yang ditandatangani dan mengembalikan tanda tangan dalam transaksi. Tanda tangan ini akan digunakan sebagai bukti setoran dan digunakan untuk memverifikasi permintaan penarikan pengguna di rantai lain. Proses ini harus mencegah berbagai serangan keamanan, termasuk serangan replay dan pemalsuan catatan top-up.
Namun, jika terdapat kerentanan dalam proses verifikasi on-chain, serangan dapat menyebabkan kerusakan parah. Misalnya, jika blockchain menggunakan pohon Merkle untuk memverifikasi catatan transaksi, penyerang dapat membuat bukti palsu. Artinya, jika proses verifikasi rentan, penyerang dapat melewati verifikasi bukti dan membuat token baru di akun mereka.
Beberapa jembatan blockchain menerapkan konsep "token yang dibungkus". Misalnya, ketika pengguna mentransfer DAI dari Ethereum ke BNB Chain, DAI mereka dikeluarkan dari kontrak Ethereum dan jumlah DAI yang dibungkus dalam jumlah yang sama dikeluarkan di BNB Chain.
Namun, jika transaksi ini tidak divalidasi dengan benar, penyerang dapat menyebarkan kontrak jahat yang memanipulasi fungsi ini untuk merutekan token yang dibungkus dari jembatan ke alamat yang salah.
Penyerang juga memerlukan korban untuk menyetujui kontrak jembatan lintas rantai sebelum menggunakan fungsi "TransferFrom" untuk mentransfer token, sehingga mengambil aset dari kontrak jembatan lintas rantai.
Namun bagian rumitnya adalah banyak jembatan lintas rantai mengharuskan pengguna dApp untuk menyetujui jumlah token yang tidak terbatas. Praktik ini sangat umum, yang dapat mengurangi biaya bahan bakar, namun memungkinkan kontrak pintar untuk mengakses jumlah token yang tidak terbatas dari dompet pengguna. yang akan membawa Risiko Tambahan. Penyerang akan mengeksploitasi kekurangan verifikasi dan persetujuan berlebihan ini untuk mentransfer token dari pengguna lain ke pengguna mereka sendiri.
Verifikasi off-chain tidak memadai
Dalam beberapa sistem jembatan lintas rantai, server backend off-chain memainkan peran penting dalam memverifikasi keabsahan pesan yang dikirim dari blockchain. Dalam hal ini, kita perlu fokus pada verifikasi transaksi isi ulang.
Jembatan blockchain dengan verifikasi off-chain berfungsi sebagai berikut:
Pengguna berinteraksi dengan dApp dan menyetor token ke dalam kontrak pintar di rantai sumber.
DApp kemudian mengirimkan hash transaksi deposit ke server backend melalui API.
Hash transaksi perlu diverifikasi beberapa kali oleh server. Jika dianggap sah, penandatangan menandatangani pesan dan mengirimkan tanda tangan kembali ke antarmuka pengguna melalui API.
Setelah tanda tangan diterima, dApp memverifikasinya dan mengizinkan pengguna untuk menarik token dari rantai target.
Server backend harus memastikan bahwa transaksi isi ulang yang ditanganinya adalah nyata dan tidak palsu. Server backend ini menentukan apakah pengguna dapat menarik token pada rantai target, menjadikannya target serangan pertama.
Server backend perlu memverifikasi struktur peristiwa inisiasi transaksi dan alamat kontrak yang memulai peristiwa tersebut. Jika hal terakhir ini diabaikan, penyerang dapat menyebarkan kontrak berbahaya untuk memalsukan peristiwa pengisian ulang dengan struktur yang sama dengan peristiwa pengisian ulang yang sah.
Jika server backend tidak memverifikasi alamat mana yang memulai peristiwa tersebut, server akan menganggap itu adalah transaksi yang valid dan menandatangani pesannya. Penyerang kemudian dapat mengirimkan hash transaksi ke server backend, melewati verifikasi dan mengizinkannya menarik token dari rantai target.
Penanganan token asli yang tidak tepat
Jembatan lintas rantai mengambil pendekatan berbeda terhadap token asli dan token utilitas. Misalnya, di jaringan Ethereum, token aslinya adalah ETH, dan sebagian besar token utilitas mematuhi standar ERC-20.
Jika pengguna bermaksud mentransfer ETH-nya ke rantai lain, ia harus menyetorkannya terlebih dahulu ke dalam kontrak jembatan lintas rantai. Untuk melakukan ini, pengguna cukup melampirkan ETH ke transaksi dan dapat mengambil jumlah ETH dengan membaca kolom transaksi "msg.value".
Menyetorkan token ERC-20 sangat berbeda dengan menyetorkan ETH. Untuk menyetor token ERC-20, pengguna harus terlebih dahulu mengizinkan kontrak jembatan lintas rantai untuk menggunakan token mereka. Setelah mereka menyetujui dan menyetorkan token ke dalam kontrak jembatan lintas rantai, kontrak akan menggunakan fungsi "burnFrom()" untuk menghancurkan token pengguna, atau fungsi "transferFrom()" untuk mentransfer token pengguna ke kontrak.
Untuk membedakan operasi yang mana, Anda dapat menggunakan pernyataan if-else dalam fungsi yang sama. Atau buat dua fungsi terpisah untuk menangani setiap skenario. Karena metode pemrosesan yang berbeda, jika pengguna mencoba menyetor ETH menggunakan fungsi setoran ERC-20, ETH mungkin hilang.
Saat memproses permintaan deposit ERC-20, pengguna biasanya memberikan alamat token sebagai parameter input ke fungsi deposit. Hal ini menimbulkan risiko yang signifikan, karena panggilan eksternal yang tidak tepercaya dapat terjadi selama transaksi. Menggunakan daftar putih untuk hanya menyertakan token yang didukung oleh jembatan lintas rantai adalah praktik umum untuk meminimalkan risiko. Hanya alamat yang masuk daftar putih yang diteruskan sebagai parameter. Hal ini mencegah panggilan eksternal karena tim proyek telah memfilter alamat token.
Namun, ada juga masalah ketika jembatan lintas rantai menangani transfer token asli lintas rantai, karena token asli tidak memiliki alamat. Token asli dapat diwakili oleh alamat khusus, "alamat nol" (0x000... 0). Namun ada masalah dengan hal ini, jika logika verifikasi daftar putih tidak diterapkan dengan benar, meneruskan alamat nol ke fungsi tersebut dapat melewati verifikasi daftar putih.
Ketika kontrak jembatan lintas rantai memanggil "TransferFrom" untuk mentransfer aset pengguna ke kontrak, panggilan eksternal ke alamat nol akan menghasilkan false karena fungsi "transferFrom" tidak diterapkan di alamat nol. Namun, jika kontrak tidak menangani nilai pengembalian dengan benar, transaksi masih dapat terus terjadi. Hal ini menciptakan peluang bagi penyerang untuk melakukan transaksi tanpa mentransfer token apa pun ke dalam kontrak.
Kesalahan konfigurasi
Di sebagian besar jembatan blockchain, terdapat peran istimewa yang bertanggung jawab untuk memasukkan token dan alamat ke daftar putih atau hitam, menugaskan atau mengubah penandatangan, dan konfigurasi kunci lainnya. Sangat penting untuk memastikan bahwa semua konfigurasi akurat, karena kelalaian yang tampaknya sepele dapat menyebabkan kerusakan yang signifikan.
Faktanya, ada insiden di mana penyerang berhasil melewati verifikasi catatan transfer karena kesalahan konfigurasi. Tim proyek menerapkan peningkatan protokol beberapa hari sebelum peretasan di mana variabel tertentu diubah. Variabel ini adalah nilai default yang digunakan untuk mewakili pesan tepercaya. Perubahan ini menyebabkan semua pesan secara otomatis dianggap terautentikasi, sehingga memungkinkan penyerang mengirimkan pesan acak dan lolos validasi.
Bagaimana meningkatkan keamanan jembatan lintas rantai
Empat kerentanan umum jembatan lintas rantai yang dijelaskan di atas menunjukkan bahwa tantangan yang dihadapi oleh keamanan dalam ekosistem blockchain yang terhubung tidak dapat dianggap remeh. Untuk mengatasi kerentanan ini, kita perlu mempertimbangkan “sesuai dengan kondisi lokal”. Tidak ada metode yang dapat menjadi obat mujarab untuk mengatasi semua kerentanan.
Misalnya, karena setiap jembatan lintas rantai memiliki persyaratan verifikasi yang unik, akan sulit untuk memastikan bahwa proses verifikasi bebas dari kesalahan hanya dengan memberikan pedoman umum. Cara paling efektif untuk mencegah bypass verifikasi adalah dengan menguji jembatan lintas rantai secara menyeluruh terhadap semua kemungkinan vektor serangan dan memastikan bahwa logika verifikasi masuk akal.
Secara keseluruhan, pengujian yang ketat harus dilakukan terhadap potensi serangan, dengan perhatian khusus diberikan pada kerentanan keamanan paling umum di jembatan lintas rantai.
Kesimpulan
Karena besarnya jumlah dana, jembatan lintas rantai telah lama menjadi sasaran penyerang. Pembangun dapat memperkuat keamanan jembatan lintas rantai dengan melakukan pengujian pra-penerapan yang komprehensif dan menggabungkan audit pihak ketiga, sehingga mengurangi risiko peretasan besar yang membayangi jembatan lintas rantai selama beberapa tahun terakhir. Jembatan lintas rantai sangat penting dalam dunia multi-rantai, namun keamanan harus menjadi pertimbangan utama saat merancang dan membangun infrastruktur Web3 yang efektif.
Bacaan lebih lanjut
Apa itu jembatan blockchain?
Apa itu interoperabilitas lintas rantai?
Tiga Jembatan Cryptocurrency Populer dan Cara Kerjanya
Apa itu token yang dibungkus?
Penafian dan peringatan risiko: Isi artikel ini adalah fakta dan hanya untuk informasi umum dan tujuan pendidikan dan bukan merupakan representasi atau jaminan apa pun. Artikel ini tidak boleh ditafsirkan sebagai nasihat keuangan, hukum, atau profesional lainnya dan bukan merupakan rekomendasi agar Anda membeli produk atau layanan tertentu. Anda harus mencari nasihat Anda sendiri dari penasihat profesional yang tepat. Jika artikel ini disediakan oleh kontributor pihak ketiga, harap diperhatikan bahwa pandangan yang diungkapkan dalam artikel ini adalah milik kontributor pihak ketiga dan tidak mencerminkan pandangan Binance Academy. Untuk informasi lebih lanjut, silakan klik di sini untuk membaca penafian lengkap kami. Harga aset digital mungkin berfluktuasi. Nilai investasi Anda mungkin turun atau naik dan Anda mungkin tidak mendapatkan kembali pokok investasi Anda. Anda sepenuhnya bertanggung jawab atas keputusan investasi Anda sendiri dan Binance Academy tidak bertanggung jawab atas kerugian apa pun yang mungkin Anda derita. Artikel ini bukan merupakan nasihat keuangan, hukum atau profesional lainnya. Untuk informasi lebih lanjut, silakan lihat Ketentuan Penggunaan dan Peringatan Risiko kami.

