@UniLend_Financeadalah protokol pasar uang terdesentralisasi tanpa izin dengan layanan pinjaman dan peminjaman melalui kontrak pintar.
UniLend memungkinkan pengguna untuk menggunakan kripto mereka dengan menyediakan jaminan kepada jaringan yang dapat dipinjam dengan jaminan kripto yang lebih tinggi. Ini menciptakan lingkungan peminjaman yang aman di mana pemberi pinjaman menerima tingkat bunga yang terakumulasi setiap tahunnya (APY) yang dibayarkan per blok sementara peminjam membayar bunga atas kripto yang dipinjam.
Protokol UniLend V2 berfungsi melalui tiga komponen teknis utama:
1. Model Dual Aset Kolam
UniLend menggunakan kolam aset ganda terisolasi untuk setiap pasangan ERC20/ERC20-kompatibel. Desain ini memastikan bahwa kinerja atau volatilitas satu aset tidak memengaruhi yang lain, meningkatkan keamanan dan stabilitas. Arsitektur ini memungkinkan pengguna untuk membuat dan mengelola kolam pinjaman dan pinjaman untuk berbagai aset di beberapa blockchain.
2. Pasokan dan Peminjaman
3. Model Tingkat Bunga
UniLend menggunakan model suku bunga dinamis berdasarkan Rasio Utilisasi (U) pool, yang dihitung sebagai:
Ux=PinjamxBerimbalax+Uangx
Tingkat Bunga Pinjaman:
Bunga Pinjamanx=10%+(Ux×30%)
Tarif meningkat dengan penggunaan yang lebih tinggi untuk menyeimbangkan pasokan dan permintaan.
Suku bunga Pasokanx = Suku bunga Pinjamx × Ux × (1−S)
Ini memastikan para pemasok mendapatkan pengembalian yang berkelanjutan sementara protokol tetap menguntungkan.
Komponen-komponen ini bekerja bersama untuk menciptakan pasar uang terdesentralisasi yang aman, efisien, dan dapat diskalakan.
Pada tanggal 12 Januari 2025, terjadi kerentanan keamanan pada protokol UniLend yang dieksploitasi, mengakibatkan kerugian sekitar $200,000 dari UniLend Pool. Penyerang memanipulasi perhitungan jaminan yang secara salah menilai faktor kesehatan pengguna. Kekurangan ini memungkinkan penyerang menarik 60 token stETH tanpa jaminan yang memadai.
Aset yang dicuri termasuk 60 token stETH, memanfaatkan kesalahan perhitungan saldo token pengguna dalam protokol.
Penyerang memulai serangan dengan memanfaatkan pinjaman flash untuk mendepositokan sejumlah besar USDC ke dalam kolam UniLend. Secara khusus, mereka mendepositokan 60 juta USDC, yang secara signifikan meningkatkan jaminan mereka di dalam kolam.
Pinjaman kilat memungkinkan pengguna meminjam sejumlah besar aset tanpa agunan, asalkan jumlah yang dipinjam dikembalikan dalam transaksi yang sama.
Penyerang menggunakan mekanisme ini untuk memperoleh USDC yang diperlukan tanpa modal awal, sehingga menciptakan posisi yang terlalu tinggi secara artifisial dalam kolam.
Setelah menyetor USDC, penyerang melanjutkan untuk meminjam token stETH. Protokol menghitung nilai jaminan pengguna berdasarkan saldo token mereka dalam kumpulan. Namun, karena implementasi yang cacat, saldo dihitung menggunakan saldo token saat ini dalam kontrak kumpulan daripada jumlah transfer aktual selama pemeriksaan faktor kesehatan. Perbedaan ini berarti bahwa saldo token pengguna tampak jauh lebih tinggi daripada yang sebenarnya, terutama di kolam dengan likuiditas besar.
Akar dari manipulasi ini terletak pada fungsi userBalanceOfToken. Dalam skenario di mana pool memiliki likuiditas yang substansial, fungsi ini dapat mengembalikan lendBalance yang tinggi bahkan ketika hanya ada sedikit saham lend yang tersisa. Overestimasi saldo pengguna memberikan ilusi kepada penyerang bahwa mereka memiliki lebih banyak jaminan daripada yang sebenarnya mereka miliki. Akibatnya, penyerang dapat meminjam token stETH melebihi hak yang sebenarnya berdasarkan jaminan mereka yang sebenarnya.
Dengan nilai agunan yang terlalu tinggi, penyerang melanjutkan untuk menebus USDC dan stETH mereka. Fungsi redeemUnderlying dipanggil, yang membakar token LP yang terkait dengan deposit pengguna. Namun, karena pemeriksaan faktor kesehatan yang cacat terjadi sebelum transfer token, sistem percaya bahwa pengguna memiliki agunan yang cukup untuk menarik lebih dari yang seharusnya. Kelemahan ini memungkinkan penyerang untuk menarik 60 token stETH tanpa mempertahankan agunan yang diperlukan, efektif memperoleh token-token ini secara gratis.
Untuk mencegah serangan tersebut, UniLend seharusnya mengurutkan operasi dalam fungsi redeemUnderlying. Dengan melakukan pemeriksaan faktor kesehatan setelah mentransfer token ke pengguna, protokol akan memastikan bahwa saldo token sebenarnya pengguna mencerminkan dengan akurat status jaminan mereka.
Keamanan blockchain bukanlah pilihan. Lindungi kontrak pintar dan protokol DeFi Anda dengan Three Sigma, mitra keamanan terpercaya dalam audit blockchain, penilaian kerentanan kontrak pintar, dan keamanan Web3.
Klik untukDapatkan Audit Kontrak Pintar Anda Hari Ini.
Eksploitasi UniLend mengakibatkan kerugian keuangan yang signifikan sekitar $200.000 dari kolam UniLend. Kerugian yang besar ini secara langsung memengaruhi cadangan platform dan mengurangi likuiditas yang tersedia untuk pengguna lain, berpotensi mengganggu kegiatan pemberian pinjaman dan peminjaman yang sedang berlangsung.
Setelah terjadi eksploitasi, UniLend segera mengambil langkah-langkah untuk mengatasi kerentanan dan meyakinkan pengguna basisnya.
Mereka mengumumkan hadiah sebesar 20% kepada pihak yang bertanggung jawab atas pengembalian dana dengan aman.
Alamat
Transaksi Serangan:
Alamat Eksploiter:
Alamat UnilendV2Core:
@UniLend_Financeadalah protokol pasar uang terdesentralisasi tanpa izin dengan layanan pinjaman dan peminjaman melalui kontrak pintar.
UniLend memungkinkan pengguna untuk menggunakan kripto mereka dengan menyediakan jaminan kepada jaringan yang dapat dipinjam dengan jaminan kripto yang lebih tinggi. Ini menciptakan lingkungan peminjaman yang aman di mana pemberi pinjaman menerima tingkat bunga yang terakumulasi setiap tahunnya (APY) yang dibayarkan per blok sementara peminjam membayar bunga atas kripto yang dipinjam.
Protokol UniLend V2 berfungsi melalui tiga komponen teknis utama:
1. Model Dual Aset Kolam
UniLend menggunakan kolam aset ganda terisolasi untuk setiap pasangan ERC20/ERC20-kompatibel. Desain ini memastikan bahwa kinerja atau volatilitas satu aset tidak memengaruhi yang lain, meningkatkan keamanan dan stabilitas. Arsitektur ini memungkinkan pengguna untuk membuat dan mengelola kolam pinjaman dan pinjaman untuk berbagai aset di beberapa blockchain.
2. Pasokan dan Peminjaman
3. Model Tingkat Bunga
UniLend menggunakan model suku bunga dinamis berdasarkan Rasio Utilisasi (U) pool, yang dihitung sebagai:
Ux=PinjamxBerimbalax+Uangx
Tingkat Bunga Pinjaman:
Bunga Pinjamanx=10%+(Ux×30%)
Tarif meningkat dengan penggunaan yang lebih tinggi untuk menyeimbangkan pasokan dan permintaan.
Suku bunga Pasokanx = Suku bunga Pinjamx × Ux × (1−S)
Ini memastikan para pemasok mendapatkan pengembalian yang berkelanjutan sementara protokol tetap menguntungkan.
Komponen-komponen ini bekerja bersama untuk menciptakan pasar uang terdesentralisasi yang aman, efisien, dan dapat diskalakan.
Pada tanggal 12 Januari 2025, terjadi kerentanan keamanan pada protokol UniLend yang dieksploitasi, mengakibatkan kerugian sekitar $200,000 dari UniLend Pool. Penyerang memanipulasi perhitungan jaminan yang secara salah menilai faktor kesehatan pengguna. Kekurangan ini memungkinkan penyerang menarik 60 token stETH tanpa jaminan yang memadai.
Aset yang dicuri termasuk 60 token stETH, memanfaatkan kesalahan perhitungan saldo token pengguna dalam protokol.
Penyerang memulai serangan dengan memanfaatkan pinjaman flash untuk mendepositokan sejumlah besar USDC ke dalam kolam UniLend. Secara khusus, mereka mendepositokan 60 juta USDC, yang secara signifikan meningkatkan jaminan mereka di dalam kolam.
Pinjaman kilat memungkinkan pengguna meminjam sejumlah besar aset tanpa agunan, asalkan jumlah yang dipinjam dikembalikan dalam transaksi yang sama.
Penyerang menggunakan mekanisme ini untuk memperoleh USDC yang diperlukan tanpa modal awal, sehingga menciptakan posisi yang terlalu tinggi secara artifisial dalam kolam.
Setelah menyetor USDC, penyerang melanjutkan untuk meminjam token stETH. Protokol menghitung nilai jaminan pengguna berdasarkan saldo token mereka dalam kumpulan. Namun, karena implementasi yang cacat, saldo dihitung menggunakan saldo token saat ini dalam kontrak kumpulan daripada jumlah transfer aktual selama pemeriksaan faktor kesehatan. Perbedaan ini berarti bahwa saldo token pengguna tampak jauh lebih tinggi daripada yang sebenarnya, terutama di kolam dengan likuiditas besar.
Akar dari manipulasi ini terletak pada fungsi userBalanceOfToken. Dalam skenario di mana pool memiliki likuiditas yang substansial, fungsi ini dapat mengembalikan lendBalance yang tinggi bahkan ketika hanya ada sedikit saham lend yang tersisa. Overestimasi saldo pengguna memberikan ilusi kepada penyerang bahwa mereka memiliki lebih banyak jaminan daripada yang sebenarnya mereka miliki. Akibatnya, penyerang dapat meminjam token stETH melebihi hak yang sebenarnya berdasarkan jaminan mereka yang sebenarnya.
Dengan nilai agunan yang terlalu tinggi, penyerang melanjutkan untuk menebus USDC dan stETH mereka. Fungsi redeemUnderlying dipanggil, yang membakar token LP yang terkait dengan deposit pengguna. Namun, karena pemeriksaan faktor kesehatan yang cacat terjadi sebelum transfer token, sistem percaya bahwa pengguna memiliki agunan yang cukup untuk menarik lebih dari yang seharusnya. Kelemahan ini memungkinkan penyerang untuk menarik 60 token stETH tanpa mempertahankan agunan yang diperlukan, efektif memperoleh token-token ini secara gratis.
Untuk mencegah serangan tersebut, UniLend seharusnya mengurutkan operasi dalam fungsi redeemUnderlying. Dengan melakukan pemeriksaan faktor kesehatan setelah mentransfer token ke pengguna, protokol akan memastikan bahwa saldo token sebenarnya pengguna mencerminkan dengan akurat status jaminan mereka.
Keamanan blockchain bukanlah pilihan. Lindungi kontrak pintar dan protokol DeFi Anda dengan Three Sigma, mitra keamanan terpercaya dalam audit blockchain, penilaian kerentanan kontrak pintar, dan keamanan Web3.
Klik untukDapatkan Audit Kontrak Pintar Anda Hari Ini.
Eksploitasi UniLend mengakibatkan kerugian keuangan yang signifikan sekitar $200.000 dari kolam UniLend. Kerugian yang besar ini secara langsung memengaruhi cadangan platform dan mengurangi likuiditas yang tersedia untuk pengguna lain, berpotensi mengganggu kegiatan pemberian pinjaman dan peminjaman yang sedang berlangsung.
Setelah terjadi eksploitasi, UniLend segera mengambil langkah-langkah untuk mengatasi kerentanan dan meyakinkan pengguna basisnya.
Mereka mengumumkan hadiah sebesar 20% kepada pihak yang bertanggung jawab atas pengembalian dana dengan aman.
Alamat
Transaksi Serangan:
Alamat Eksploiter:
Alamat UnilendV2Core: