Apa saja celah keamanan umum dalam jembatan lintas rantai?

Ringkasan

Jembatan blockchain adalah dasar untuk mencapai interoperabilitas di bidang blockchain. Oleh karena itu, keamanan teknologi jembatan lintas rantai sangat penting. Beberapa kerentanan keamanan umum pada jembatan blockchain meliputi kurangnya verifikasi on-chain dan off-chain, penanganan token asli yang tidak tepat, serta konfigurasi yang salah. Untuk memastikan logika verifikasi yang masuk akal, disarankan untuk menguji semua kemungkinan vektor serangan terhadap jembatan lintas rantai sebelum peluncuran.

Pendahuluan

Jembatan blockchain adalah protokol yang menghubungkan dua blockchain agar dapat berinteraksi. Melalui jembatan blockchain, pengguna yang ingin berpartisipasi dalam aktivitas DeFi di jaringan Ethereum, misalnya, cukup memegang Bitcoin tanpa perlu menjualnya.

Jembatan blockchain adalah fondasi untuk mencapai interoperabilitas di bidang blockchain. Mereka menggunakan berbagai verifikasi on-chain dan off-chain, sehingga juga berpotensi memiliki berbagai kerentanan keamanan.

Mengapa keamanan jembatan blockchain sangat penting?

Jembatan blockchain biasanya memegang token yang ingin dipindahkan pengguna dari satu rantai ke rantai lain. Jembatan ini biasanya dideploy dalam bentuk smart contract. Seiring akumulasi transfer lintas rantai, jembatan akan memegang sejumlah besar token, yang merupakan kekayaan besar dan menjadi target incaran hacker.

Selain itu, karena melibatkan banyak komponen, permukaan serangan jembatan blockchain seringkali sangat besar. Oleh karena itu, pelaku jahat memiliki motivasi kuat untuk menjadikan aplikasi lintas rantai sebagai target demi mengakumulasi dana dalam jumlah besar.

Menurut perkiraan CertiK, pada tahun 2022, serangan terhadap jembatan blockchain menyebabkan kerugian lebih dari 1,3 miliar dolar AS, yang mewakili 36% dari total kerugian tahun itu.

Kerentanan Keamanan Umum dalam Jembatan Lintas Rantai

Untuk meningkatkan keamanan jembatan blockchain, penting untuk memahami kerentanan keamanan umum dalam jembatan lintas rantai dan mengujinya sebelum peluncuran. Kerentanan ini terutama berasal dari empat aspek berikut:

Kurangnya Verifikasi On-Chain

Untuk jembatan blockchain yang sederhana, terutama yang dirancang khusus untuk dApp tertentu, biasanya hanya memiliki tingkat verifikasi on-chain yang minimal. Jembatan ini mengandalkan backend terpusat untuk melakukan operasi dasar seperti pencetakan token, pembakaran, dan transfer token, semua verifikasi dilakukan di luar rantai.

Jenis jembatan lain menggunakan smart contract untuk memverifikasi pesan dan melakukan verifikasi di on-chain. Dalam kasus ini, saat pengguna menyetor dana ke dalam rantai, smart contract akan menghasilkan pesan yang ditandatangani dan mengembalikan tanda tangan dalam transaksi. Tanda tangan ini digunakan sebagai bukti deposit, untuk memverifikasi permintaan penarikan pengguna di rantai lain. Proses ini harus mampu mencegah berbagai serangan keamanan, termasuk serangan pengulangan dan pemalsuan catatan deposit.

Namun, jika proses verifikasi on-chain memiliki celah, serangan dapat menyebabkan kerugian serius. Misalnya, jika blockchain menggunakan Merkle Tree untuk memverifikasi catatan transaksi, penyerang dapat menghasilkan bukti palsu. Artinya, jika proses verifikasi memiliki celah, penyerang dapat melewati verifikasi bukti dan mencetak token baru di akun mereka.

Beberapa jembatan lintas rantai menerapkan konsep “wrapped tokens(wrapped tokens)”. Misalnya, saat pengguna memindahkan DAI dari Ethereum ke BNB Chain, DAI mereka akan diambil dari kontrak Ethereum dan jumlah yang sama akan diterbitkan sebagai wrapped DAI di BNB Chain.

