Blog

Otomatik çeviri · İngilizce oku

SSO Modül 2 - Akıllı Sözleşme Güvenlik Açıkları: Yeniden Giriş Saldırılarına Derinlemesine Bir Bakış

Akıllı sözleşmeler şeffaflık sunar ancak riskler taşır. Bu makale, DAO'nun 150 milyon dolarlık kaybını örnek alarak Yeniden Giriş gibi güvenlik açıklarını ortaya koyuyor. Tamsayı Taşması, BeautyChain'in 900 milyon dolarlık gerilemesine yol açtı. DAOMaker, Erişim Kontrolü kusurları nedeniyle 4 milyon dolar kaybetti. FlashLoan Saldırıları, Harves Finance'in 38 milyon dolar kaybetmesine neden oldu.

Yazan Markos Mebellis

SSO Modül 2 - Akıllı Sözleşme Güvenlik Açıkları: Yeniden Giriş Saldırılarına Derinlemesine Bir Bakış
Bu sayfada

Akıllı sözleşmeler verimlilikleri, şeffaflıkları ve değiştirilemez özellikleriyle küresel endüstrileri dönüştürüyor. Ancak açık ve otomatik tasarımları onları risklere de maruz bırakıyor. Potansiyellerini en üst düzeye çıkarırken tehditleri en aza indirmek için güvenlik açıklarını ve olası saldırı yollarını kavramak hayati önem taşıyor. Bu sözleşmeleri oluşturmak ve sürdürmek dikkatli bir özen ve en iyi uygulamalara bağlılık gerektirir. Bu makale, anlaşılmayı artırmak için yaygın güvenlik açıklarını gerçek dünya vakalarıyla örnekleyerek ele alıyor. Salus Security'nin izniyle aşağıdaki makaleye göz atalım.

Temel Güvenlik Açıkları:

**Yeniden Giriş:** Burada saldırganlar bir boşluktan yararlanarak kilit işlemler tamamlanmadan veya değerler güncellenmeden önce fonksiyonlara yeniden girer.

Tek Fonksiyonlu Yeniden Giriş: Bu, bir sözleşmenin kötü niyetli bir sözleşmeyle etkileşime girmesi ve ikincisinin bir fonksiyona yeniden girmesine izin vermesi durumunda ortaya çıkar. Örneğin, kötü niyetli sözleşmeler bakiyeler güncellenmeden önce daha fazla ether çekmek için 'withdrawBalance' fonksiyonuna sürekli yeniden girebilir.

Önemli Saldırılar:

  • The DAO (2016): 150 milyon dolar topladıktan sonra kodlama güvenlik açıkları nedeniyle hacklendi. Bu, Ethereum ağında bir bölünmeye yol açtı.
  • PolyDex (2021): PLX Locker Akıllı Sözleşmesine yapılan yeniden giriş saldırısı nedeniyle 500 bin dolar kaybetti.
  • Bacon Protocol (2022): lend() fonksiyonundaki bir yeniden giriş hatası nedeniyle 1 milyon dolar kayıp yaşadı.
  • Lendf.Me (2020): Birden fazla kripto para biriminde yaklaşık 24,7 milyon dolar kaybetti.

**Fonksiyonlar Arası Yeniden Giriş:** Farklı fonksiyonlar arasında paylaşılan durumlardan ve zayıf yeniden giriş korumasından kaynaklanır. Yukarıdaki 'balances' örneği, 'withdrawAll' korumaya sahip olsa da saldırganların 'transfer' fonksiyonundan hâlâ yararlanabileceğini gösterir.

Kötü Şöhretli Olaylar:

  • DFX Finance (2022): Yeniden giriş koruması olmayan bir fonksiyondan yararlanan bir saldırı nedeniyle 7 milyon doların üzerinde kaybetti.
  • Hundred Finance (2022): borrowFresh fonksiyonundan yararlanan bir yeniden giriş saldırısının ardından yaklaşık 6,5 milyon dolar kaybetti.
  • Fei Protocol (2022): Bir Yeniden Giriş açığından yararlanan saldırı nedeniyle yaklaşık 80 milyon dolar kaybetti.

**Sözleşmeler Arası Yeniden Giriş:** Farklı sözleşmeler arasında paylaşılan durumlardan ve yanlış değişken değiştirme sıralarından kaynaklanır. Fonksiyonlar korumaya sahip olsa bile 'burnAccount' gibi diğer fonksiyonlardan hâlâ yararlanılabilir.

