Pinjaman Flash telah menjadi perhatian sejak kebelakangan ini kerana lebih banyak insiden mencuri wang daripada protokol DeFi berlaku...
Pinjaman Flash telah menjadi perhatian sejak kebelakangan ini kerana lebih banyak insiden kecurian protokol DeFi telah berlaku, daripada Harvest Finance digodam untuk lebih $33 juta kepada insiden OUSD yang terkini. Perlombongan 7 juta USD.
Dari sudut pandangan penggodam, serangan ini kelihatan seperti peluang yang baik untuk meminjam ratusan ribu dolar dengan serta-merta daripada orang yang tidak berduit dalam nilai ETH. Kemudian luluskannya melalui protokol dalam rantaian yang terdedah dan keluarkan ratusan dolar dari poket mereka dan bayar balik pinjaman mereka. Semua ini berlaku dalam sekelip mata dalam transaksi Ethereum.
Kami tidak tahu siapa penyerang ini atau dari mana mereka datang. Mereka semua bermula dengan apa-apa dan pergi dengan wang bernilai ratusan ribu dolar dan tidak meninggalkan kesan untuk dikenal pasti.
Apakah Pinjaman Flash?
Konsep pinjaman kilat pertama kali diperkenalkan oleh Max Wolff, pencipta Marble Protocol, pada 2018.
Pinjaman Flash yang biasa digunakan untuk Ethereum atau ERC20 dipinjam hanya untuk masa yang diperlukan untuk menyelesaikan satu blok transaksi pada rantaian blok. Selagi pinjaman dibayar balik sebelum blok transaksi seterusnya bermula, peminjam tidak akan dikenakan caj faedah.
Jika pemberi pinjaman tradisional menanggung dua bentuk risiko: risiko lalai atau risiko kecairan, Pinjaman Flash menyelesaikan kedua-dua masalah ini. Pada asasnya, pinjaman kilat berfungsi seperti ini:
Saya meminjamkan anda jumlah yang anda inginkan dalam satu transaksi. Tetapi pada penghujung transaksi ini anda mesti membayar balik sekurang-kurangnya jumlah yang saya pinjamkan kepada anda. Jika anda tidak membayar maka saya akan memulihkan transaksi anda secara automatik, yang bermaksud ia tidak pernah bermula.
Ini hanya wujud pada Blockchain. Anda tidak boleh membuat pinjaman kilat pada BitMex. Memandangkan kontrak pintar boleh memproses setiap urus niaga, semua yang berlaku dalam urus niaga dilaksanakan secara berurutan. Anda boleh menganggap ini sebagai "masa beku" transaksi anda semasa transaksi sedang berjalan.
Pemberi pinjaman tradisional diberi pampasan untuk dua perkara: risiko yang mereka ambil (risiko lalai dan kecairan) dan kos peluang modal yang mereka pinjamkan.
Pinjaman kilat adalah berbeza. Pinjaman kilat benar-benar tiada risiko dan tiada kos peluang! Ini kerana peminjam adalah "masa beku" sepanjang tempoh pinjaman kilat mereka jadi modal sistem tidak pernah berisiko dan tidak pernah dihalang, jadi ia tidak boleh memperoleh faedah di tempat lain. (iaitu ia tidak mempunyai kos peluang).
Ini bermakna, tiada kos untuk menjadi pemberi pinjaman kilat. Yang berkata, berapakah kos pinjaman kilat pada keseimbangan?
Pada asasnya, pinjaman kilat adalah percuma. Atau sebaliknya, yuran yang cukup kecil untuk melunaskan kos termasuk 3 baris kod tambahan supaya harta itu boleh meminjamkan dirinya dengan cepat.
Pinjaman kilat tidak boleh dikenakan faedah dengan cara tradisional, kerana pinjaman itu sah untuk masa sifar (mana-mana APR * 0 = 0). Dan sudah tentu, jika institusi yang menawarkan pinjaman kilat mengenakan kadar faedah yang lebih tinggi, mereka akan segera dikenakan kadar faedah yang lebih rendah oleh kumpulan pinjaman kilat yang lain.
Sesetengah projek pada masa ini menggunakan pinjaman kilat berbayar sifar seperti dYdX atau AAVE yang mengenakan 0.09% daripada prinsipal untuk pinjaman kilat.
Untuk apa pinjaman kilat digunakan?
Pinjaman kilat pada asalnya dikenali terutamanya untuk perdagangan arbitraj. Marble, pencipta sumber definisi pinjaman Flash, berkata:
Dengan pinjaman kilat, peniaga boleh meminjam daripada bank Marble, membeli token pada satu DEX, menjual token pada DEX lain pada harga yang lebih tinggi, membayar balik pinjaman bank dan keuntungan arbitraj poket dalam hanya satu transaksi. " .
Sesungguhnya kebanyakan pinjaman digunakan untuk tujuan ini.
Tetapi jumlahnya sangat kecil. AAVE mempunyai lebih daripada $10k pinjaman sejak penubuhannya. Ini adalah sangat kecil berbanding dengan pasaran arbitraj dan pembubaran pada DeFi.
Juga kerana kebanyakan perdagangan arbitraj dilakukan oleh penimbangtara yang kompetitif menjalankan program yang kompleks. Mereka mengambil bahagian dalam lelongan gas pilihan dalam rantaian dan menggunakan token gas untuk mengoptimumkan yuran transaksi. Ia adalah pasaran yang sangat kompetitif - orang ini sangat gembira untuk menyimpan beberapa token pada kunci kira-kira mereka untuk mengoptimumkan pendapatan.
Sebaliknya, peminjaman pada AAVE menelan kos sekitar 80K gas dan mengenakan 0.09% daripada modal, harga yang terlalu mahal untuk dibayar bagi penimbang tara yang kompetitif pada margin yang kecil. Malah, dalam kebanyakan peniaga arbitraj AAVE, peminjam akhirnya membayar lebih banyak yuran kepada kumpulan pinjaman daripada yang mereka ambil.
Dalam jangka panjang, penimbang tara tidak mungkin menggunakan pinjaman kilat kecuali dalam keadaan luar biasa.
Tetapi pinjaman kilat mempunyai kes penggunaan lain yang lebih menarik dalam DeFi. Satu contoh ialah pembiayaan semula pinjaman.
Contoh: Katakan anda mempunyai peti besi Maker (CDP) dengan $100 ETH terkunci di dalamnya dan anda meminjam 40 DAI daripadanya. Jadi anda mempunyai kedudukan bersih $60 tolak hutang. Kini anda ingin membiayai semula ke dalam Compound untuk kadar faedah yang lebih baik.
Biasanya ia perlu membeli balik 40 DAI secara luaran, mungkin pada pertukaran itu untuk menambah CDP kerana ia memerlukan sedikit modal pendahuluan. Sebaliknya, anda boleh membuat pinjaman 40 DAI dengan pantas, menutup $100 CDP, mendepositkan $60 ETH yang tidak dikunci ke dalam Kompaun, menukar $40 ETH lagi kepada DAI melalui Uniswap dan menggunakannya untuk membayar pinjaman kilat.
Serangan pinjaman kilat mempunyai implikasi keselamatan yang besar
Insiden pertama berpunca daripada penggodaman bZx dan mungkin ini adalah obor yang mencetuskan serangan selanjutnya.
Terdapat dua sebab utama mengapa pinjaman kilat amat menarik kepada penyerang.
Banyak serangan memerlukan banyak modal pendahuluan (seperti serangan manipulasi oracle).
Pinjaman kilat mengurangkan risiko pendedahan kepada penyerang. Jika saya mempunyai idea tentang cara memanipulasi oracle dengan 10 juta dolar Ether, walaupun saya memiliki Ether sebanyak itu, saya mungkin tidak mahu mempertaruhkan modal saya. ETH saya akan terjejas, pertukaran mungkin menolak deposit saya dan akan menjadi lebih sukar untuk wang mengalir. Agak risiko! Tetapi jika saya mendapat pinjaman $10 juta dengan cepat, siapa yang peduli? Semuanya bertentangan. Ia tidak seperti kumpulan gadai janji dYdX akan dianggap terjejas teruk kerana dari situlah pinjamannya datang.
Anda mungkin tidak suka bahawa senarai hitam pertukaran adalah sebahagian daripada paradigma keselamatan blockchain hari ini. Ia agak rahsia dan fokus. Tetapi realitinya agak penting memandangkan pengiraan di sebalik serangan ini.
Dalam kertas putih Bitcoin, Satoshi menyatakan bahawa Bitcoin selamat daripada serangan kerana:
“[Penyerang] sepatutnya mendapati ia lebih menguntungkan untuk bermain mengikut peraturan […] daripada memusnahkan sistem dan nilai asetnya sendiri.”
Dengan pinjaman kilat, penyerang tidak lagi perlu membelanjakan banyak wang untuk permainan. Pinjaman kilat mengubah secara mendadak risiko penyerang.
Dan ingat, pinjaman kilat boleh bertimbun! Di bawah had gas, anda boleh mengagregatkan sebarang dana yang boleh dipinjamkan dengan cepat dalam satu transaksi (sehingga $50 juta) dan membawa semua modal itu kepada satu kontrak yang terdedah. Ia adalah memori besar $50 juta yang sesiapa sahaja boleh sertai sekarang selagi ada wang. Ia sangat menakutkan!
Sudah tentu, sekarang anda tidak akan dapat menyerang protokol jika anda hanya mempunyai banyak wang. Jika DeFi selamat seperti yang didakwa, semua ini tidak penting, apakah jenis protokol yang tidak selamat terhadap ikan paus? Tidak melainkan ia hanya kecuaian.
Walau bagaimanapun, kita boleh melihat Ethereum itu sendiri tertakluk kepada serangan 51% di bawah $200k/jam. Jika model keselamatan Ethereum sendiri pada asasnya dibina berdasarkan kekangan modal, mengapa kita begitu cepat menganggap bahawa aplikasi DeFi boleh berjaya digodam dengan harga serendah $10 juta?
Bagaimana untuk mengurangkan serangan pinjaman kilat?
Katakan saya adalah protokol DeFi dan saya mahu mengelak daripada diserang oleh pinjaman kilat. Soalan pertama, bolehkah saya mengesan jika pengguna yang berinteraksi dengan saya menggunakan pinjaman kilat?
Jawapan mudahnya ialah tidak!
EVM tidak membenarkan adik beradik membaca memori daripada mana-mana kontrak lain. Jadi jika anda ingin tahu apa yang berlaku dalam kontrak lain, kontrak itu akan memberitahu anda.
Jadi, jika anda ingin tahu sama ada pinjaman kilat digunakan, anda perlu bertanya kontrak secara terus. Hari ini, banyak protokol pinjaman tidak menjawab pertanyaan sedemikian (dan tidak ada cara untuk menguatkuasakan perkara yang dilakukan oleh pemberi pinjaman ekspres).
Selain itu, walaupun anda telah mencuba untuk menguji sebarang pertanyaan sedemikian, mudah untuk disalah arah menggunakan kontrak kebenaran atau dengan memautkan antara kumpulan pinjaman cepat. Secara umum, tidak mungkin untuk mengatakan secara umum sama ada pendeposit menggunakan pinjaman kilat atau tidak.
Sama seperti seseorang mengetuk pintu anda dan berdiri di hadapan anda dengan beg pakaian yang mengandungi 10 juta dolar, anda tidak dapat mengetahui sama ada itu wang mereka atau tidak. Betul ke?
Bagaimana untuk dilindungi daripada serangan pinjaman kilat?
Berhenti menyediakan perkhidmatan Pinjaman Kilat
Serius, cuba mendapatkan pemberi pinjaman untuk berhenti menawarkan pinjaman kilat adalah seperti cuba menghentikan pencemaran bunyi.
Penyediaan pinjaman pantas tertakluk kepada kepentingan peribadi setiap protokol, dan terdapat sebab yang baik mengapa pengguna mereka mahukan fungsi ini. Jadi kita boleh mengalih keluar ini dengan selamat.
Memaksa transaksi penting untuk bertahan dua blok
Ingat, pinjaman kilat membolehkan anda meminjam wang untuk tempoh satu transaksi. Jika anda meminta transaksi berintensif modal yang merangkumi dua blok, maka pengguna mesti meminjam sekurang-kurangnya dua blok, mengalahkan sebarang serangan pinjaman kilat. (Nota: Untuk ini berfungsi, pengguna mesti mengunci nilai mereka antara dua blok, menghalang mereka daripada membayar balik pinjaman).
Jelas sekali, ini membawa kepada pertukaran UX: Ini bermakna urus niaga tidak akan disegerakkan lagi. Ia menarik kepada pengguna dan juga kelihatan agak selamat.
Ramai pembangun mengadu tentang operasi kontrak pintar tak segerak, seperti berinteraksi dengan komunikasi lapisan 2 atau pemecahan silang dalam Ethereum 2.0.
Ironinya, asynchrony sebenarnya menjadikan sistem ini selamat daripada serangan pinjaman kilat, kerana anda tidak boleh melalui serpihan atau lapisan 2 dalam satu transaksi kecil. Ini bermakna tiada serangan pinjaman kilat pada serpihan ETH 2.0 atau terhadap DEX lapisan 2.
Minta bukti dalam talian tentang baki pengguna sebelumnya
Kami boleh mengalahkan serangan pinjaman kilat jika terdapat beberapa cara untuk mengesan baki bersih pengguna - iaitu berapa baki mereka sebelum mereka membuat pinjaman.
Sebelum pengguna berinteraksi dengan protokol platform, platform memerlukan bukti Merkle yang membuktikan bahawa pada penghujung blok sebelumnya, mereka mempunyai baki yang mencukupi untuk mengakaunkan modal yang sedang mereka gunakan. Platform perlu menjejaki ini untuk setiap pengguna dalam setiap blok.
Penyelesaian ini mempunyai beberapa komplikasi: mengesahkan bukti dalam rantai ini adalah sangat mahal dalam rantaian, dan tiada pengguna yang berniat baik mahu menjananya dan membayar yuran gas untuk keseluruhannya. . Sebagai alternatif, pengguna mungkin telah menukar baki mereka lebih awal dalam blok yang sama atas sebab-sebab yang sah. Jadi secara teorinya ia mempunyai beberapa merit, tetapi ia bukan penyelesaian praktikal..
Tiada penyelesaian tunggal yang boleh menghalang sepenuhnya serangan pinjaman kilat, tetapi dua aplikasi khusus yang boleh mengurangkan serangan ini ialah: oracle harga berasaskan pasaran dan token tadbir urus.
Untuk oracle penentuan harga berasaskan pasaran seperti Uniswap atau OasisDEX, serangan pinjaman kilat menghalang anda daripada menggunakan kadar pasaran pertengahan semasa seperti oracle.
Rancangan penyerang adalah untuk memindahkan purata harga pasaran dalam satu transaksi dan mencipta ranap kilat, merosakkan oracle dari segi harga.
Penyelesaian terbaik di sini ialah menggunakan purata wajaran blok X terakhir melalui TWAP atau VWAP. Uniswap v2 akan menyediakan penyelesaian ini. Terdapat juga Polaris, pendekatan umum untuk menyediakan purata bergerak untuk protokol DeFi, tetapi Polaris telah dihentikan selama bertahun-tahun.
Tadbir urus dalam rantaian biasanya ditentukan oleh undian berwajaran syiling dalam kalangan pemegang token tadbir urus. Tetapi jika token tadbir urus tersebut berada dalam kumpulan pinjaman kilat, maka mana-mana penyerang boleh mengambil timbunan syiling yang besar dan bergantung pada apa sahaja hasil yang mereka inginkan.
Sudah tentu, kebanyakan protokol tadbir urus memerlukan penguncian token semasa pengundian, yang membantu mengalahkan serangan pinjaman kilat. Tetapi beberapa bentuk pengundian tidak memerlukan ini, seperti pengundian karbon atau kontrak operasi Maker. Dengan serangan pinjaman kilat hari ini, borang pengundian ini harus dianggap rosak sepenuhnya.
Perkara yang paling logik ialah token tadbir urus sepenuhnya tidak memberi pinjaman tetapi ia bergantung kepada pasaran. Oleh itu, semua tindakan pentadbiran harus memerlukan kunci untuk mengelakkan serangan pinjaman kilat. Token COMP baharu Compound membawanya selangkah lebih jauh dengan menetapkan masa semua undian protokol, serta-merta melemahkan walaupun serangan pinjaman sekali-sekala terhadap token tadbir urus.
Secara umum, semua token tadbir urus mesti mempunyai masa. Kunci masa yang melaksanakan semua keputusan pentadbiran mesti menunggu tempoh masa sebelum ia berkuat kuasa (untuk Kunci masa Kompaun ialah 2 hari). Ini membolehkan sistem pulih daripada sebarang serangan pentadbiran yang tidak dijangka.
Maknanya dalam jangka masa panjang
Saya percaya serangan bZx mengubah segala-galanya.
Ini bukan serangan pinjaman kilat terakhir. Serangan bZx kedua adalah klon pertama dan saya ragu ia akan menyebabkan gelombang serangan dalam beberapa bulan akan datang.
Dan itu berlaku sepenuhnya, berturut-turut serangan pinjaman kilat berlaku seperti Harvest Finance ($33.8 juta), Value DeFi ($7 juta), Akro ($2 juta), Cheese Bank ($3.3 juta). USD) dan terbaru OUSD (7 ). juta USD).
Epilog
Itu mungkin salah satu motivasi untuk Ethereum cepat beralih kepada Ethereum 2.0. DeFi tidak stabil pada rantaian PoW, jika protokol DeFi wujud pada serpihan berasingan pada Ethereum 2.0 , mereka tidak akan terdedah kepada pinjaman kilat.
Serangan pinjaman kilat memberi kita peringatan kecil tetapi berguna bahawa setiap platform baru bermula, ia mengambil masa yang lama untuk mendapatkan seni bina yang mampan untuk membina sistem kewangan masa hadapan.
Artikel tersebut diterjemahkan dan disunting daripada artikel asal yang diterbitkan oleh Dragonfly Research.