REVEST FINANCE - REKT



Yaklaşık 2 milyon dolar Revest Finance'ten karanlığa karıştı.

“Kilitli varlıklar için anında likidite sunan” bir finansal NFT platformu, re-entrancy saldırısının kurbanı oldu.

Revest ekibinin hızlı tepkisi, daha fazla para kaybetmelerini engelledi, ancak yine de lider tablosunda (#67) yer almaktan kurtulamadılar.

Peki bu nasıl oldu?

Revest ekibine BLOCKS DAO geliştirme ekibi saat 2:24 UTC'de istismar işlemi yapıldığı ile igili bilgi verdi.

BLOCKS DAO'ya ek olarak, EcoFi ve RENA Finance'de önemli kayıplar yaşadı.

Ekip, RVST tokenlarının transferini durdurarak, saldırganın Uniswap'taki RVST-ETH havuzunu boşaltma girişimini (70 saniye ile) engelledi ve 1,15 milyon dolarlık daha para kaybının önünü kesmiş oldu.

Saldırganın çalınan tokenları boşaltması, BLOCKS (başlangıçta %95’in üzerinde düşüş, şu an için yaklaşık %80) ve ECO (yaklaşık %98 düşüş) fiyatı üzerinde büyük bir etkiye sebep oldu, ancak RENA tokenları ise saldırganın adresinde dokunulmamış şekilde duruyor.

Kaynak: @BlockSecTeam

Saldırının temeli, ERC1155 mint sözleşmesindeki yeniden giriş güvenlik açığından kaynaklanıyordu. (örnek tx: RENA)

Yeni akıllı kasalar oluşturmak için kullanılan mintAddressLock fonksiyonu iki kritik parametre içermektedir: quantities ve depositAmount.

Revest kasası, pozisyonun kilitli token oranını talep etmek için daha sonra yakılabilen bir sonraki fnftId ile alıcılara ERC1155 quantities'deki miktarını basmak için FNFTHandler'ın mint fonksiyonunu çağırır. fnftId fonksiyonu her yürütüldüğünde 1 artar.

FNFT'ye depositAdditionalToFNFT fonksiyonu kullanılarak fazladan para yatırılabilir, yatırmalar quantities ile tanımlanan oranda olmalıdır, özellikle de: quantity==FNFTHandler.getSupply(fnftId).

Yukarıda belirtilen yerine getirilmezse, kullanıcının payı pozisyondan çekilecek ve mevcut pozisyonun depositAmount‘u artı yeni yatırılan tutar tarafından tanımlanan bakiye ile yeni bir FNFT'ye aktarılacaktır.

Mevcut pozisyonun depositAmount'unun kullanıldığı, ancak fnftId'nin (fnftsCreated aracılığıyla bilgilendirilir) mint etme rutininin sonuna kadar güncellenmediği göz önüne alındığında, bu noktada yeniden giriş (re-entrancy), mevcut bir pozisyona ek fonların eklenmesine izin verir.

Adımlar:

1: Saldırgan mintAddressLock fonksiyonunu kullanarak fnftId=1027, depositAmount=0, quantities=[2], asset=Rena, ve recipients=[malicious contract] ile yeni bir pozisyon açar. depositAmount X quantities[0] = 0 X 2 = 0 olduğundan, saldırgan sıfır Rena aktarır.

2: Saldırgan mintAddressLock fonksiyonunu fnftId=1028, depositAmount=0, quantities=360,000, asset=Rena, ve recipients=[malicious contract] ile yeni bir pozisyon açmak için tekrar kullanır. Yine, saldırgan sıfır Rena aktarır ve 360,000 token alır (fnftId=1028 ile). Bu 1028 tokenın artık bir değeri olmadığını unutmayın.

3: Adım 2'nin sonunda, FNFTHandler'ın mint fonksiyonu sırasında, saldırgan onERC1155Received arabirimi aracılığıyla Revest kontratına yeniden girer. depositAdditionalToFNFT fonksiyonu, normalde fnftId=1029 (yeni) konumunu açacak olan amount = 1e18, quantities=1, fnftId=1027 ile kullanılır. Ancak fnftId, güncellemesindeki gecikme nedeniyle, saldırganın sahip olduğu 1028 tokena değer atanarak, yukarıdaki veriler 1028 konumunun üzerine yazılır.

4: Saldırgan, 3. Adımda yalnızca 1 quantity X 1e18 Rena token yatırdıktan sonra 360,000 X 1e18 Rena tokenını geri çekmek için withdrawFNFT fonksiyonunu kullanır.

Resmi otopsi raporuna göre token kayıpları (toplamda yaklaşık 2 milyon dolar):

350k RENA ( yaklaşık 125 bin dolar hâlâ saldırganın adresinde)

715M BLOCKS ( yaklaşık 1,7 milyon dolar)

7,7M ECO (yaklaşık 100 bin dolar)

Düşük miktarlarda (10-12 bin dolar) ConstitutionDAO ve LUKSO da çalınanlar arasında.

Saldırgan, çalınan tokenların çoğunu ETH ile swapladıktan sonra, Tornado Cash'e gönderdi.

Bir güvenlik ihlali, özellikle protokolün ürünü diğer projelerin tokenlarının güvenilip emanet edildiği bir saklama yeri olduğunda, bu durum bir DeFi protokolü için asla iyi bir imaj değildir.

Güvenlik açığının proje denetiminde (solidity.finance) ele alınmadığını tespit ettikleri için Revest, “Tek bir denetim asla yeterli değildir” diyor.

Ekibin hızlı müdahalesi ve kapsamlı otopsi raporu umut verici işaretlerdir ve Revest “Anlamlı bir finansal tazminat için gereken fonlara sahip değiliz” dese de, otopsi raporu gelecekte işleri düzeltme arzularını ve samimiyetlerini vurguluyor.

Şu anda ise bunun nasıl olacağı hiç belli değil.


bu makaleyi paylaş

REKT, anonim yazarlar için halka açık bir platform olarak hizmet eder, REKT'te bulunan görüşler veya içerik için hiçbir sorumluluk kabul etmiyoruz.

bağış yap (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

sorumluluk reddi:

REKT, Web Sitemizde veya hizmetlerimizle bağlantılı olarak web sitemizin ANON yazarı veya REKT tarafından gönderilen, yayınlanan veya neden olunan hiçbir içerikten hiçbir şekilde sorumlu veya yükümlü değildir. Anon yazarın davranışları ve gönderileri için kurallar sağlamamıza rağmen, onun web sitemizde veya hizmetlerimizde yayınladığı, ilettiği veya paylaştığı şeylerden sorumlu değiliz veya web sitemizde ve hizmetlerimizde karşılaşabileceğiniz herhangi bir saldırgan, uygunsuz, müstehcen, yasa dışı veya başka şekilde sakıncalı olan içerikten sorumlu değiliz. REKT, Web Sitemizin veya Hizmetlerimizin herhangi bir kullanıcısının çevrimiçi veya çevrimdışı davranışlarından sorumlu değildir.