Öne Çıkan Saldırılar:

  • Rari Capital (2021): Bir saatten kısa sürede yaklaşık 10 milyon dolar (~2600 ETH) kaybetti.
  • ValueDefi (2021): Harici verilere dayanan geçersiz pay hesaplamaları nedeniyle 5345.314 WBNB kaybetti.

Salt Okunur Yeniden Giriş:

Salt okunur yeniden giriş, sözleşmenin durumunu değiştirmese de durum tutarlı olmadığında hatalı çıktılar üretebilen bir fonksiyondan yararlanır.

Dikkate Değer Saldırılar:

  • QuickSwap (2022): Saldırganlar varlık spot fiyatını değiştirmek için bir flash loan'u kötüye kullandı ve 138 ETH ile 700 MATIC token çaldı. Bu, Curve LP oracle'daki bir kusur nedeniyle mümkün oldu.
  • dForce (2023): Curve Finance ile Arbitrum ve Optimism zincirlerinde fiyat oracle'larına erişen kodda salt okunur bir yeniden giriş hatası vardı.
  • Sentimente (2023): Salt okunur bir yeniden giriş kusurundan yararlanan bir saldırı 1 milyon dolarlık hırsızlığa yol açtı. Neyse ki %90'ı fail tarafından iade edildi.
  • Sturdy (2023): B-stETH-STABLE'ın fiyatının kurcalandığı Balancer'ın salt okunur yeniden giriş sorunu nedeniyle yaklaşık 442 ETH kaybetti.

Yeniden Giriş Güvenlik Açığının Önlenmesi:

  1. Her zaman kontrol-etki-etkileşim modeline uyun.
  2. Tüm hassas işlemler için yeniden giriş koruması kullanın.
  3. Her harici çağrıyı titizlikle yönetin.

Tamsayı Taşması:

Hesaplamalar sınırları aştığında taşar ve genellikle ya çok küçük ya da devasa değerlere yol açar.

Örnek Saldırılar:

  • BeautyChain (2018): Saldırganlar bir tamsayı taşması yoluyla 10^58 BEC ele geçirerek şaşırtıcı bir 900 milyon doları elden çıkardı.
  • Poolz (2023): Ethereum, Binance ve Polygon'un zincir üstünde yaklaşık 665.000 dolar kayıpla sonuçlandı.

Tamsayı Taşması Önlemleri:

  1. safeMath kütüphanesi gibi güvenli hesaplama yöntemleri kullanın.
  2. Sonuçların aralık içinde kaldığını doğrulamak için sınır kontrolüne öncelik verin.
  3. Yerleşik taşma tespiti için solidity derleyici sürümü 0.8.0 veya sonrasını benimseyin.

Erişim Kontrolü:
Erişim kontrolü güvenlik açıkları, kritik işlemleri yöneten fonksiyonlarda katı erişim kısıtlamalarının olmamasından kaynaklanır.

  • Öne Çıkan Saldırılar:
  • DAOMaker (2021): init fonksiyonu savunmasız bırakıldıktan sonra tam ~4 milyon dolar çekildi.
  • GymNetwork (2022): Saldırganlar depositFromOtherContract() içindeki bir kimlik doğrulama gözetiminden yararlanarak herhangi bir gerçek ödeme olmadan yasa dışı bakiye artışını kolaylaştırdı. Kayıp? Yaklaşık 2.475,91 WBNB.
  • Tempdao (2023): migrateStake fonksiyonu için gevşek bir erişim kontrolü yaklaşımı 2,34 milyon doları aşan bir kayba yol açtı.

Erişim Kontrolü Güvenlik Açığı

  • Açıklama: Bir sistem içindeki belirli işlemlere erişimi ve ayrıcalıkları yöneten yetersiz kısıtlama mekanizmaları nedeniyle ortaya çıkan güvenlik açıkları.

Önleme Tedbirleri:

  1. Katı İzin Kontrolü: Özellikle hassas işlemleri yönetenler olmak üzere fonksiyonlar için her zaman katı izin protokolleri uygulayın.
  2. Çoklu İmza Mekanizması: Ortak karar almayı gerektiren görevler için hassas işlemleri yürütmeden önce birden fazla onay gerektiren çoklu imza protokolleri kullanın.

Yaygın Saldırı Vektörleri

  • Açıklama: Saldırganların bir sistemdeki, özellikle akıllı sözleşmelerdeki güvenlik açıklarından yararlandığı çeşitli yöntemler veya kanallar.

