Ethereum ekosisteminde DeFi protokolleri ısınmaya devam ederken, CipherTrace giderek daha fazla açıktan yararlanma ve saldırı vektörünün gün yüzüne çıktığını görüyor. Geçtiğimiz hafta, 28 Aralık 2020'de Cover Protokolünün kalkan madenciliği sözleşmesi Blacksmith kötüye kullanıldı. Bilgisayar korsanları, sonsuz miktarda COVER tokeni basmak ve projeden 4.4 milyon dolardan fazla para çekmek için madencilik sözleşmesindeki bir hatayı kullandı.
Kapak Protokolü serbest Dün Post-Mort, Devs tarafından bilinmeyen bir şekilde, hatanın Demirci sözleşmesinin ilk dağıtımından bu yana mevcut olduğunu belirterek, kapsamlı güvenlik denetimlerinin ve güvenlik testlerinin yapılmasının önemini vurguladı. akıllı sözleşmelerAkıllı sözleşmeler nedir? Akıllı sözleşme bir bilgisayar uzmanıdır ... Daha.
Sonsuz Darphanenin Zaman Çizelgesi
İlk saldırganın zaman çizelgesi
- New Balancer likidite havuzu katma Blacksmith.sol sözleşmesine.
- saldırgan mevduat Blacksmith.sol sözleşmesine 1,326,879.99 BPT token eklendi.
- O zaman aynı saldırgan infaz istismar, sözleşmeden fon çekilerek.
- Saldırgan bunu başardı devam etmek ödül basmak ve yaklaşık 4.4 milyon dolar tutarında fon çekmek.
İlginç bir şekilde, Grap Finance ile bağlantılı olduğu iddia edilen "beyaz bilgisayar korsanları" da yaklaşık 4 milyon dolar değerinde COVER tokeni basmak için bu açıktan yararlandı. Grap Finance sonunda fonları Kapak Protokolüne iade etti.
Grap Finance Deployer Harici Sahipli Hesap (EOA) zaman çizelgesi
- Yeni likidite havuzu oluşturuldu onaylı Likidite madenciliği için.
- Grap Finans Dağıtıcısı EOA tevdi Blacksmith.sol sözleşmesi aracılığıyla Cover'daki havuza 15,255.55 BPT (DAI/Basis) yatırıldı.
- Yaklaşık dört dakika sonra fonlar geldi. içine kapanık Kapakta Grap Finance Deployer'ın EOA bakiyesinde 1 Wei kalıyor.
- Başka bir dış kullanıcı çekildi Bakiyelerinin büyük bir kısmı yaklaşık aynı dönemde Blacksmith.sol sözleşmesinden geliyordu ve bu da Grap Finance'in Blacksmith.sol sözleşmesindeki DAI/Basis havuzu için tüm likiditeyi sağlamasına neden oldu.
- Grap Finans Dağıtıcısı tevdi 15,255.55 BPT (DAI/Basis) havuza geri döndü.
- Daha sonra Grap Finance Deployer iddia ödüller ve istismar nedeniyle 40,796,131,214,802,500,000.21 KAPAK darphanesi.
- Basılan tokenlerin bir miktar yakılmasından sonra Grap Finance Deployer gönderir Ether to Cover'a geri dön "Bir dahaki sefere kendi pisliğine dikkat et."
Sonsuz Token Nasıl Basılır? Teknik Analiz
Olayın Arka Planı
Bu istismar bizi Ethereum'da akıllı sözleşmeleri uygulamak için kullanılan Solidity programlama dilinin temellerine geri götürüyor. Bu sözleşmeler derlendikten sonra Ethereum Sanal Makinesi (EVM), çeşitli işlevleri yürütmek ve hafızayı ve depolamayı yönetmek için kullanılan talimatları (yani işlem kodlarını) anlayabilecektir. EVM'nin verileri depolayabileceği üç farklı alanı vardır: bellek, depolama ve yığın. Bu alanları anlamak, hatanın nasıl istismar edildiğini anlamak açısından önemlidir.
Bir bilgi işlem cihazındaki Rastgele Erişim Belleğine (RAM) benzer şekilde, “bellekSolidity içindeki ” anahtar sözcüğü, belirli bir değişken için bellek ayırır. Bu örnekte, söz konusu değişken belirli bir işlevin kapsamına alınmıştır. Bellek, işlev yürütüldüğünde temizlenir, ancak belleğin içeriği, işlev geri dönmeden önce belleğe aktarılırsa kalabilir.
"hafızası Solidity içindeki anahtar kelime, değişkenlerin eşlemelerde veya veri yapılarında verilerin depolanmasına yönelik bir işaretçi görevi görmesine olanak tanır. Depolama verileri, işlev çağrıları ve işlemler arasında kalıcıdır. Temel olarak depolama, 256 bit sözcükleri 256 bit sözcüklerle eşleştiren bir anahtar-değer deposudur.
EVM'nin bir kayıt makinesi değil, bir yığın makinesi olduğunu unutmayın; dolayısıyla tüm hesaplamalar, adı verilen bir veri alanı üzerinde gerçekleştirilir. yığın. Yığın maksimum 1024 öğe kapasitesine sahiptir, ancak yalnızca en üstteki 16 öğeye kolayca erişilebilir, bu da en üstteki öğeyi altındaki 16 öğeden biriyle ve daha fazlasıyla değiştirmek için kullanılabilir.
Böcek
Bilgisayar korsanları, Cover Protokolü'nün Blacksmith.sol'unu (stake yapanların Cover Protokolü kapsamındaki CLAIM ve NOCLAIM tokenleri gibi belirli proje veya havuz tokenleri ile ödüllendirilmesine olanak tanıyan bir Kalkan Madencilik Sözleşmesi) istismar etti.
Hatayı daha iyi anlamak için önce halka bakalım havuzları eşleme olan değişken (yani verilerin depolanması):
At çizgi 118sözleşmenin “memory” anahtar sözcüğü aracılığıyla havuz verilerini bellekte önbelleğe aldığını görüyoruz.
Sonra çizgi 121, sözleşme depolamadaki havuzu günceller. updatePool(adres _lpToken) işlev kullanan bir Havuz depolama havuzu değişkeni.
Ancak daha aşağıya bakarsanız para yatırma(adres _lpToken, uint256 _tutar) işlevi, aynısını kullanır havuz hesaplamalar için fonksiyon içinde belleğe önbelleğe alınan 118. satırdaki değişken havuz.accRewardsPerToken. Bu noktada, havuz değişken şuradan kopyalandı: havuzları haritalandı ve hafızaya kaydedildi.
Sonuç olarak, yapılan herhangi bir değişiklik havuz içindeki değişken para yatırma(adres _lpToken, uint256 _tutar) işlevi değiştirmez havuzları "Bellek" anahtar sözcüğünü kullanan değişkenlerin yalnızca işlevin kapsamına alınması nedeniyle sözleşmenin zincir üstü depolama alanında eşleme. Oradan, sözleşme güncellenir havuz.accRewardsPerToken içinde updatePool(adres _lpToken) depolamayı kullanan işlev. Yani şimdi, içinde updatePool(adres _lpToken) işlev havuz.accRewardsPerToken Teknik olarak yeni bir havuz olduğundan ve havuzla ilişkili olmadığından güncellenenler büyük ölçüde artar. havuz bellekte.
Bu güvenlik açığının ve bellek ile depolama arasındaki yanlış kullanımın ardından, madenci.rewardWriteoff içinde para yatırma(adres _lpToken, uint256 _tutar) işlevin yanlış hesaplanması ve yanlış kullanılması havuz.accRewardsPerToken, hala ön belleğe alınmış bir örneğini işleyen para yatırma işlevinin içinde olduğumuz için havuz.
Para yatırma işlevine ek olarak, Grap Finance gibi herkes, işlemi gerçekleştirdiğinde inanılmaz miktarda basılmış token elde edebilir. ClaimRewards(adres _lpToken) işlev. Ödüllerini almak için kullanılan bu işlev, aramayla sonuçlanır _claimCoverRewards(Havuz hafıza havuzu, Madenci hafıza madencisi) hangisine gönderme yapıyor madenci.rewardWriteoff yukarıda vurguladığımız şey. Bu değişken gerçekte olduğundan çok daha küçük olduğundan havuz.accRewardsPerToken, sözleşme bol miktarda token basılmasıyla sonuçlanır.
Önemli Noktalar
CipherTrace, istismar edilen hatadaki bu arka planın, kapsamlı güvenlik denetimlerinin ve akıllı sözleşmelere yönelik sızma testlerinin (hangisi olursa olsun) önemini gün ışığına çıkaracağını umuyor blockchainBir blok zinciri — bitcoin ve diğer c ... Daha biri konuşlandırmayı seçer. Grap Finance, bu açıktan yararlanarak aldıkları fonları iade ederken, orijinal bilgisayar korsanı hala DeFi protokolünden 4 milyon doların üzerinde net elde edebildi ve COVER tokeninin değeri o zamandan beri neredeyse %99 düştü.
Kaynak: https://ciphertrace.com/infinite-minting-exploit-nets-attacker-4-4m/
- 000
- 2020
- erişim
- Hesap
- Türkiye
- analiz
- ALAN
- etrafında
- Bitcoin
- blockchain
- Böcek
- Kapasite
- hangi
- değişiklik
- CipherTrace
- bilgisayar
- içindekiler
- devam etmek
- sözleşme
- sözleşmeleri
- veri
- Defi
- Devs
- uçları
- Eter
- Ethereum
- Ethereum ekosistemi
- olaylar
- sömürmek
- maliye
- Ad
- işlev
- Temelleri
- para
- kapmak
- Hacker
- hackerlar
- kullanma
- Vurgulanan
- Ne kadar
- HTTPS
- IT
- dil
- Led
- ışık
- çizgi
- Likidite
- Haritalar
- orta
- milyon
- Madencilik
- net
- Diğer
- havuz
- mevcut
- başına
- Programlama
- proje
- halka açık
- Sonuçlar
- İade
- "Rewards"
- güvenlik
- akıllı
- akıllı sözleşme
- Akıllı Sözleşmeler
- So
- katılık
- hafızası
- mağaza
- Teknik
- Teknik Analiz
- Teknoloji
- zaman
- Jeton
- üst
- işlemler
- Güncellemeler
- us
- değer
- Sanal
- Sanal makine
- güvenlik açığı
- hafta
- içinde
- sözler
- değer