18 Ekim 2023 Pekin saatiyle 19:48:59'da Hope.money'nin borç verme havuzuna flaş krediler nedeniyle saldırı düzenlendi.
Hope.money, HopeLend borç verme platformu, HopeSwap merkezi olmayan borsa, stablecoin $HOPE ve yönetişim tokeni $LT dahil olmak üzere tam yığın merkezi olmayan bir finansal hizmet oluşturdu.
Saldırıya dahil olan protokol, kullanıcıların protokole likidite sağlamasına veya gelir elde etmek için aşırı teminatlandırmasına olanak tanıyan merkezi olmayan bir borç verme platformu olan HopeLend'dir.
Etkinlik başlangıcı ve bitişi
HopeLend'in kod uygulamasında, mevduat sertifikalarını yok ederken yanlış tamsayı bölme sorunu nedeniyle borç verme havuzunda istismar edilebilir bir güvenlik açığı vardı, bu da ondalık noktanın kesilmesine, beklenenden daha az sertifikanın imha edilmesine ve beklendiği gibi aynı değerde tokenlerin elde edilmesine neden oldu.
Saldırgan, Hope.money'deki birden fazla borç verme havuzunu boşaltmak için bu kusurdan yararlandı.
hEthWbtc borç verme havuzu 73 gün önce konuşlandırıldı, ancak içinde fon yoktu, bu nedenle bilgisayar korsanları, indirim oranını önemli ölçüde artırmak için borç verme havuzuna büyük miktarlarda para enjekte etti ve böylece bir blok işlemindeki diğer tüm borç verme havuzlarını hızla boşalttı.
Daha dramatik bir şekilde, istismar edilen bilgisayar korsanı, istismar için fonları almadı ve saldırı işlemi, saldırısını taklit eden ve tüm saldırı geliri fonlarını (527 ETH) başarıyla çalan kapkaççı tarafından keşfedildi ve sonunda saldırı geliri fonlarının %50'si (263 ETH) soyguncular tarafından bloğu (yük) paketleyen madencilere rüşvet vermek için kullanıldı.
Güvenlik açığını keşfeden ilk hacker, blok 18377039'de bir saldırı sözleşmesi oluşturdu ve blok 18377042'de sözleşmeye saldırmak için bir çağrı yaptı, bu sırada kapkaççı bellek havuzundaki işlemi izledi ve kapkaç sözleşmesinin girdisi olarak saldırı sözleşmesini simüle etti ve aynı 18377042 bloğunda kullandı ve ilk bilgisayar korsanının 18377042. bloktaki işlemi, kapkaççının arkasında sıralandığı için başarısız oldu.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-420dceb701-dd1a6f-69ad2a.webp)
Para nereye gidiyor
Kapkaççı geliri aldıktan bir saat sonra, fonlar şu adrese aktarılır: 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-2bec7812fd-dd1a6f-69ad2a.webp)
20 Ekim günü saat 13:30:23'te şüpheli resmi ekip adresle iletişime geçerek koşucuların ödül olarak 26 ETH (%10 kar) bırakmasına ve koşuculardan yanıt almasına izin verdi.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-b3c8715e62-dd1a6f-69ad2a.webp)
Son fonlar, bir saatlik iletişimin ardından GnosisSafe'in multisig kasasına aktarıldı.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-a7c1f91d1a-dd1a6f-69ad2a.webp)
Aşağıda gerçek güvenlik açıklarını ve bilgisayar korsanlarının istismar ettiği ayrıntıları göstereceğiz.
Ön bilgilendirme
*HopeLend'in borç verme protokolü Aave'nin çatallanmalarını uygular, bu nedenle güvenlik açıklarıyla ilgili temel iş mantığına Aave'nin teknik incelemesinde atıfta bulunulur.
0x00 Mevduat ve Krediler
Aave saf bir DeFi'dir, borç verme işi likidite havuzları aracılığıyla gerçekleştirilir, kullanıcılar Aave mevduatları likidite sağladığında borçlanmadan gelir elde etmeyi beklerler.
Kredi geliri kullanıcılara tam olarak dağıtılmaz, faiz gelirinin küçük bir kısmı risk rezervine dahil edilir, bu kısım daha küçük bir orandır, kredi gelirinin büyük kısmı likidite sağlayan kullanıcıya dağıtılır.
Aave'de mevduat kredisi verirken, Aave, zaman içinde farklı noktalardaki mevduat sayısını, iskonto yoluyla likidite havuzunun ilk zaman noktasındaki mevduat sayısının payına dönüştürür, böylece her bir hisse sayısının dayanak varlıklarına karşılık gelen anapara ve faiz toplamı, hesaplamayı ve anlamayı büyük ölçüde kolaylaştıran * tutarı endeksi ile doğrudan hesaplanabilir.
Fon alımına benzer bir süreç olarak anlaşılabilir, fonun ilk net değeri 1'dir, kullanıcı 100 hisse almak için 100 yuan yatırım yapar, bir kazanç döneminden sonra net değerin 1.03 olduğunu varsayarsak, şu anda kullanıcı tekrar 100 yuan yatırım yapar, elde edilen hisse 97'dir ve kullanıcının toplam payı 197'dir.
Bu aslında varlığı endekse göre iskonto etmektir. Bunun nedeni, kullanıcının gerçek anapara ve faiz toplamının cari endeks ile bakiye ile çarpılmasıdır. İkinci para yatırıldığında, kullanıcının doğru anapara ve faiz toplamı 100 * 1.03 + 100 = 203 olmalıdır, iskonto edilmezse, ikinci kullanıcı anapara ve faiz toplamı ( 100 + 100) * 1.03 = 206 olduktan sonra 100 yatırır, yanlıştır, iskonto edilirse anapara ve faiz toplamı (100 + 100 / 1.03) olur * 1.03 = 103 + 100 = 203, 203 Sonuç doğrudur.
1. İlk flaş kredi fonlarını ödünç verin ve rehin verin
Saldırgan önce Aave Lightning'den 2300 WBTC ödünç alır, HopeLend'e 2000 WBTC yatırır ve fonlar HopeLende'nin hEthWbtc sözleşmesine (0x251 aktarılır. 907) ve ayrıca karşılık gelen 2000 hETHWBTC'yi satın alın.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-39c44b60e7-dd1a6f-69ad2a.webp)
2. İlk iskonto oranının (liquidityIndex) boş borç verme havuzları ile manipüle edilmesi
Flaş kredi için HopeLend'den 2000 WBTC ödünç alın.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-493bd5cd96-dd1a6f-69ad2a.webp)
Mevcut değer 1 hETHWBTC = 1 WBTC'dir.
WBTC'ye geri dönmek için ETHWBTC'ye erişmenin normal işleyişine göre, değişim oranını etkilemeyecektir (yalnızca faiz kazanıldığında değişim oranını etkileyecektir, 1 hETHWBTC daha fazla WBTC alacaktır).
Bu noktada, bilgisayar korsanları bir dizi karmaşık işlemle indirim oranını manipüle etmeye başladı:
• Bilgisayar korsanı, 2000 WBTC fonunu doğrudan HopeLen'in hEthWbtc sözleşmesine aktardı (0x 251 ... 907), bu adım krediyi geri ödemek değildir.
• Bilgisayar korsanı daha sonra WBTC'nin büyük çoğunluğunu geri çeker (1999.999 ... ), bu nedenle önceki adım, havuzdaki varlıkları yenilemek için WBTC'ye geri dönmeyi gerektirir.
• Son olarak, bilgisayar korsanı hEthWbtc'nin yalnızca en küçük birimini (1 e-8) tutar, bu da burada tam olarak bahsedilemez, çünkü biraz bırakmak gerekir, likidite Endeksinin hesaplanması olarak, mevcut artı eklemeye dayanacaktır, eğer temizlenirse, likidite Endeksinin 0 olmasına neden olur, havuzdaki oranı dengesiz hale getiremezsiniz.
• Bir önceki adımda hEthWbtc ile takas edilen wBTC'nin çoğunu yok edin, önceki flaş krediden kalan wBTC'yi ekleyin ve ödünç verilen flaş krediyi HopeLend havuzuna iade ederek toplam 2001.8 WBTC (faiz 1.8 wBTC dahil) ödeyin.
• Yukarıdaki işlem, hEthWbtc'nin çoğunu yok eder, hacker hesabında yalnızca 1 en küçük birim (1 e-8) hEthWbtc bırakır, böylece toplam hETHWBTC miktarı azalır ve borç verme havuzunda 2001.8 wBTC vardır, bu noktada likidite endeksi şaşırtıcı bir şekilde 126.000.000'a ulaşır. Bu, mevduat kullanıcılarının ilgisinin temel olarak havuzdaki likiditenin büyümesinden geldiği ve borç verme havuzunun borçlanma ve mevduat faiz oranlarını mevduat oranı ve kullanım oranına göre dinamik olarak ayarlayacağı bilgisini içerir.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e386610ea7-dd1a6f-69ad2a.webp)
Burada, havuz flaş kredi faizinden (1,8 WBTC) ek likidite aldığında, yüzde yetmiş (126.000.000), mevduat birimi başına iskonto edilmiş değeri (hEthWbt) hesaplamak için kullanılan likidite Endeksine (likidite Endeksi) dahil edilir.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-56409cd0fd-dd1a6f-69ad2a.webp)
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-96bcc3e14e-dd1a6f-69ad2a.webp)
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9a75762f1e-dd1a6f-69ad2a.webp)
Havuz saldırıdan önce boş olduğundan, totalLiquidity geri ödemeden sonra yalnızca 1'dir, tutar 126000000'dir ve ilk likidite Endeksi 1'dir ve bu da 126000001'in bir sonucu ile sonuçlanır.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-c54ae6461b-dd1a6f-69ad2a.webp)
3. İndirim oranını artırmaya devam edin
Bilgisayar korsanları, flaş krediler için HopeLend'den 2.000 WBTC ödünç almaya devam etti ve her seferinde ek 1,8 WBTC iade ederek her Likidite Endeksinin 126.000.000 birikmesine izin verdi.
Bilgisayar korsanları işlemi 60 kez tekrarladı ve sonunda Likidite Endeksi 7.560.000.001'e ulaştı ve saldırgan tarafından tutulan en küçük 1 hEthWBTC biriminin indirimli değeri 75,6 WBTC'ye (yaklaşık 2,14 milyon $) ulaşabilir.
Bu, bilgisayar korsanlarının hEthWBTC'yi manipüle etmesine ve değerini bozmasına olanak tanır.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7a6cfad314-dd1a6f-69ad2a.webp)
4. Kazanç oluşturmak için fonların bulunduğu diğer kredi havuzlarının içini boşaltmak
Saldırganlar daha sonra en küçük 1 birim hEthWBTC'yi stake etti ve HopeLond'un diğer beş token havuzundan büyük miktarda varlık ödünç aldı.
Kapsamak:
175.4 - AĞIRLIK
145, 522.220985 - USDT
123, 406.134999 - USDC
844, 282.284002229528476039 - UMUT
220, 617.821736563540747967 - stHOPE
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8aa289f7db-dd1a6f-69ad2a.webp)
Bu tokenler, gelir olarak Uniswap aracılığıyla WBTC ve WETH ile değiştirildi ve çeşitli ücretler düşüldükten sonra, bilgisayar korsanı sonunda yaklaşık 263 WETH'lik bir kâr elde etti (yüke rüşvet veren 263.9 WETH hariç).
Bilgisayar korsanları neden diğer havuzlardan büyük miktarlarda borç alabilir:
Borç alırken veya mevduat çekerken, borç verme sözleşmesi, kredinin teminatı aşmadığından emin olmak için kullanıcının teminatlı varlıklarının durumunu kontrol edecektir.
İskonto oranı bilgisayar korsanları tarafından manipüle edildiğinden ve iskonto oranı normalleştirilmiş gelir çarpanındaki teminat değerinde hesaplandığından, elindeki bir birim hEthWBTC'nin teminat değeri 75,6 WBTC kadar yüksektir.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e21db310ea-dd1a6f-69ad2a.webp)
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9c0111bcf6-dd1a6f-69ad2a.webp)
Bilgisayar korsanı, diğer havuzlardan her borç para aldıklarında, teminat varlığı doğrulamasını kolayca geçti.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-362c84f0ae-dd1a6f-69ad2a.webp)
Bu noktada, saldırganlar likidite endeksini manipüle etmek için HopeLend'e toplam 2000+ 1.8* 60 WBTC yatırdı ve geriye sadece 1 birim hEtthWBTC kaldı.
5. Nakde çevirmek için kritik güvenlik açığı noktalarından (tamsayı bölme hataları) yararlanın
Saldırganlar, önceki yatırım wBTC'yi ortadan kaldırmak için başka bir saldırı sözleşmesi daha devreye soktu: 0x 5 a 63 e... 844 e 74 ve orada withdrawAllBtc() yöntemini çağırın
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-821db2a3ae-dd1a6f-69ad2a.webp)
Güvenlik açığı süreci aşağıdaki gibidir:
(1) Mevcut likidite Endeksine göre (1 en küçük birim hEthWBTC=75,6 wBTC) ilk para yatırma işlemi 151.20000002 wBTC, saldırgan en küçük 2 birim hEthWBTC alır.
(2) 113.4 wBTC'yi çıkarın (çekin), karşılık gelen hEthWBTC payını ters hesaplayın ve hEthWBTC'yi yakın.
(3) 113.4 wBTC'nin 1.99999999998 en küçük hEthWBTC birimini yok etmesi gerekir, ancak div işlevinin doğruluğu nedeniyle, yalnızca en küçük bir hEthWBTC birimi yok edilir, bu nedenle istismar edilebilir bir güvenlik açığı haline gelir ve bilgisayar korsanları hala en küçük 1 birim hEthWBTC'yi tutabilir.
Kritik güvenlik açıkları
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7ff70593aa-dd1a6f-69ad2a.webp)
hEthWBTC'nin yakma yöntemi, yüksek hassasiyetli bölme rayDiv'i çağırır.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8ab92bd200-dd1a6f-69ad2a.webp)
(a* 1e27+b/2)/b = 1.9999999998 olmasına rağmen, Solidity'nin yerleşik div yöntemi keser ve 11340000000 / 7560000001'a eşdeğer olan 1 döndürür.
0x5a63 (Attack Contract - Cash Out) tam olarak 1 minimum birim hEthWBTC almak için 75.60000001 WBTC yatırmaya devam eder, böylece minimum 2 birim hEthWBTC tutmaya devam eder.
Bu döngüde 113.400000000 wBTC çekilir ve 75.60000001 wBTC yatırılır, her saldırgan hiç yoktan 37.8 wBTC elde edebilir.
58 döngüden sonra, saldırganlar yatırılan tüm wBTC'leri peşin olarak çekti ve Aave'nin flaş kredisini sorunsuz bir şekilde iade etti.
Sonuç
hEthWBTC borç verme havuzu başlatılmadığından, saldırgan LiquidityIndex'i maksimuma çıkarmak için kolayca manipüle edebilir ve para çekme oranı bir bölen olarak büyük ölçüde büyütülür, bu da tamsayı bölmenin kesme hatası nedeniyle bir bloktaki önceki yatırımı almayı kolaylaştırır.
İyi işleyen bir borç verme havuzunda, havuzdaki mevcut likidite nedeniyle kredi faizindeki küçük bir artış nedeniyle iskonto oranını önemli ölçüde artırmak kolay değildir.
View Original
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
CertiK: Merkeziyetsiz borç verme platformu HopeLend'e yapılan borç verme saldırılarının analizi
18 Ekim 2023 Pekin saatiyle 19:48:59'da Hope.money'nin borç verme havuzuna flaş krediler nedeniyle saldırı düzenlendi.
Hope.money, HopeLend borç verme platformu, HopeSwap merkezi olmayan borsa, stablecoin $HOPE ve yönetişim tokeni $LT dahil olmak üzere tam yığın merkezi olmayan bir finansal hizmet oluşturdu.
Saldırıya dahil olan protokol, kullanıcıların protokole likidite sağlamasına veya gelir elde etmek için aşırı teminatlandırmasına olanak tanıyan merkezi olmayan bir borç verme platformu olan HopeLend'dir.
Etkinlik başlangıcı ve bitişi
HopeLend'in kod uygulamasında, mevduat sertifikalarını yok ederken yanlış tamsayı bölme sorunu nedeniyle borç verme havuzunda istismar edilebilir bir güvenlik açığı vardı, bu da ondalık noktanın kesilmesine, beklenenden daha az sertifikanın imha edilmesine ve beklendiği gibi aynı değerde tokenlerin elde edilmesine neden oldu.
Saldırgan, Hope.money'deki birden fazla borç verme havuzunu boşaltmak için bu kusurdan yararlandı.
hEthWbtc borç verme havuzu 73 gün önce konuşlandırıldı, ancak içinde fon yoktu, bu nedenle bilgisayar korsanları, indirim oranını önemli ölçüde artırmak için borç verme havuzuna büyük miktarlarda para enjekte etti ve böylece bir blok işlemindeki diğer tüm borç verme havuzlarını hızla boşalttı.
Daha dramatik bir şekilde, istismar edilen bilgisayar korsanı, istismar için fonları almadı ve saldırı işlemi, saldırısını taklit eden ve tüm saldırı geliri fonlarını (527 ETH) başarıyla çalan kapkaççı tarafından keşfedildi ve sonunda saldırı geliri fonlarının %50'si (263 ETH) soyguncular tarafından bloğu (yük) paketleyen madencilere rüşvet vermek için kullanıldı.
Güvenlik açığını keşfeden ilk hacker, blok 18377039'de bir saldırı sözleşmesi oluşturdu ve blok 18377042'de sözleşmeye saldırmak için bir çağrı yaptı, bu sırada kapkaççı bellek havuzundaki işlemi izledi ve kapkaç sözleşmesinin girdisi olarak saldırı sözleşmesini simüle etti ve aynı 18377042 bloğunda kullandı ve ilk bilgisayar korsanının 18377042. bloktaki işlemi, kapkaççının arkasında sıralandığı için başarısız oldu.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-420dceb701-dd1a6f-69ad2a.webp)
Para nereye gidiyor
Kapkaççı geliri aldıktan bir saat sonra, fonlar şu adrese aktarılır: 0x9a9122Ef3C4B33cAe7902EDFCD5F5a486792Bc3A
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-2bec7812fd-dd1a6f-69ad2a.webp)
20 Ekim günü saat 13:30:23'te şüpheli resmi ekip adresle iletişime geçerek koşucuların ödül olarak 26 ETH (%10 kar) bırakmasına ve koşuculardan yanıt almasına izin verdi.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-b3c8715e62-dd1a6f-69ad2a.webp)
Son fonlar, bir saatlik iletişimin ardından GnosisSafe'in multisig kasasına aktarıldı.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-a7c1f91d1a-dd1a6f-69ad2a.webp)
Aşağıda gerçek güvenlik açıklarını ve bilgisayar korsanlarının istismar ettiği ayrıntıları göstereceğiz.
Ön bilgilendirme
*HopeLend'in borç verme protokolü Aave'nin çatallanmalarını uygular, bu nedenle güvenlik açıklarıyla ilgili temel iş mantığına Aave'nin teknik incelemesinde atıfta bulunulur.
0x00 Mevduat ve Krediler
Aave saf bir DeFi'dir, borç verme işi likidite havuzları aracılığıyla gerçekleştirilir, kullanıcılar Aave mevduatları likidite sağladığında borçlanmadan gelir elde etmeyi beklerler.
Kredi geliri kullanıcılara tam olarak dağıtılmaz, faiz gelirinin küçük bir kısmı risk rezervine dahil edilir, bu kısım daha küçük bir orandır, kredi gelirinin büyük kısmı likidite sağlayan kullanıcıya dağıtılır.
Aave'de mevduat kredisi verirken, Aave, zaman içinde farklı noktalardaki mevduat sayısını, iskonto yoluyla likidite havuzunun ilk zaman noktasındaki mevduat sayısının payına dönüştürür, böylece her bir hisse sayısının dayanak varlıklarına karşılık gelen anapara ve faiz toplamı, hesaplamayı ve anlamayı büyük ölçüde kolaylaştıran * tutarı endeksi ile doğrudan hesaplanabilir.
Fon alımına benzer bir süreç olarak anlaşılabilir, fonun ilk net değeri 1'dir, kullanıcı 100 hisse almak için 100 yuan yatırım yapar, bir kazanç döneminden sonra net değerin 1.03 olduğunu varsayarsak, şu anda kullanıcı tekrar 100 yuan yatırım yapar, elde edilen hisse 97'dir ve kullanıcının toplam payı 197'dir.
Bu aslında varlığı endekse göre iskonto etmektir. Bunun nedeni, kullanıcının gerçek anapara ve faiz toplamının cari endeks ile bakiye ile çarpılmasıdır. İkinci para yatırıldığında, kullanıcının doğru anapara ve faiz toplamı 100 * 1.03 + 100 = 203 olmalıdır, iskonto edilmezse, ikinci kullanıcı anapara ve faiz toplamı ( 100 + 100) * 1.03 = 206 olduktan sonra 100 yatırır, yanlıştır, iskonto edilirse anapara ve faiz toplamı (100 + 100 / 1.03) olur * 1.03 = 103 + 100 = 203, 203 Sonuç doğrudur.
Saldırı süreci
0x25126...... 403907(hETHWBTC havuzu)
0x5a63e...... 844e74 (Saldırı Sözleşmesi - Nakit Çıkışı)
Saldırgan:
1. İlk flaş kredi fonlarını ödünç verin ve rehin verin
Saldırgan önce Aave Lightning'den 2300 WBTC ödünç alır, HopeLend'e 2000 WBTC yatırır ve fonlar HopeLende'nin hEthWbtc sözleşmesine (0x251 aktarılır. 907) ve ayrıca karşılık gelen 2000 hETHWBTC'yi satın alın.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-39c44b60e7-dd1a6f-69ad2a.webp)
2. İlk iskonto oranının (liquidityIndex) boş borç verme havuzları ile manipüle edilmesi
Flaş kredi için HopeLend'den 2000 WBTC ödünç alın.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-493bd5cd96-dd1a6f-69ad2a.webp)
Mevcut değer 1 hETHWBTC = 1 WBTC'dir.
WBTC'ye geri dönmek için ETHWBTC'ye erişmenin normal işleyişine göre, değişim oranını etkilemeyecektir (yalnızca faiz kazanıldığında değişim oranını etkileyecektir, 1 hETHWBTC daha fazla WBTC alacaktır).
Bu noktada, bilgisayar korsanları bir dizi karmaşık işlemle indirim oranını manipüle etmeye başladı:
• Bilgisayar korsanı, 2000 WBTC fonunu doğrudan HopeLen'in hEthWbtc sözleşmesine aktardı (0x 251 ... 907), bu adım krediyi geri ödemek değildir.
• Bilgisayar korsanı daha sonra WBTC'nin büyük çoğunluğunu geri çeker (1999.999 ... ), bu nedenle önceki adım, havuzdaki varlıkları yenilemek için WBTC'ye geri dönmeyi gerektirir.
• Son olarak, bilgisayar korsanı hEthWbtc'nin yalnızca en küçük birimini (1 e-8) tutar, bu da burada tam olarak bahsedilemez, çünkü biraz bırakmak gerekir, likidite Endeksinin hesaplanması olarak, mevcut artı eklemeye dayanacaktır, eğer temizlenirse, likidite Endeksinin 0 olmasına neden olur, havuzdaki oranı dengesiz hale getiremezsiniz.
• Bir önceki adımda hEthWbtc ile takas edilen wBTC'nin çoğunu yok edin, önceki flaş krediden kalan wBTC'yi ekleyin ve ödünç verilen flaş krediyi HopeLend havuzuna iade ederek toplam 2001.8 WBTC (faiz 1.8 wBTC dahil) ödeyin.
• Yukarıdaki işlem, hEthWbtc'nin çoğunu yok eder, hacker hesabında yalnızca 1 en küçük birim (1 e-8) hEthWbtc bırakır, böylece toplam hETHWBTC miktarı azalır ve borç verme havuzunda 2001.8 wBTC vardır, bu noktada likidite endeksi şaşırtıcı bir şekilde 126.000.000'a ulaşır. Bu, mevduat kullanıcılarının ilgisinin temel olarak havuzdaki likiditenin büyümesinden geldiği ve borç verme havuzunun borçlanma ve mevduat faiz oranlarını mevduat oranı ve kullanım oranına göre dinamik olarak ayarlayacağı bilgisini içerir.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e386610ea7-dd1a6f-69ad2a.webp)
Burada, havuz flaş kredi faizinden (1,8 WBTC) ek likidite aldığında, yüzde yetmiş (126.000.000), mevduat birimi başına iskonto edilmiş değeri (hEthWbt) hesaplamak için kullanılan likidite Endeksine (likidite Endeksi) dahil edilir.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-56409cd0fd-dd1a6f-69ad2a.webp)
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-96bcc3e14e-dd1a6f-69ad2a.webp)
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9a75762f1e-dd1a6f-69ad2a.webp)
Havuz saldırıdan önce boş olduğundan, totalLiquidity geri ödemeden sonra yalnızca 1'dir, tutar 126000000'dir ve ilk likidite Endeksi 1'dir ve bu da 126000001'in bir sonucu ile sonuçlanır.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-c54ae6461b-dd1a6f-69ad2a.webp)
3. İndirim oranını artırmaya devam edin
Bilgisayar korsanları, flaş krediler için HopeLend'den 2.000 WBTC ödünç almaya devam etti ve her seferinde ek 1,8 WBTC iade ederek her Likidite Endeksinin 126.000.000 birikmesine izin verdi.
Bilgisayar korsanları işlemi 60 kez tekrarladı ve sonunda Likidite Endeksi 7.560.000.001'e ulaştı ve saldırgan tarafından tutulan en küçük 1 hEthWBTC biriminin indirimli değeri 75,6 WBTC'ye (yaklaşık 2,14 milyon $) ulaşabilir.
Bu, bilgisayar korsanlarının hEthWBTC'yi manipüle etmesine ve değerini bozmasına olanak tanır.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7a6cfad314-dd1a6f-69ad2a.webp)
4. Kazanç oluşturmak için fonların bulunduğu diğer kredi havuzlarının içini boşaltmak
Saldırganlar daha sonra en küçük 1 birim hEthWBTC'yi stake etti ve HopeLond'un diğer beş token havuzundan büyük miktarda varlık ödünç aldı.
Kapsamak:
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8aa289f7db-dd1a6f-69ad2a.webp)
Bu tokenler, gelir olarak Uniswap aracılığıyla WBTC ve WETH ile değiştirildi ve çeşitli ücretler düşüldükten sonra, bilgisayar korsanı sonunda yaklaşık 263 WETH'lik bir kâr elde etti (yüke rüşvet veren 263.9 WETH hariç).
Bilgisayar korsanları neden diğer havuzlardan büyük miktarlarda borç alabilir:
Borç alırken veya mevduat çekerken, borç verme sözleşmesi, kredinin teminatı aşmadığından emin olmak için kullanıcının teminatlı varlıklarının durumunu kontrol edecektir.
İskonto oranı bilgisayar korsanları tarafından manipüle edildiğinden ve iskonto oranı normalleştirilmiş gelir çarpanındaki teminat değerinde hesaplandığından, elindeki bir birim hEthWBTC'nin teminat değeri 75,6 WBTC kadar yüksektir.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-e21db310ea-dd1a6f-69ad2a.webp)
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-9c0111bcf6-dd1a6f-69ad2a.webp)
Bilgisayar korsanı, diğer havuzlardan her borç para aldıklarında, teminat varlığı doğrulamasını kolayca geçti.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-362c84f0ae-dd1a6f-69ad2a.webp)
Bu noktada, saldırganlar likidite endeksini manipüle etmek için HopeLend'e toplam 2000+ 1.8* 60 WBTC yatırdı ve geriye sadece 1 birim hEtthWBTC kaldı.
5. Nakde çevirmek için kritik güvenlik açığı noktalarından (tamsayı bölme hataları) yararlanın
Saldırganlar, önceki yatırım wBTC'yi ortadan kaldırmak için başka bir saldırı sözleşmesi daha devreye soktu: 0x 5 a 63 e... 844 e 74 ve orada withdrawAllBtc() yöntemini çağırın
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-821db2a3ae-dd1a6f-69ad2a.webp)
Güvenlik açığı süreci aşağıdaki gibidir:
(1) Mevcut likidite Endeksine göre (1 en küçük birim hEthWBTC=75,6 wBTC) ilk para yatırma işlemi 151.20000002 wBTC, saldırgan en küçük 2 birim hEthWBTC alır.
(2) 113.4 wBTC'yi çıkarın (çekin), karşılık gelen hEthWBTC payını ters hesaplayın ve hEthWBTC'yi yakın.
(3) 113.4 wBTC'nin 1.99999999998 en küçük hEthWBTC birimini yok etmesi gerekir, ancak div işlevinin doğruluğu nedeniyle, yalnızca en küçük bir hEthWBTC birimi yok edilir, bu nedenle istismar edilebilir bir güvenlik açığı haline gelir ve bilgisayar korsanları hala en küçük 1 birim hEthWBTC'yi tutabilir.
Kritik güvenlik açıkları
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-7ff70593aa-dd1a6f-69ad2a.webp)
hEthWBTC'nin yakma yöntemi, yüksek hassasiyetli bölme rayDiv'i çağırır.
! [CertiK: Merkezi Olmayan Borç Verme Platformu HopeLend'e Borç Verme Saldırısının Analizi] (https://img-cdn.gateio.im/webp-social/moments-7f230462a9-8ab92bd200-dd1a6f-69ad2a.webp)
Burada:
a= 11340000000 (kaldırılması amaçlanan WBTC)
b=7560000001000000000000000009655610336(iskonto oranı)
(a* 1e27+b/2)/b = 1.9999999998 olmasına rağmen, Solidity'nin yerleşik div yöntemi keser ve 11340000000 / 7560000001'a eşdeğer olan 1 döndürür.
0x5a63 (Attack Contract - Cash Out) tam olarak 1 minimum birim hEthWBTC almak için 75.60000001 WBTC yatırmaya devam eder, böylece minimum 2 birim hEthWBTC tutmaya devam eder.
Bu döngüde 113.400000000 wBTC çekilir ve 75.60000001 wBTC yatırılır, her saldırgan hiç yoktan 37.8 wBTC elde edebilir.
58 döngüden sonra, saldırganlar yatırılan tüm wBTC'leri peşin olarak çekti ve Aave'nin flaş kredisini sorunsuz bir şekilde iade etti.
Sonuç
hEthWBTC borç verme havuzu başlatılmadığından, saldırgan LiquidityIndex'i maksimuma çıkarmak için kolayca manipüle edebilir ve para çekme oranı bir bölen olarak büyük ölçüde büyütülür, bu da tamsayı bölmenin kesme hatası nedeniyle bir bloktaki önceki yatırımı almayı kolaylaştırır.
İyi işleyen bir borç verme havuzunda, havuzdaki mevcut likidite nedeniyle kredi faizindeki küçük bir artış nedeniyle iskonto oranını önemli ölçüde artırmak kolay değildir.