Önemli Örnekler:

  • FlashLoan Saldırıları: Kötü niyetli faaliyetler yürütmek için merkeziyetsiz finans sistemlerinin anlık borçlanma özelliğinden yararlanır.
  • Önden Çalıştırma: Saldırganlar başka bir kullanıcının bekleyen işlemi hakkında bilgi edinir ve daha yüksek bir gas ücreti teklif ederek bu işlem üzerinde hareket eder.

FlashLoan Saldırısı

  • Açıklama: Doğası gereği bir saldırı olmasa da FlashLoan, kullanıcıların teminatsız olarak anında büyük meblağlar borç almasını sağlayan bir DeFi özelliğidir. Sözleşme etkileşimlerindeki ve ilişkilerindeki mantık hataları nedeniyle istismar edilmiştir.

Önemli Saldırılar:

  1. Harves Finance (2020.10.26): 38 milyon dolarlık bir kayıpla sonuçlandı.
  2. InverseFinance (2022.6.16): 53,2445 WBTC ve 99.976,29 USDT kaybına yol açtı.
  3. NewFreeDAO (2022.9.8): 4.481 WBNB çekildi, yaklaşık 1,25 milyon $ değerinde.
  4. Lodestar (2022.12.11): Oracle fiyat manipülasyonu yoluyla istismar edildi.
  5. 0vix (2023.4.28): Polygon zincirinde 2 milyon $ kayba yol açtı.

Önleme Önerileri:

  1. Proje geliştirme sırasında Flashloan özelliklerini tanıyın.
  2. Doğru fiyat belirleme için zaman ağırlıklı ortalamayı veya birden fazla oracle'ı kullanın.

Önceden işlem yapma

  • Açıklama: Bir saldırgan, memPool'dan başka bir kullanıcının işlemini öğrenir ve daha yüksek bir gas ücreti teklif ederek bundan yararlanır.

Önemli Saldırılar:

  1. Sushi Badger Digg (2021.1.25): 81.68 ETH kayıpla sonuçlandı.
  2. Sushiswap Ape-ETH havuzu (2022.5.17): Saldırgan yaklaşık 0.3 ETH kâr elde etti.
  3. Uniswap (2023.4.2): Sandwich saldırısı yoluyla yaklaşık 25 milyon dolar zarara neden oldu.

Önleme Önerileri:

  1. İşlem yaparken kayma koruması kullanın.
  2. Özellikle volatil piyasalarda işlemleri yoğun olmayan saatlerde gerçekleştirin.
  3. İşlemleri doğrudan madencilere göndermek için 1inch'in FlashBot rpc'sini kullanın, böylece memPool'u atlayın.

Özet

Tebrikler! Modül 2'yi tamamladınız - Akıllı Sözleşme Güvenlik Açıkları: Yeniden Giriş Saldırılarına ve Yaygın İstismarlara Derinlemesine Bir Bakış

Öğrendiklerinizi gözden geçirelim:

Yeniden Giriş Açıkları - Saldırganlar, işlevler tamamen tamamlanmadan yeniden giriş yaparak açıklardan yararlanır.

  • Tek İşlevli Yeniden Giriş: Kötü niyetli bir sözleşme, başka bir sözleşmedeki işleve yeniden giriş yapar.
  • İşlevler Arası Yeniden Giriş: Zayıf yeniden giriş koruması nedeniyle farklı işlevler arasındaki paylaşılan durumlar istismar edilir.
  • Sözleşmeler Arası Yeniden Giriş: Farklı sözleşmeler arasında paylaşılan durumları istismar eder.
  • Salt Okunur Yeniden Giriş: Durum tutarlı olmadığında hatalı çıktılar üreten bir işlevi istismar eder.

Tamsayı Taşması - Belirlenen sınırları aşan hesaplamalar, aşırı değerlere yol açar.

Erişim Kontrolü Güvenlik Açıkları - Temel işlevlerde katı erişim kısıtlamalarının bulunmamasından kaynaklanır.

Yaygın Saldırı Vektörleri - Saldırganların sistem güvenlik açıklarını kullanma yöntemleri.

**FlashLoan Saldırısı** - Teminatsız anında büyük borçlanmaya olanak tanıyan, ancak mantıksal kusurlar nedeniyle kötüye kullanılan bir DeFi özelliği.

Önden Koşma Saldırısı- Saldırganlar bekleyen işlemler hakkında bilgi edinir ve daha yüksek gas ücretleri teklif ederek bundan faydalanır.

Bu makale şunlar tarafından sunulmuştur:

Özet — görsel