Revest Finance kena Hack Rp. 2,87 M Hilang

Sumber : Rekt News

~$2 juta diambil dari Revest Finance.

Platform NFT keuangan yang “menawarkan likuiditas instan untuk aset terkunci”, menjadi korban serangan reentrancy.

Reaksi cepat dari tim Revest mencegah mereka kehilangan lebih banyak dana, namun mereka tetap menempati papan peringkat (#67).

Bagaimana hal itu terjadi?

Tim Revest diberitahu tentang “eksploitasi pada 2:24 UTC dari tim pengembangan BLOCKS DAO”.

Selain BLOK DAO, kerugian yang cukup besar juga dialami oleh EcoFi dan RENA Finance.

Dengan menghentikan transfer token RVST, tim menggagalkan upaya penyerang (70 detik kemudian) untuk menguras kumpulan RVST-ETH di Uniswap, menghindari kerugian $1,15 juta lebih lanjut.

Dump penyerang dari token yang dicuri berdampak besar pada harga BLOK (awalnya turun >95%, saat ini turun ~80%) dan ECO (turun ~98%), namun token RENA tetap tidak tersentuh di alamat penyerang.

Kredit: @BlockSecTeam

Akar penyebab serangan itu karena kerentanan reentrancy dalam kontrak pencetakan ERC1155 (contoh tx: RENA)

Fungsi mintAddressLock, yang digunakan untuk membuat Smart Vaults baru, berisi dua parameter penting: kuantitas dan depositAmount.

Revest Vault menjalankan fungsi mint FNFTHandler, untuk mencetak jumlah ERC1155 dengan fnftId berikutnya ke penerima yang nantinya dapat dibakar untuk mengklaim proporsi posisi dari token yang dikunci. fnftId bertambah 1 setiap kali fungsi dijalankan.

Dana ekstra dapat disetorkan ke FNFT menggunakan fungsi depositAdditionalToFNFT, setoran harus dalam proporsi yang sama seperti yang ditentukan oleh kuantitas, khususnya: quantity==FNFTHandler.getSupply(fnftId).

Jika pernyataan di atas tidak terpenuhi, bagian pengguna akan diambil dari posisi dan ditransfer ke FNFT baru dengan saldo yang ditentukan oleh Jumlah setoran posisi yang ada ditambah jumlah yang baru disetorkan.

Mengingat bahwa jumlah deposit posisi yang ada digunakan, tetapi fnftId (diinformasikan melalui fnftsCreated) tidak diperbarui hingga akhir rutinitas pencetakan, masuk kembali pada saat ini memungkinkan dana tambahan ditambahkan ke posisi yang ada.

Selangkah demi selangkah:

1: Penyerang menggunakan fungsi mintAddressLock untuk membuka posisi baru dengan fnftId=1027, depositAmount=0, kuantitas=[2], aset=Rena, dan penerima=[kontrak jahat]. Karena jumlah depositJumlah X[0] = 0 X 2 = 0, penyerang mentransfer nol Rena.

2: Penyerang menggunakan fungsi mintAddressLock lagi untuk membuka posisi baru dengan fnftId=1028, depositAmount=0, kuantitas=360.000, aset=Rena, dan penerima=[kontrak jahat]. Sekali lagi, penyerang mentransfer nol Rena dan menerima 360.000 token (dengan fnftId=1028). Perhatikan bahwa 1028-token ini tidak memiliki nilai sekarang.

3: Pada akhir Langkah 2, selama fungsi mint FNFTHandler, penyerang memasuki kembali kontrak Revest melalui antarmuka onERC1155Received. Fungsi depositAdditionalToFNFT digunakan dengan jumlah = 1e18, quantity=1, fnftId=1027, yang biasanya akan membuka posisi fnftId=1029 (baru). Namun, karena keterlambatan dalam memperbarui fnftId, posisi 1028 ditimpa dengan data di atas, memberikan nilai pada 1028 token yang dimiliki oleh penyerang.

4: Penyerang menggunakan fungsi withdrawFNFT untuk menarik 360.000 X 1e18 token Rena setelah hanya menyetorkan 1 jumlah X 1e18 token Rena di Langkah 3.

Kerugian token (total sekitar $2 juta) menurut laporan post-mortem resmi:

350rb RENA (~$125rb, masih di alamat penyerang)

715 juta BLOK (~$1,7 juta)

7.7M ECO (~$100rb)

Jumlah yang lebih kecil ($10-$12K) dari ConstitutionDAO dan LUKSO juga dicuri.

Setelah menukar sebagian besar token yang dicuri untuk ETH, penyerang menyetorkan dana ke Tornado Cash.

Pelanggaran keamanan tidak pernah terlihat bagus untuk protokol DeFi, terutama ketika produknya adalah loker yang aman untuk dipercaya dengan token proyek lain.

“Satu audit tidak pernah cukup” kata Revest, karena mereka menemukan bahwa kerentanan tidak diambil dalam audit proyek (solidity.finance).

Tanggapan cepat tim dan pemeriksaan post-mortem yang menyeluruh adalah tanda-tanda yang menjanjikan, dan meskipun Revest telah menyatakan bahwa “kami tidak memiliki dana yang diperlukan untuk kompensasi finansial yang berarti”, laporan postmortem menekankan keinginan untuk memperbaiki keadaan di masa depan.

Saat ini, tidak jelas bagaimana itu akan terjadi.

Leave a Reply