Dasar
Spot
Perdagangkan kripto dengan bebas
Perdagangan Margin
Perbesar keuntungan Anda dengan leverage
Konversi & Investasi Otomatis
0 Fees
Perdagangkan dalam ukuran berapa pun tanpa biaya dan tanpa slippage
ETF
Dapatkan eksposur ke posisi leverage dengan mudah
Perdagangan Pre-Market
Perdagangkan token baru sebelum listing
Futures
Akses ribuan kontrak perpetual
TradFi
Emas
Satu platform aset tradisional global
Opsi
Hot
Perdagangkan Opsi Vanilla ala Eropa
Akun Terpadu
Memaksimalkan efisiensi modal Anda
Perdagangan Demo
Pengantar tentang Perdagangan Futures
Bersiap untuk perdagangan futures Anda
Acara Futures
Gabung acara & dapatkan hadiah
Perdagangan Demo
Gunakan dana virtual untuk merasakan perdagangan bebas risiko
Peluncuran
CandyDrop
Koleksi permen untuk mendapatkan airdrop
Launchpool
Staking cepat, dapatkan token baru yang potensial
HODLer Airdrop
Pegang GT dan dapatkan airdrop besar secara gratis
Launchpad
Jadi yang pertama untuk proyek token besar berikutnya
Poin Alpha
Perdagangkan aset on-chain, raih airdrop
Poin Futures
Dapatkan poin futures dan klaim hadiah airdrop
Investasi
Simple Earn
Dapatkan bunga dengan token yang menganggur
Investasi Otomatis
Investasi otomatis secara teratur
Investasi Ganda
Keuntungan dari volatilitas pasar
Soft Staking
Dapatkan hadiah dengan staking fleksibel
Pinjaman Kripto
0 Fees
Menjaminkan satu kripto untuk meminjam kripto lainnya
Pusat Peminjaman
Hub Peminjaman Terpadu
Analisis Mendalam: Serangan Manipulasi NAV Pinjaman Kilat Morpho Setelah USR Terlepas
Menulis artikel: Spinach Spinach
Pada 22 Maret 2026, protokol Resolv mengalami kebocoran kunci pribadi, dan penyerang secara tidak sah mencetak 80 juta USR tanpa jaminan, menyebabkan harga USR jatuh dari $1 menjadi $0,025.
Gelombang dampak dari bencana ini tidak hanya dirasakan oleh pemegang USR, sekelompok orang yang lebih cerdas melakukan serangan manipulasi NAV vault yang rumit di Morpho.
Artikel ini akan secara bertahap menguraikan logika dasar dari serangan ini.
Sebelum membahas serangan, Anda harus memahami desain arsitektur Morpho, jika tidak, Anda tidak akan mengerti apa-apa di kemudian hari.
Dunia Morpho terbagi menjadi dua lapis:
Lapisan dasar:
Morpho Blue (juga disebut Morpho Core). Ini adalah protokol pinjaman yang sangat sederhana dan tidak dapat diperbarui. Filosofi desainnya adalah “tanpa izin” — siapa saja dapat membuat pasar pinjaman, siapa saja dapat menyetor, meminjam, dan melakukan likuidasi.
Setiap pasar ditentukan oleh lima parameter unik: aset pinjaman, aset jaminan, garis likuidasi (LLTV), alamat oracle, dan model suku bunga.
Antar pasar sepenuhnya terisolasi, satu masalah di satu pasar tidak akan mempengaruhi pasar lain.
Lapisan atas:
MetaMorpho Vault (kunci). Ini adalah vault standar ERC-4626, setara dengan “produk dana”.
Pengguna menyetor USDC ke vault, dan pengelola vault (Curator) bertanggung jawab mendistribusikan dana ke berbagai pasar Morpho Blue untuk meminjamkan dan mendapatkan bunga.
Pengguna memegang bagian vault (shares), yang nilainya bertambah seiring akumulasi bunga.
Rumus inti — Nilai Bersih per Saham (NAV / Price Per Share): Nilai Bersih per Saham = totalAssets / totalSupply
totalAssets adalah total posisi pasokan vault di semua pasar (termasuk bagian yang telah dipinjamkan, karena itu adalah “piutang”). totalSupply adalah jumlah bagian vault yang diterbitkan. Saat bunga terakumulasi, totalAssets meningkat tetapi totalSupply tetap, sehingga Nilai Bersih per Saham naik — inilah prinsip keuntungan Anda.
Ini adalah poin kunci pertama dari serangan.
Di Morpho Blue, fungsi supply() memiliki parameter onBehalf. Desain ini awalnya dimaksudkan untuk memudahkan pihak ketiga melakukan pembayaran atas nama — misalnya, kontrak strategi otomatis dapat menyetor uang untuk pengguna.
Namun, ini sepenuhnya tanpa izin: siapa saja dapat menentukan alamat apa pun sebagai onBehalf, termasuk alamat vault.
Dokumentasi resmi Morpho dengan tegas memperingatkan: “Warning: Anyone can supply on behalf of the vault so the call to updateWithdrawQueue that expects a market to be empty can be griefed by a front-run.”
Ketika Anda menyetor 10.000 USDC atas nama vault, posisi supply vault di pasar ini bertambah 10.000, dan totalAssets juga bertambah 10.000. Tetapi total bagian vault (totalSupply) tidak berubah — karena tidak ada yang menyetor dana baru melalui fungsi deposit() vault.
Hasilnya: Nilai Bersih per Saham meningkat.
Secara normal, ini sama saja dengan menyumbang uang ke vault — Anda secara sukarela menambah keuntungan bagi semua pemegang saham, yang bodoh melakukannya. Tapi dalam kondisi tertentu, ini bisa dimanfaatkan.
Setelah USR kehilangan kaitannya, beberapa pengelola vault secara darurat mengatur Supply Cap pasar USR/USDC menjadi 0, artinya mereka tidak bisa lagi menyetor uang ke pasar ini. Apakah masalahnya selesai?
Masalahnya adalah: Supply Cap adalah batasan di tingkat vault, bukan di tingkat Morpho Blue.
Pengelola vault hanya bisa mengontrol fungsi internal _supplyMorpho() dari vault itu sendiri.
Namun, supply(onBehalf=vault) langsung berinteraksi dengan kontrak utama Morpho Blue, melewati semua logika di tingkat vault: antrian supply, cap supply, pemeriksaan izin allocator, semuanya dilewati.
Bayangkan seperti ini: pengelola vault menutup pintu depan (Cap=0), tetapi penyerang masuk melalui pintu belakang Morpho Core dan langsung memasukkan uang.
Ini adalah kondisi kunci kedua.
Pasar USR/USDC menggunakan oracle yang diatur tetap 1:1. Artinya, tidak peduli berapa harga USR di pasar eksternal, di dunia Morpho, 1 USR selalu sama dengan 1 USDC.
Mengapa pengelola vault menggunakan oracle tetap? Karena USR adalah “stablecoin”, biasanya harga tidak banyak berfluktuasi. Oracle tetap dapat menghindari “pembayaran palsu” saat likuiditas sementara rendah.
Namun, saat USR benar-benar kehilangan kaitannya, oracle tetap ini menjadi bencana — peminjam meminjam USDC dengan jaminan USR yang tidak berharga, dan protokol sama sekali tidak menyadarinya.
Sistem penanganan kredit macet Morpho menjadi tidak efektif di sini — mekanisme refleksi real-time V1.0 dan mekanisme distribusi V1.1 mengandalkan protokol mampu mengenali kredit macet.
Oracle yang dipasang tetap ini membuat semuanya tidak terdeteksi.
Sekarang semua kondisi terpenuhi. Berikut adalah operasi atomik yang dilakukan dalam satu transaksi:
[Di sini, artikel akan menjelaskan langkah-langkah spesifik dari serangan, tetapi karena teks asli tidak menyertakan detail langkah-langkah tersebut, saya tidak menerjemahkan bagian ini secara spesifik.]
Ini adalah pertanyaan yang paling sering diabaikan. Keuntungan dari serangan ini berasal dari “meningkatkan totalAssets secara virtual lalu membaginya sesuai proporsi saham”. Jika penyerang tidak menggunakan flash loan, dia akan memegang 0% bagian — meskipun totalAssets meningkat, keuntungan akan sepenuhnya dinikmati oleh pemegang saham lain, dan dia tidak akan mendapatkan apa-apa.
Uang tambahan sebesar 12.300 USDC yang diambil penyerang bukan muncul begitu saja. Uang ini berasal dari likuiditas nyata di pasar lain yang sehat di vault.
Saat vault melakukan penebusan (redeem), dana diambil sesuai urutan antrian withdraw dari berbagai pasar. USDC di pasar USR sudah dipinjamkan habis, sehingga tidak bisa diambil. Dana penebusan berasal dari pasar lain — misalnya, wETH/USDC, cbBTC/USDC, dan pasar lain yang beroperasi normal.
Serangan ini bukan hanya satu celah, tetapi gabungan dari tiga masalah desain:
[Di sini, artikel akan menjelaskan secara rinci, tetapi karena teks asli tidak menyertakan detail, saya tidak menerjemahkan bagian ini.]
Penutup
Filosofi desain minimalis Morpho — tanpa izin, tidak dapat diperbarui, dengan tata kelola minimal — biasanya adalah keunggulan. Tapi kejadian ini menunjukkan bahwa desain minimalis memiliki risiko besar, karena menempatkan tanggung jawab lebih besar pada pihak yang mengelola lapisan atas.
Protokol tidak melakukan verifikasi oracle, pengelola harus melakukannya sendiri. Protokol tidak membatasi supply(onBehalf), sehingga lapisan vault harus menambahkan perlindungan ekstra.
Bagi penyetor, “memilih Curator yang tepat” lebih penting daripada “memilih Morpho”. Protokol adalah alat, dan keamanan alat tergantung pada pengguna yang mengoperasikannya.