Ketika kebanyakan orang berbicara tentang keamanan Web3, mereka biasanya memikirkan kontrak pintar. Ini masuk akal. Lagipula, potongan kode ini mengendalikan aset nyata, mendefinisikan logika protokol, dan melindungi miliaran dolar dana pengguna. Selama bertahun-tahun, tim keamanan telah menginvestasikan energi tanpa batas untuk menemukan kerentanan reentrancy, masalah kontrol akses, kesalahan aritmatika, dan kerentanan halus yang hanya muncul di jalur eksekusi tertentu. Namun, dalam semua obsesi ini terhadap apa yang terjadi di rantai, kita mengabaikan hal pertama yang sebenarnya berinteraksi dengan sebagian besar pengguna: antarmuka depan.
Frontend selalu dianggap sebagai cangkang yang bersinar, antarmuka yang membantu pengguna berinteraksi dengan blockchain. Namun, "cangkang" ini dengan cepat menjadi salah satu lapisan yang paling disalahgunakan di seluruh ekosistem. Meskipun kontrak pintar bersifat tidak dapat diubah dan dapat diaudit, frontend bersifat dapat diubah, terpusat, dan dilayani oleh infrastruktur yang sepenuhnya berada di luar jaminan blockchain. Namun, merekalah yang membangun muatan transaksi yang meminta pengguna untuk menandatangani dompet. Jika ini belum membuat Anda merasa takut, maka seharusnya itu membuat Anda merasa takut.
Antarmuka kepercayaan berarti mempercayai penyerang
Bahaya sebenarnya dari frontend tidak selalu terletak pada kompleksitas teknis; melainkan pada ketidakcocokan kepercayaan. Sebagian besar pengguna tidak tahu apa yang sebenarnya mereka tanda tangani saat mengonfirmasi transaksi. Mereka sepenuhnya bergantung pada apa yang ditampilkan oleh frontend kepada mereka.
Sebuah tombol "Swap" mungkin sedang memicu persetujuan. Sebuah antarmuka staking mungkin sedang melakukan panggilan delegasi. Kecuali dompet mendekode data dalam format yang dapat dibaca manusia, dan banyak dompet masih belum melakukannya, pengguna tidak dapat memverifikasi apa yang mereka lakukan.
Ini menjadikan intrusi frontend sebagai salah satu cara paling efektif untuk mencuri dana di Web3. Penyerang tidak perlu merusak kontrak atau menemukan kerentanan dalam protokol inti. Yang mereka butuhkan hanyalah cara untuk memanipulasi frontend, bahkan jika hanya sementara, mereka dapat secara diam-diam duduk di antara pengguna dan blockchain. Setiap klik menjadi kesempatan untuk niat pembajakan.
Bagaimana serangan ini terjadi
Cara pelaksanaan serangan ini tidak ada yang istimewa. Terkadang, serangannya semudah peretasan DNS, di mana penyerang dapat mengakses catatan nama domain proyek dan mengarahkannya ke server jahat. Dalam kasus lain, penyerang menyuntikkan kode melalui dependensi yang terinfeksi, mengganti logika jahat, dan memodifikasi data transaksi sebelum mengirimnya ke dompet. Dalam beberapa kasus, front-end langsung diretas melalui akses ke dasbor cloud atau konfigurasi CDN, yang memungkinkan penyerang mengubah skrip UI secara real-time.
Hasilnya selalu sama. Pengguna mengakses aplikasi seperti biasa, menghubungkan dompet mereka, dan menandatangani transaksi yang mereka anggap aman. Namun, apa yang mereka tandatangani adalah sesuatu yang sepenuhnya berbeda, biasanya menyetujui kontrak yang tidak tepercaya, atau memindahkan token ke dompet yang dikendalikan oleh penyerang. Dan karena blockchain sepenuhnya dijalankan berdasarkan tanda tangan, tidak ada tombol untuk membatalkan.
Peristiwa terbaru yang membuktikan hal ini
Kami telah melihat beberapa contoh menyakitkan dalam hal ini. Salah satu contoh paling terkenal adalah kejadian Curve Finance pada tahun 2022, di mana penyerang menguasai DNS Curve dan memberikan antarmuka depan palsu kepada pengguna. Situs web tersebut terlihat persis sama. Peringatan dompet juga tampak normal. Namun, di balik layar, setiap transaksi diarahkan ke dompet penyerang. Dalam beberapa jam saja, hampir 600.000 dolar hilang.
Contoh lain adalah BadgerDAO, yang kehilangan lebih dari 100 juta dolar setelah penyerang menyuntikkan JavaScript jahat ke dalam frontend-nya. Kode tersebut diam-diam mengubah payload transaksi pengguna tertentu (terutama ikan paus), membuat pengguna tersebut secara sukarela mengklik untuk kehancuran.
Kesamaan dari kejadian ini adalah kontrak pintar tetap tidak berubah. Logikanya sehat, auditnya bersih, tetapi ketika frontend menceritakan kisah yang berbeda, semua ini menjadi tidak relevan.
Mengapa masalah ini tidak akan hilang
Alasan mengapa keamanan frontend di Web3 sangat sulit adalah karena ia berada di zona abu-abu yang aneh. Ia berada di luar rantai, sehingga sebagian besar alat keamanan di dalam rantai tidak dapat memantau nya. Ia sering diabaikan selama audit, terutama dalam proyek yang lebih mengutamakan pengiriman daripada keamanan. Selain itu, ia sangat bergantung pada infrastruktur terpusat, seperti DNS, penyimpanan awan, dan registri paket JavaScript, yang semuanya tidak memberikan jaminan yang sama seperti blockchain.
Lebih buruk lagi, alat di sekitar verifikasi front-end masih belum matang. Berbeda dengan bytecode kontrak yang dapat diverifikasi di chain, kode front-end sering berubah, jarang dikunci atau di-hash, dan hampir tidak pernah dirilis dengan cara yang dapat diperiksa oleh pengguna. Ini menciptakan lingkungan yang sempurna untuk serangan yang ditargetkan, terutama selama periode sensitif seperti peluncuran token, airdrop, atau pembaruan UI.
Apa yang perlu diubah
Untuk memastikan bahwa Web3 berkembang dengan aman, keamanan perlu diperluas di luar kontrak pintar. Pengembang harus memperlakukan frontend dengan sama berhati-hatinya dan ketatnya seperti backend. Ini berarti mengunci ketergantungan, menghindari skrip pihak ketiga yang tidak perlu, melindungi konfigurasi DNS, dan menganggap audit frontend sebagai bagian dari setiap rilis besar.
Penyedia dompet juga harus berperan. Pengguna perlu lebih memahami apa yang mereka tanda tangani. Ini mungkin berarti perbaikan dalam pengkodean, peringatan yang lebih baik, bahkan pemeriksaan keaslian di front-end. Saat ini, orang memiliki tingkat kepercayaan yang terlalu tinggi terhadap antarmuka, sementara upaya untuk memverifikasi integritasnya masih kurang.
Dari sudut pandang pengguna, saran tersebut tegas tetapi jujur: jangan percaya buta pada UI mana pun. Jika Anda berinteraksi dengan protokol bernilai tinggi, jangan hanya memeriksa nama domain. Periksa kode sumber. Gunakan ekstensi browser untuk melacak kontrak jahat. Jika ada yang terasa salah, jangan tanda tangani.
Kesimpulan
Web3 bukan hanya tentang eksekusi tanpa kepercayaan. Ini tentang seluruh batas kepercayaan, titik awalnya, bagaimana ia berpindah, dan titik akhirnya. Sekarang, front-end kebetulan berada di tengah batas itu dan telah menjadi taman bermain bagi siapa pun yang cukup cerdas untuk memanfaatkan kesenjangan antara apa yang dilihat pengguna dan konten yang ditandatangani.
Kontrak Anda mungkin sempurna, tetapi jika front-end Anda diserang, hasilnya tetap sama. Kerugian dana, kepercayaan hancur, pengguna ingin tahu bagaimana semuanya bisa salah. Sudah saatnya industri berhenti menganggap front-end sebagai sesuatu yang dipikirkan setelah kejadian. Karena bagi para hacker, itu telah menjadi target pertama mereka untuk diserang.
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.
Web3 front-end attack: Surga baru bagi Hacker
Kami lupa melindungi lapisan tak terlihat
Ketika kebanyakan orang berbicara tentang keamanan Web3, mereka biasanya memikirkan kontrak pintar. Ini masuk akal. Lagipula, potongan kode ini mengendalikan aset nyata, mendefinisikan logika protokol, dan melindungi miliaran dolar dana pengguna. Selama bertahun-tahun, tim keamanan telah menginvestasikan energi tanpa batas untuk menemukan kerentanan reentrancy, masalah kontrol akses, kesalahan aritmatika, dan kerentanan halus yang hanya muncul di jalur eksekusi tertentu. Namun, dalam semua obsesi ini terhadap apa yang terjadi di rantai, kita mengabaikan hal pertama yang sebenarnya berinteraksi dengan sebagian besar pengguna: antarmuka depan.
Frontend selalu dianggap sebagai cangkang yang bersinar, antarmuka yang membantu pengguna berinteraksi dengan blockchain. Namun, "cangkang" ini dengan cepat menjadi salah satu lapisan yang paling disalahgunakan di seluruh ekosistem. Meskipun kontrak pintar bersifat tidak dapat diubah dan dapat diaudit, frontend bersifat dapat diubah, terpusat, dan dilayani oleh infrastruktur yang sepenuhnya berada di luar jaminan blockchain. Namun, merekalah yang membangun muatan transaksi yang meminta pengguna untuk menandatangani dompet. Jika ini belum membuat Anda merasa takut, maka seharusnya itu membuat Anda merasa takut.
Antarmuka kepercayaan berarti mempercayai penyerang
Bahaya sebenarnya dari frontend tidak selalu terletak pada kompleksitas teknis; melainkan pada ketidakcocokan kepercayaan. Sebagian besar pengguna tidak tahu apa yang sebenarnya mereka tanda tangani saat mengonfirmasi transaksi. Mereka sepenuhnya bergantung pada apa yang ditampilkan oleh frontend kepada mereka.
Sebuah tombol "Swap" mungkin sedang memicu persetujuan. Sebuah antarmuka staking mungkin sedang melakukan panggilan delegasi. Kecuali dompet mendekode data dalam format yang dapat dibaca manusia, dan banyak dompet masih belum melakukannya, pengguna tidak dapat memverifikasi apa yang mereka lakukan.
Ini menjadikan intrusi frontend sebagai salah satu cara paling efektif untuk mencuri dana di Web3. Penyerang tidak perlu merusak kontrak atau menemukan kerentanan dalam protokol inti. Yang mereka butuhkan hanyalah cara untuk memanipulasi frontend, bahkan jika hanya sementara, mereka dapat secara diam-diam duduk di antara pengguna dan blockchain. Setiap klik menjadi kesempatan untuk niat pembajakan.
Bagaimana serangan ini terjadi
Cara pelaksanaan serangan ini tidak ada yang istimewa. Terkadang, serangannya semudah peretasan DNS, di mana penyerang dapat mengakses catatan nama domain proyek dan mengarahkannya ke server jahat. Dalam kasus lain, penyerang menyuntikkan kode melalui dependensi yang terinfeksi, mengganti logika jahat, dan memodifikasi data transaksi sebelum mengirimnya ke dompet. Dalam beberapa kasus, front-end langsung diretas melalui akses ke dasbor cloud atau konfigurasi CDN, yang memungkinkan penyerang mengubah skrip UI secara real-time.
Hasilnya selalu sama. Pengguna mengakses aplikasi seperti biasa, menghubungkan dompet mereka, dan menandatangani transaksi yang mereka anggap aman. Namun, apa yang mereka tandatangani adalah sesuatu yang sepenuhnya berbeda, biasanya menyetujui kontrak yang tidak tepercaya, atau memindahkan token ke dompet yang dikendalikan oleh penyerang. Dan karena blockchain sepenuhnya dijalankan berdasarkan tanda tangan, tidak ada tombol untuk membatalkan.
Peristiwa terbaru yang membuktikan hal ini
Kami telah melihat beberapa contoh menyakitkan dalam hal ini. Salah satu contoh paling terkenal adalah kejadian Curve Finance pada tahun 2022, di mana penyerang menguasai DNS Curve dan memberikan antarmuka depan palsu kepada pengguna. Situs web tersebut terlihat persis sama. Peringatan dompet juga tampak normal. Namun, di balik layar, setiap transaksi diarahkan ke dompet penyerang. Dalam beberapa jam saja, hampir 600.000 dolar hilang.
Contoh lain adalah BadgerDAO, yang kehilangan lebih dari 100 juta dolar setelah penyerang menyuntikkan JavaScript jahat ke dalam frontend-nya. Kode tersebut diam-diam mengubah payload transaksi pengguna tertentu (terutama ikan paus), membuat pengguna tersebut secara sukarela mengklik untuk kehancuran.
Kesamaan dari kejadian ini adalah kontrak pintar tetap tidak berubah. Logikanya sehat, auditnya bersih, tetapi ketika frontend menceritakan kisah yang berbeda, semua ini menjadi tidak relevan.
Mengapa masalah ini tidak akan hilang
Alasan mengapa keamanan frontend di Web3 sangat sulit adalah karena ia berada di zona abu-abu yang aneh. Ia berada di luar rantai, sehingga sebagian besar alat keamanan di dalam rantai tidak dapat memantau nya. Ia sering diabaikan selama audit, terutama dalam proyek yang lebih mengutamakan pengiriman daripada keamanan. Selain itu, ia sangat bergantung pada infrastruktur terpusat, seperti DNS, penyimpanan awan, dan registri paket JavaScript, yang semuanya tidak memberikan jaminan yang sama seperti blockchain.
Lebih buruk lagi, alat di sekitar verifikasi front-end masih belum matang. Berbeda dengan bytecode kontrak yang dapat diverifikasi di chain, kode front-end sering berubah, jarang dikunci atau di-hash, dan hampir tidak pernah dirilis dengan cara yang dapat diperiksa oleh pengguna. Ini menciptakan lingkungan yang sempurna untuk serangan yang ditargetkan, terutama selama periode sensitif seperti peluncuran token, airdrop, atau pembaruan UI.
Apa yang perlu diubah
Untuk memastikan bahwa Web3 berkembang dengan aman, keamanan perlu diperluas di luar kontrak pintar. Pengembang harus memperlakukan frontend dengan sama berhati-hatinya dan ketatnya seperti backend. Ini berarti mengunci ketergantungan, menghindari skrip pihak ketiga yang tidak perlu, melindungi konfigurasi DNS, dan menganggap audit frontend sebagai bagian dari setiap rilis besar.
Penyedia dompet juga harus berperan. Pengguna perlu lebih memahami apa yang mereka tanda tangani. Ini mungkin berarti perbaikan dalam pengkodean, peringatan yang lebih baik, bahkan pemeriksaan keaslian di front-end. Saat ini, orang memiliki tingkat kepercayaan yang terlalu tinggi terhadap antarmuka, sementara upaya untuk memverifikasi integritasnya masih kurang.
Dari sudut pandang pengguna, saran tersebut tegas tetapi jujur: jangan percaya buta pada UI mana pun. Jika Anda berinteraksi dengan protokol bernilai tinggi, jangan hanya memeriksa nama domain. Periksa kode sumber. Gunakan ekstensi browser untuk melacak kontrak jahat. Jika ada yang terasa salah, jangan tanda tangani.
Kesimpulan
Web3 bukan hanya tentang eksekusi tanpa kepercayaan. Ini tentang seluruh batas kepercayaan, titik awalnya, bagaimana ia berpindah, dan titik akhirnya. Sekarang, front-end kebetulan berada di tengah batas itu dan telah menjadi taman bermain bagi siapa pun yang cukup cerdas untuk memanfaatkan kesenjangan antara apa yang dilihat pengguna dan konten yang ditandatangani.
Kontrak Anda mungkin sempurna, tetapi jika front-end Anda diserang, hasilnya tetap sama. Kerugian dana, kepercayaan hancur, pengguna ingin tahu bagaimana semuanya bisa salah. Sudah saatnya industri berhenti menganggap front-end sebagai sesuatu yang dipikirkan setelah kejadian. Karena bagi para hacker, itu telah menjadi target pertama mereka untuk diserang.