Pinjaman Flash telah menjadi sorotan akhir-akhir ini karena lebih banyak insiden pencurian uang dari protokol DeFi terjadi ...
Pinjaman Flash telah menjadi sorotan akhir-akhir ini karena lebih banyak insiden pencurian protokol DeFi telah terjadi, dari Harvest Finance yang diretas lebih dari $33 juta hingga insiden OUSD terbaru.Penambangan 7 juta USD.
Dari sudut pandang peretas, serangan ini tampak seperti peluang besar untuk meminjam ratusan ribu dolar secara instan dari orang yang tidak memiliki uang sepeser pun dalam nilai ETH. Kemudian berikan melalui protokol on-chain yang rentan dan ekstrak ratusan dolar dari saku mereka dan bayar kembali pinjaman mereka. Semua ini terjadi dalam sekejap mata dalam transaksi Ethereum.
Kami tidak tahu siapa penyerang ini atau dari mana mereka berasal. Mereka semua mulai tanpa apa-apa dan pergi dengan uang ratusan ribu dolar dan tidak meninggalkan jejak untuk diidentifikasi.
Apa itu Pinjaman Flash?
Konsep pinjaman kilat pertama kali diperkenalkan oleh Max Wolff, pencipta Marble Protocol, pada tahun 2018.
Pinjaman Flash yang biasa digunakan untuk Ethereum atau ERC20 dipinjam hanya untuk waktu yang diperlukan untuk menyelesaikan satu blok transaksi di blockchain. Selama pinjaman dilunasi sebelum blok transaksi berikutnya dimulai, peminjam tidak akan dikenakan biaya bunga.
Jika pemberi pinjaman tradisional menanggung dua bentuk risiko: risiko gagal bayar atau risiko likuiditas, Pinjaman Kilat memecahkan dua masalah ini. Pada dasarnya, pinjaman kilat bekerja seperti ini:
Saya meminjamkan Anda jumlah yang Anda inginkan dalam satu transaksi. Tetapi pada akhir transaksi ini Anda harus membayar saya kembali setidaknya sejumlah yang saya pinjamkan kepada Anda. Jika Anda tidak membayar maka saya akan secara otomatis memulihkan transaksi Anda, yang berarti tidak pernah dimulai.
Ini hanya ada di Blockchain. Anda tidak dapat melakukan pinjaman kilat di BitMex. Karena kontrak pintar dapat memproses setiap transaksi, semua yang terjadi dalam transaksi dijalankan secara berurutan. Anda dapat menganggap ini sebagai "waktu beku" transaksi Anda saat transaksi sedang berlangsung.
Pemberi pinjaman tradisional diberi kompensasi untuk dua hal: risiko yang mereka ambil (risiko default dan likuiditas) dan biaya peluang dari modal yang mereka pinjamkan.
Pinjaman kilat berbeda. Pinjaman kilat benar-benar tidak memiliki risiko dan tidak ada biaya peluang! Hal ini karena peminjam adalah "waktu beku" selama pinjaman kilat mereka sehingga modal sistem tidak pernah berisiko dan tidak pernah digagalkan, sehingga tidak dapat memperoleh bunga di tempat lain (yaitu tidak memiliki biaya peluang).
Artinya, tidak ada biaya untuk menjadi flash lender. Yang mengatakan, berapa biaya pinjaman kilat pada keseimbangan?
Pada dasarnya, pinjaman kilat itu gratis. Atau lebih tepatnya, biaya yang cukup kecil untuk mengamortisasi biaya termasuk tambahan 3 baris kode sehingga properti dapat meminjamkan dirinya dengan cepat.
Pinjaman kilat tidak dapat dikenakan bunga dengan cara tradisional, karena pinjaman ini berlaku untuk waktu nol (setiap APR * 0 = 0). Dan tentu saja, jika lembaga yang menawarkan pinjaman kilat membebankan suku bunga yang lebih tinggi, mereka akan segera dikenakan suku bunga yang lebih rendah oleh kumpulan pinjaman kilat lainnya.
Beberapa proyek saat ini menerapkan pinjaman kilat tanpa biaya seperti dYdX atau AAVE yang membebankan 0,09% dari pokok pinjaman kilat.
Untuk apa pinjaman kilat digunakan?
Pinjaman kilat awalnya dikenal terutama untuk perdagangan arbitrase. Marble, pencipta definisi sumber pinjaman Flash, mengatakan:
Dengan pinjaman kilat, pedagang dapat meminjam dari bank Marmer, membeli token di satu DEX, menjual token di DEX lain dengan harga lebih tinggi, membayar kembali pinjaman bank dan mengantongi keuntungan arbitrase hanya dalam satu transaksi .
Memang sebagian besar pinjaman digunakan untuk tujuan ini.
Tapi volumenya sangat kecil. AAVE memiliki pinjaman lebih dari $10k sejak awal. Ini sangat kecil dibandingkan dengan pasar arbitrase dan likuidasi di DeFi.
Juga karena sebagian besar perdagangan arbitrase dilakukan oleh arbitrase kompetitif yang menjalankan program kompleks. Mereka berpartisipasi dalam lelang gas pilihan on-chain dan menggunakan token gas untuk mengoptimalkan biaya transaksi. Ini adalah pasar yang sangat kompetitif - orang-orang ini dengan senang hati menyimpan beberapa token di neraca mereka untuk mengoptimalkan pendapatan.
Di sisi lain, meminjam di AAVE menghabiskan sekitar 80 ribu gas dan membebankan 0,09% dari modal, harga yang terlalu mahal untuk membayar arbitrase kompetitif dengan margin kecil. Faktanya, di sebagian besar pedagang arbitrase AAVE, peminjam akhirnya membayar lebih banyak biaya ke kumpulan pinjaman daripada yang mereka terima.
Dalam jangka panjang, arbitrase tidak mungkin menggunakan pinjaman kilat kecuali dalam keadaan luar biasa.
Tetapi pinjaman kilat memiliki kasus penggunaan lain yang lebih menarik di DeFi. Salah satu contohnya adalah pembiayaan kembali pinjaman.
Contoh: Katakanlah Anda memiliki Maker vault (CDP) dengan $100 ETH yang terkunci di dalamnya dan Anda meminjam 40 DAI darinya. Jadi, Anda memiliki posisi bersih $60 dikurangi hutang. Sekarang Anda ingin membiayai kembali ke Compound untuk tingkat bunga yang lebih baik.
Biasanya perlu membeli kembali 40 DAI secara eksternal, mungkin di bursa itu untuk menambah CDP karena memerlukan modal di muka. Sebagai gantinya, Anda dapat mengambil pinjaman 40 DAI cepat, menutup $100 CDP, menyetor $60 ETH yang tidak dikunci menjadi Compound, mengubah $40 ETH kembali menjadi DAI melalui Uniswap dan menggunakannya untuk membayar pinjaman kilat.
Serangan pinjaman kilat memiliki implikasi keamanan yang besar
Insiden pertama berasal dari peretasan bZx dan mungkin ini adalah obor yang memicu serangan lebih lanjut.
Ada dua alasan utama mengapa pinjaman kilat sangat menarik bagi penyerang.
Banyak serangan membutuhkan banyak modal di muka (seperti serangan manipulasi oracle).
Pinjaman kilat mengurangi risiko terkena penyerang. Jika saya memiliki ide tentang bagaimana memanipulasi oracle dengan 10 juta dolar Ether, bahkan jika saya memiliki Ether sebanyak itu, saya mungkin tidak ingin mempertaruhkan modal saya. ETH saya akan terpengaruh, pertukaran dapat menolak setoran saya dan uang akan lebih sulit mengalir. Risiko yang cukup besar! Tetapi jika saya mendapatkan pinjaman $ 10 juta cepat, siapa yang peduli? Semua berlawanan. Ini tidak seperti kumpulan hipotek dYdX akan dianggap terkena dampak buruk karena dari situlah pinjamannya berasal.
Anda mungkin tidak suka bahwa daftar hitam pertukaran adalah bagian dari paradigma keamanan blockchain saat ini. Ini cukup rahasia dan fokus. Namun kenyataannya cukup penting mengingat perhitungan di balik serangan tersebut.
Dalam whitepaper Bitcoin, Satoshi menyatakan bahwa Bitcoin aman dari serangan karena:
“[Penyerang] seharusnya merasa lebih menguntungkan untuk bermain sesuai aturan […] daripada menghancurkan sistem dan nilai asetnya sendiri.”
Dengan pinjaman kilat, penyerang tidak perlu lagi menghabiskan banyak uang untuk permainan. Pinjaman kilat secara dramatis mengubah risiko penyerang.
Dan ingat, pinjaman kilat bisa menumpuk! Di bawah batas gas, Anda dapat mengumpulkan dana pinjaman cepat apa pun dalam satu transaksi (hingga $50 juta) dan membawa semua modal itu ke satu kontrak yang rentan. Ini adalah memori $ 50 juta yang sangat besar yang dapat diikuti oleh siapa pun sekarang selama ada uang. Ini sangat mengerikan!
Tentu saja, sekarang Anda tidak akan dapat menyerang protokol jika Anda hanya memiliki banyak uang. Jika DeFi seaman yang diklaim, semua ini tidak masalah, protokol seperti apa yang tidak aman terhadap paus? Tidak kecuali bahwa itu hanya kelalaian.
Namun, kita bisa melihat Ethereum sendiri terkena serangan 51% dengan harga di bawah $200k/jam. Jika model keamanan Ethereum sendiri pada dasarnya dibangun di sekitar batasan modal, mengapa kita begitu cepat berasumsi bahwa aplikasi DeFi dapat berhasil diretas hanya dengan $ 10 juta?
Bagaimana cara mengurangi serangan pinjaman kilat?
Katakanlah saya adalah protokol DeFi dan saya ingin menghindari serangan pinjaman kilat. Pertanyaan pertama, apakah saya bisa mendeteksi jika pengguna yang berinteraksi dengan saya menggunakan pinjaman kilat?
Jawaban sederhananya adalah tidak!
EVM tidak mengizinkan saudara kandung untuk membaca memori dari kontrak lain mana pun. Jadi jika Anda ingin tahu apa yang terjadi di kontrak lain, kontrak itu akan memberi tahu Anda.
Jadi, jika Anda ingin tahu apakah pinjaman kilat digunakan, Anda harus menanyakan kontraknya secara langsung. Saat ini, banyak protokol peminjaman tidak menanggapi pertanyaan semacam itu (dan tidak ada cara untuk menegakkan apa yang dilakukan pemberi pinjaman kilat).
Plus, bahkan jika Anda telah mencoba untuk menguji kueri semacam itu, mudah untuk salah arah menggunakan kontrak otorisasi atau dengan menghubungkan antara grup pinjaman cepat. Secara umum, tidak mungkin untuk mengatakan secara umum apakah deposan menggunakan pinjaman kilat atau tidak.
Sama seperti seseorang yang mengetuk pintu Anda dan berdiri di depan Anda dengan sebuah koper berisi 10 juta dolar, Anda tidak dapat mengetahui apakah itu uang mereka atau bukan. Benar?
Bagaimana cara terlindung dari serangan pinjaman kilat?
Berhenti menyediakan layanan Pinjaman Flash
Serius, mencoba membuat pemberi pinjaman berhenti menawarkan pinjaman kilat seperti mencoba menghentikan polusi suara.
Penyediaan pinjaman cepat tunduk pada kepentingan pribadi dari setiap protokol, dan ada alasan bagus mengapa penggunanya menginginkan fungsi ini. Jadi kita bisa menghapus ini dengan aman.
Memaksa transaksi penting untuk bertahan dua blok
Ingat, pinjaman kilat memungkinkan Anda meminjam uang selama satu kali transaksi. Jika Anda meminta transaksi padat modal yang mencakup dua blok, maka pengguna harus meminjam setidaknya dua blok, mengalahkan serangan pinjaman kilat apa pun. (Catatan: Agar ini berfungsi, pengguna harus mengunci nilainya di antara dua blok, mencegah mereka membayar kembali pinjaman).
Jelas, ini mengarah pada pertukaran UX: Ini berarti bahwa transaksi tidak lagi sinkron. Ini menarik bagi pengguna dan juga terlihat cukup aman.
Banyak pengembang mengeluh tentang operasi kontrak pintar yang tidak sinkron, seperti berinteraksi dengan komunikasi lapisan 2 atau cross-sharding di Ethereum 2.0.
Ironisnya, asynchrony justru membuat sistem ini aman dari serangan flash loan, karena Anda tidak dapat melewati shard atau layer 2 dalam satu transaksi kecil. Ini berarti tidak ada serangan pinjaman flash pada pecahan ETH 2.0 atau terhadap DEX lapisan 2.
Minta bukti online saldo pengguna sebelumnya
Kami dapat mengalahkan serangan pinjaman kilat jika ada beberapa cara untuk mendeteksi berapa saldo bersih pengguna - yaitu berapa saldo mereka sebelum mereka mengambil pinjaman.
Sebelum pengguna berinteraksi dengan protokol platform, platform memerlukan bukti Merkle yang membuktikan bahwa pada akhir blok sebelumnya, mereka memiliki saldo yang cukup untuk memperhitungkan modal yang mereka gunakan saat ini. Platform perlu melacak ini untuk setiap pengguna di setiap blok.
Solusi ini memiliki beberapa komplikasi: memverifikasi bukti on-chain ini sangat mahal on-chain, dan tidak ada pengguna yang bermaksud baik yang ingin membuatnya dan membayar biaya gas untuk semuanya. . Atau, pengguna mungkin telah mengubah saldo mereka sebelumnya di blok yang sama untuk alasan yang sah. Jadi secara teoritis itu memiliki beberapa kelebihan, tetapi itu bukan solusi praktis..
Tidak ada solusi tunggal yang dapat sepenuhnya mencegah serangan pinjaman kilat, tetapi dua aplikasi khusus yang dapat mengurangi serangan ini adalah: oracle harga berbasis pasar dan token tata kelola.
Untuk oracle penetapan harga berbasis pasar seperti Uniswap atau OasisDEX, serangan pinjaman kilat mencegah Anda menggunakan tarif pasar menengah saat ini seperti oracle.
Rencana penyerang adalah untuk memindahkan harga pasar rata-rata dalam satu transaksi dan membuat flash crash, merusak oracle dalam hal harga.
Solusi terbaik di sini adalah dengan menggunakan rata-rata tertimbang dari blok X terakhir melalui TWAP atau VWAP. Uniswap v2 akan memberikan solusi ini. Ada juga Polaris, pendekatan umum untuk menyediakan rata-rata bergerak untuk protokol DeFi, tetapi Polaris telah dihentikan selama bertahun-tahun.
Tata kelola on-chain biasanya ditentukan oleh pemungutan suara berbobot koin di antara pemegang token tata kelola. Tetapi jika token tata kelola itu ada dalam kumpulan pinjaman kilat, maka penyerang mana pun dapat mengambil setumpuk besar koin dan mengandalkan hasil apa pun yang mereka inginkan.
Tentu saja, sebagian besar protokol tata kelola memerlukan penguncian token selama pemungutan suara, yang membantu mengalahkan serangan pinjaman kilat. Tetapi beberapa bentuk pemungutan suara tidak mensyaratkan hal ini, seperti pemungutan suara karbon atau kontrak operasi Maker. Dengan serangan pinjaman kilat hari ini, formulir pemungutan suara ini harus dianggap benar-benar rusak.
Hal yang paling logis adalah bahwa token tata kelola sepenuhnya non-pinjaman tetapi tergantung pada pasar. Oleh karena itu, semua tindakan administratif harus memerlukan kunci untuk mencegah serangan pinjaman kilat. Token COMP baru Compound mengambil langkah lebih jauh dengan mengatur waktu semua suara protokol, langsung melemahkan bahkan serangan pinjaman sesekali terhadap token tata kelola.
Secara garis besar, semua token tata kelola harus memiliki waktu. Timelock yang mengeksekusi semua keputusan administratif harus menunggu beberapa saat sebelum berlaku (untuk Compound timelock adalah 2 hari). Ini memungkinkan sistem untuk pulih dari serangan administratif yang tidak terduga.
Artinya dalam jangka panjang
Saya percaya serangan bZx mengubah segalanya.
Ini tidak akan menjadi serangan pinjaman kilat terakhir. Serangan bZx kedua adalah klon pertama dan saya ragu itu akan menyebabkan gelombang serangan dalam beberapa bulan mendatang.
Dan itu benar-benar terjadi, sederet serangan pinjaman kilat terjadi seperti Harvest Finance ($33,8 juta), Value DeFi ($7 juta), Akro ($2 juta), Cheese Bank ($3,3 juta).USD) dan yang terbaru OUSD (7 juta USD).
Epilog
Itu mungkin salah satu motivasi Ethereum untuk segera beralih ke Ethereum 2.0. DeFi tidak stabil pada rantai PoW, jika protokol DeFi ada pada pecahan terpisah di Ethereum 2.0 , mereka tidak akan rentan terhadap pinjaman kilat.
Serangan pinjaman kilat memberi kita pengingat kecil namun berguna bahwa setiap platform baru saja dimulai, butuh waktu lama untuk mendapatkan arsitektur berkelanjutan untuk membangun sistem keuangan masa depan.
Artikel ini diterjemahkan dan diedit dari artikel asli yang diterbitkan oleh Dragonfly Research.