DeFi Projelerindeki Güvenlik Riskleri

BSC’nin önde gelen DeFi platformlarından biri olarak ortaya çıkmasıyla genel olarak DeFi projelerinin ünü katlanarak artmış durumda. Bugün, sadece BSC’de on milyonlarca günlük işlem üreten 600’den fazla proje var.

DeFi

BSC’nin önde gelen DeFi platformlarından biri olarak ortaya çıkmasıyla genel olarak DeFi projelerinin ünü katlanarak artmış durumda. Bugün, sadece BSC’de on milyonlarca günlük işlem üreten 600’den fazla proje var.

Ancak, büyük başarı ile birlikte büyük riskler de gelir. İstismarlar, farklı düzeylerde açığa çıkan güvenlik açıklarından yararlanan bilgisayar korsanları tarafından daha sık gerçekleşiyor. Bu güvenlik açıkları, okuyuculara DeFi ile ilişkili güvenlik risklerini daha iyi anlamalarını sağlamak için gözden geçireceğimiz 4 genel kategoriye ayrılıyor. Bunlara girmeden önce eğer DeFi ne demek bilmiyorsanız, hafızanı tazelemek istiyorsanız veya sadece detaylı bir şekilde bilgi edinmek istiyorsanız Merkeziyetsiz Finans (DeFi) Nedir? yazımızı da okuyabilirsiniz. Şimdi başlayalım:

DeFi

Admin Key (Yönetici Anahtarı)

Akıllı sözleşmelerle proje yöneticileri, kimlerin proje kodlarında belirli işlevleri gerçekleştirmesine izin verildiğini kısıtlar. Bu tür işlevler, genellikle sözleşme yapılandırmasını değiştirmek veya akıllı sözleşmede tutulan fonları yönetmek için kullanılan ayrıcalıklı işlevlerdir. Bir saldırgan bir yönetici anahtarının güvenliğini ihlal ederse, akıllı sözleşme üzerinde tam kontrole sahip olabilir ve kullanıcı fonlarını çalabilir. Peki bir yönetici anahtarı nasıl çalınabilir?

İlk olasılık bir bilgisayar truva atıdır(trojan virüsü). Saldırgan, bilgisayarda depolanan özel anahtarları çalmak için bir truva atı kullanabilir veya proje sahiplerini özel anahtarlarını saldırgana göndermeleri için kandırmak için bir phishing saldırısı da gerçekleştirebilir. DeFi projeleri için bazen birkaç proje paydaşı kendi aralarında bir özel anahtarı paylaşır. Bu şekilde, ekipte kötü niyetli biri varsa, yönetici işlevlerini gerçekleştirmek ve projenin tokenlerini kendi cüzdan adreslerine aktarmak gibi eylemleri gerçekleştirebilir.

Örneğin, 5 Mart 2021’de PAID Network, özel anahtarlarının yanlış yönetilmesinden kaynaklanan bir “mint (üretim)” saldırısına maruz kaldı. PAID tokenin sözleşmesi, yükseltilebilir bir proxy idi; bu, sözleşmenin değiştirilebileceği anlamına gelir. Proxy sahibinin özel anahtarları,kötü niyetli bir yakma ve mint işlevlerini içeren kodla değiştirmek için kullanıldı. Saldırgan, mevcut PAID tokenlerinden 60 milyon yaktı ve ardından kendileri için 59 milyon token üretti. yaklaşık 2.5 milyon PAID tokenin Uniswap’ta toplam 2.040 ETH karşılığında satılmasıyla token fiyatı 2,80 dolardan 0,30 dolara düştü. Saldırgan büyük olasılıkla bir phishing saldırısı yoluyla bir yöneticinin makinesini ele geçirdi.

19 Nisan 2021’de 2.98 milyon EASY tokeni resmi EasyFi cüzdanından birkaç bilinmeyen cüzdana aktarıldı, bu tokenlerin değeri o sırada 75 milyon dolardı. EasyFi kurucusu, saldırının “yönetici anahtarlarına erişmek için kurucunun makinesine/Metamask’ına yönelik hedefli bir saldırıdan” kaynaklandığını iddia etti.

Projeler özel anahtarlarını güvenli bir şekilde saklamalıdır. Yönetici anahtarlarını PC cihazlarında düz metin olarak saklamamalı veya bir MetaMask sıcak cüzdanına güvenmemelidirler. Donanım cüzdanlarını kullanarak bir Multisig (hesap) oluşturmak güvenli bir yol olabilir. Örneğin, beş kişilik bir ekip için her ekip üyesinin kendi donanım cüzdanı olmalıdır. Ayrıcalıklı işlemler göndermeye çalıştıklarında, beş ekip üyesinden en az üçünün işlemi imzalaması gerekir. Bu, bir saldırganın anahtarlardan birine erişmesi durumunda herhangi bir ayrıcalıklı işlevi çağırabilmesini engeller.