Namun, jika transaksi ini tidak diverifikasi dengan benar, penyerang dapat menyebarkan kontrak berbahaya dan memanipulasi fungsi tersebut untuk mengarahkan wrapped token dari routing jembatan ke alamat yang salah.

Penyerang juga perlu mendapatkan persetujuan dari korban terlebih dahulu agar kontrak jembatan lintas rantai dapat menggunakan fungsi “TransferFrom” untuk memindahkan token, sehingga dapat mencuri aset dari kontrak jembatan lintas rantai.

Namun, yang rumit adalah banyak jembatan lintas rantai meminta pengguna dApp untuk memberikan persetujuan tak terbatas terhadap token, praktik umum yang dapat menurunkan biaya gas, tetapi juga memungkinkan smart contract mengakses token dari dompet pengguna tanpa batas, menimbulkan risiko tambahan. Penyerang dapat memanfaatkan kekurangan verifikasi ini dan persetujuan berlebihan untuk memindahkan token dari pengguna lain ke akun mereka sendiri.

Kurangnya Verifikasi Off-Chain

Dalam beberapa sistem jembatan lintas rantai, server backend off-chain memainkan peran penting dalam memverifikasi keabsahan pesan yang dikirim dari blockchain. Dalam kasus ini, fokus utama adalah verifikasi transaksi deposit.

Cara kerja jembatan blockchain yang memiliki verifikasi off-chain adalah sebagai berikut:

Pengguna berinteraksi dengan dApp dan menyetor token ke smart contract di rantai sumber.

Kemudian, dApp mengirim hash transaksi deposit ke server backend melalui API.

Hash transaksi harus diverifikasi berkali-kali oleh server. Jika dianggap sah, penandatangan akan menandatangani sebuah pesan dan mengirimkan tanda tangan kembali ke antarmuka pengguna melalui API.

Setelah menerima tanda tangan, dApp akan memverifikasi dan mengizinkan pengguna menarik token dari rantai target.

Server backend harus memastikan bahwa transaksi deposit yang diproses benar-benar terjadi dan bukan palsu. Server ini menentukan apakah pengguna dapat menarik token di rantai target, sehingga menjadi target utama serangan.

Server backend perlu memverifikasi struktur peristiwa transaksi dan alamat kontrak yang memicu peristiwa tersebut. Jika mengabaikan yang kedua, penyerang dapat menyebarkan kontrak berbahaya yang memalsukan peristiwa deposit yang sama dengan struktur peristiwa deposit yang sah.

Jika server backend tidak memverifikasi alamat yang memicu peristiwa tersebut, server akan menganggap transaksi tersebut valid dan menandatangani pesan. Penyerang dapat mengirim hash transaksi ke server backend, melewati verifikasi, dan menarik token dari rantai target.

Penanganan Token Asli yang Tidak Tepat

Jembatan lintas rantai menggunakan metode berbeda untuk menangani token asli dan token utilitas. Misalnya, di jaringan Ethereum, token asli adalah ETH, dan sebagian besar token utilitas mengikuti standar ERC-20.

Jika pengguna ingin memindahkan ETH mereka ke rantai lain, mereka harus terlebih dahulu menyetor ETH ke kontrak jembatan lintas rantai. Caranya, pengguna cukup menambahkan ETH ke dalam transaksi dan membaca jumlah ETH dari field “msg.value”.

Berbeda dengan menyetor token ERC-20, pengguna harus terlebih dahulu memberi izin kepada kontrak jembatan lintas rantai untuk menggunakan token mereka. Setelah memberi izin dan menyetor token ke kontrak, kontrak akan membakar token pengguna menggunakan fungsi “burnFrom(” atau mentransfer token ke kontrak menggunakan fungsi “transferFrom)”.

Untuk membedakan kedua operasi ini, bisa digunakan pernyataan if-else dalam satu fungsi, atau dibuatkan dua fungsi terpisah untuk menangani masing-masing skenario. Karena penanganannya berbeda, jika pengguna mencoba menggunakan fungsi deposit ERC-20 untuk menyetor ETH, ETH tersebut mungkin akan hilang.

Saat memproses permintaan deposit ERC-20, pengguna biasanya memasukkan alamat token sebagai parameter input ke fungsi deposit. Ini berisiko besar karena selama transaksi, panggilan eksternal yang tidak terpercaya bisa terjadi. Menggunakan whitelist yang hanya berisi token yang didukung oleh jembatan lintas rantai adalah praktik umum untuk meminimalkan risiko. Hanya alamat yang ada di whitelist yang akan diteruskan sebagai parameter, sehingga mencegah panggilan eksternal, karena tim proyek telah memfilter alamat token.

Namun, saat jembatan lintas rantai memproses transfer token asli lintas rantai, ada masalah karena token asli tidak memiliki alamat. Token asli dapat menggunakan alamat khusus, yaitu “zero address(0x000…)”. Tetapi, ini memiliki masalah, jika logika verifikasi whitelist tidak diimplementasikan dengan benar, penggunaan zero address dalam parameter fungsi dapat melewati verifikasi whitelist.

Ketika kontrak jembatan lintas rantai memanggil “TransferFrom” untuk memindahkan aset pengguna ke kontrak, panggilan eksternal ke zero address akan mengembalikan false karena zero address tidak mengimplementasikan fungsi “transferFrom”. Tetapi, jika kontrak tidak memproses nilai kembali dengan benar, transaksi tetap bisa berjalan. Ini memberi peluang bagi penyerang untuk melakukan transaksi tanpa mentransfer token apa pun ke kontrak.

Kesalahan Konfigurasi

Di sebagian besar jembatan blockchain, ada peran istimewa yang bertanggung jawab untuk memasukkan token dan alamat ke dalam whitelist atau blacklist, mengatur atau mengubah penandatangan, serta konfigurasi penting lainnya. Memastikan semua konfigurasi akurat sangat penting, karena kelalaian kecil sekalipun dapat menyebabkan kerugian besar.

Sebenarnya, pernah terjadi kejadian di mana penyerang berhasil melewati verifikasi catatan transfer karena kesalahan konfigurasi. Tim proyek melakukan peningkatan protokol beberapa hari sebelum serangan, dengan mengubah satu variabel. Variabel ini digunakan untuk menunjukkan nilai default dari pesan yang dipercaya. Perubahan ini menyebabkan semua pesan secara otomatis dianggap telah diverifikasi, sehingga penyerang bisa mengirimkan pesan sembarangan dan lolos verifikasi.

Bagaimana Meningkatkan Keamanan Jembatan Lintas Rantai

Empat kerentanan umum yang disebutkan di atas menunjukkan bahwa tantangan keamanan dalam ekosistem blockchain yang terhubung tidak boleh diabaikan. Untuk mengatasi kerentanan ini, diperlukan pendekatan “berdasarkan kondisi” karena tidak ada satu metode pun yang mampu mengatasi semua kerentanan secara menyeluruh.

Misalnya, karena setiap jembatan lintas rantai memiliki kebutuhan verifikasi yang unik, hanya menyediakan pedoman umum saja tidak cukup untuk memastikan proses verifikasi bebas dari kesalahan. Cara paling efektif untuk mencegah bypass verifikasi adalah dengan melakukan pengujian menyeluruh terhadap semua vektor serangan potensial dan memastikan logika verifikasi masuk akal.

Singkatnya, pengujian ketat terhadap potensi serangan dan perhatian khusus terhadap kerentanan keamanan paling umum dalam jembatan lintas rantai sangat diperlukan.

Penutup

Karena volume dana yang besar, jembatan lintas rantai telah lama menjadi target serangan. Pengembang dapat memperkuat keamanan jembatan lintas rantai melalui pengujian menyeluruh sebelum deployment dan melibatkan audit pihak ketiga, sehingga mengurangi risiko serangan hacker yang destruktif selama beberapa tahun terakhir. Jembatan lintas rantai sangat penting dalam dunia multi-chain, tetapi dalam merancang dan membangun infrastruktur Web3 yang efektif, aspek keamanan harus menjadi prioritas utama. ($STO

ETH0,1%
BTC0,13%
DAI-0,07%
BNB2,11%
Lihat Asli
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.
  • Hadiah
  • Komentar
  • Posting ulang
  • Bagikan
Komentar
0/400
Tidak ada komentar
  • Sematkan

Perdagangkan Kripto Di Mana Saja Kapan Saja
qrCode
Pindai untuk mengunduh aplikasi Gate
Komunitas
Bahasa Indonesia
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)