Kodlama Hataları

DeFi’deki bazı güvenlik açıkları karmaşıktır, ancak durum her zaman böyle değildir. Bazen akıllı sözleşmelerdeki küçük bir kodlama hatası, milyonlarca değerindeki varlıkların tehlikeye atılmasına neden olan büyük bir felakete dönüşebilir.

Bazı yaygın kodlama hataları şunları içerir:

  • İşlev izni (değiştirici)
  • Yazım hataları
  • Yanlış basamak sayısı
  • Eksik/yanlış değişken değer ataması

Kayda değer bir örnek, denetlenmemiş bir sözleşmede gerçekleşen ve 57 milyon dolarlık bir kayıpla sonuçlanan Uranium Finance’in hacklenmesidir. Swap öncesi ve sonrasında havuzdaki iki token bakiyesinin çarpımı karşılaştırılırken kullanılan tutarsız bir çarpandan kaynaklanıyordu. Bu, saldırganın yalnızca 1 Wei’ye mal olan havuzdaki tokenlerin çoğunu değiştirmesine izin verdi.

 

Uranium Finance’in Hatalı Kodu:

DeFi

Olması Gereken:

DeFi

Başka bir örnek, 10 milyon doların kaybolmasına neden olan Value DeFi hackinden. Sözleşmedeki başlatma işlevi, “initialized = true” ifadesi unutulmuştu, yani herkes havuzu yeniden başlatabilir ve kendilerini operatör olarak ayarlayabilir. 5 Mayıs 2021’de saldırgan havuzu yeniden başlattı, operatör rolünü kendilerine ayarladı ve ardından stake edilentokenleri boşaltmak için “governanceRecoverUnsupported()” işlevini kullandı.

Value DeFi’nin Hatalı kodu:

DeFi

Olması Gereken:

DeFi

Yukarıda bahsedilen iki örnek, önemli kayıplara neden olan basit kodlama hatalarından kaynaklanmıştır. Bu tür hatalar, uygun meslektaş incelemeleri, birim testi ve güvenlik denetimleri ile kolayca ortadan kaldırılabilir.

Flash Loanlar (Ani Krediler) ve Fiyat Manipülasyonu

Ani krediler, belirli bir ücret karşılığında Aave veya DyDx gibi bir protokolden büyük miktarlarda borç almanın bir yoludur. Koşul, kredilerin aynı işlem içinde iade edilmesi gerektiğidir. Aksi takdirde işlem geri alınacaktır. Bu kredilerin genel kullanımı aşağıdaki gibidir:

  1. Flaş krediler kullanarak büyük miktarda token A ödünç alın
  2. Bir DEX’te token B için token A’yı değiştirin (token A’nın fiyatını düşürür ve jeton B’nin fiyatını büyük ölçüde artırır)
  3. A/B fiyatına dayanan bir DeFi projesinden yararlanın
  4. Flaş kredisini geri öde

PancakeBunny bir ani kredi saldırısına uğradı ve saldırgan 114 bin adet BNB ve 697 bin adet Bunny (o sırada 40 milyon dolar) aldı. Saldırgan, PancakeSwap USDT-BNB V1 havuzunun fiyatını manipüle etmek için bir ani kredi kullandı ve büyük miktarda BNB’nin BNB-Bunny havuzuna akmasına neden oldu ve bu da sözleşmenin şişirilmiş bir fiyata oldukça fazla Bunny üretmesini sağladı. PancakeBunny, Bunny fiyatını hesaplamak için aşağıdaki işlevi kullanır:

Bunny

BNB-Bunny havuzuna akan büyük miktarda BNB olduğundan, “rezerv0” değişkeni önemli ölçüde büyüdü. Hatalı fiyat hesaplaması nedeniyle saldırgan 697 bin adet Bunny almayı başardı.

DeFi alanındaki bazı büyük isimler de dahil olmak üzere birçok ani kredi saldırısı kurbanı var: PancakeBunny, Harvest Finance, Yearn, Value DeFi, AKROPOLIS, Cheese Bank, XToken, bZx…

Bir proje fiyat referansları gerektiriyorsa, ani krediler fiyatı manipüle edebileceğinden dikkatli olunması gerekir. Bunun olmasını önlemek için Zaman Ağırlıklı Ortalama Fiyat (TWAP) kullanmanızı öneririz. TWAP, belirli bir zaman aralığında bir tokenin ortalama fiyatını temsil eder. Bir saldırgan fiyatı bir blokta manipüle ederse, ortalama fiyatı etkilemez. Diğer öneri, Chainlink gibi güvenilir bir zincir üstü fiyat oracle’i kullanmaktır.

Üçüncü Taraf Protokollerinin Kötüye Kullanımı ve İş Mantığı Hataları

PancakeSwap ve UniSwap gibi birçok proje bağımsız olarak çalışır. PancakeSwap’ta kullanıcılar tokenleri çiftleştirmek için likidite sağlayabilir veya bir tokeni diğerine takas edebilir. Kullanıcılar diğer üçüncü taraf protokolleriyle etkileşime girmez.

Yearn Finance gibi diğer projeler farklı şekilde çalışır. Yearn Finance, kullanıcı fonlarını toplar ve bunları üçüncü taraf sözleşmelerine koyar. Yield elde etmek için kullanıcı tokenlerine yatırım yapar. Başka bir durum, bazı projelerin diğer projelerden kod “ödünç alması”. Örneğin, PancakeSwap, UniSwap’tan gelen koda başvurur. Her iki durumda da, üçüncü taraf kodunun kaynağı savunmasızsa, kodu kullanan proje de savunmasızdır. Bir projenin geliştiricileri, kullandıkları üçüncü taraf koduna aşina değilse, bir güvenlik açığından yararlanıldığında bu büyük bir soruna dönüşebilir.

8 Mayıs 2021’de Value DeFi vSwap AMM’nin non 50/50 havuzları istismar edildi ve toplamda yaklaşık 11 milyon dolar kaybetti. non 50/50 havuzları uygulamak için Value DeFi, Bancor protokolüne ait olan “BancorFormula.sol”den “power()” fonksiyonunu kopyaladı. power() fonksiyon açıklamasında bu fonksiyonun “_baseN <_baseD” olduğu durumu desteklemediği yazıyor ama maalesef Value DeFi bu işlevi böyle kullandı. Saldırgan, işleve hazırlanmış bir yük göndererek küçük bir miktar A tokenini B tokeniyle değiştirebildi.

Value DeFi’nin Hatalı Kodu:

Value

DeFi alanında buna benzer birçok durum var. 8 Mayıs 2021’de bir saldırgan, Rari Capital V2’ye entegre olan Alpha Homora V1’in ibETH havuzunun (Banka sözleşmesi) işlevlerinden yararlanarak Rari Capital Ethereum Havuzundan yaklaşık 2600 ETH boşaltmayı başardı. Bearn Finance, “BvaultsStrategy” sözleşmesinde ibBUSD’yi çekmek için BUSD için para çekme tutarlarını kullandı ve bir saldırganın havuzdan 10.859.319 BUSD’yi kaldırmasına olanak tanıdı.

Özetle, DeFi projeleri oluşturmak eğlenceli olabilir, ancak saldırıya uğramak değil. Bir projeyi %100 güvenli hale getirmek zordur, ancak mümkün olduğunca korumak için yapabileceğimiz bazı şeyler vardır:

  • Yönetici anahtarlarını güvende tutun
  • Basit kodlama hatalarından kaçının
  • Güvenilir zincir içi fiyat feed’leri kullanın
  • Güvenlik denetimlerinden geçin ve bunlara hazırlanın

Kaynak: Certik

Kripto paralar hakkında; merak ettikleriniz, öğrenmek istedikleriniz, soru-cevap, güncel analizler için Telegram kanalımızda bizi takip edin ve iletişimde kalın. KoinSaati’nin Telegram Kanalına katılmak için tıklayınız.

 

Onur Özgür tarafından yazıldı.

Endüstriyel tasarım eğitimim dışında 2021'in ilk aylarından beri blockchain ve kriptoparalarla ilgileniyorum ve içerik üretiyorum. Sadece yatırım yapma ve para kazanma amacıyla başladığım bu yolda şimdi bir kariyer hedefliyorum ve bu yönde kendimi geliştirmeye ve başkalarına da elimden geldiğince yardım etmeye özen gösteriyorum.

Bitcoin

Grayscale, Yönetimi Altındaki Toplam Varlıkları 34.5 Milyar Dolar Açıkladı

SEC, Kripto Varlık Sektörünü Regüle Etmek İçin Kongre’den Daha Fazla Yetki İstiyor