Back to Blog

#8: SushiSwap Olayı: Beceriksiz Bir Kurtarma Girişimi Bir Dizi Taklit Saldırıya Yol Açtı

Code Auditing
February 18, 2024
5 min read

9 Nisan 2023'te SushiSwap, Doğrulanmamış Harici Parametre nedeniyle bir istismarın hedefi oldu. Toplam kayıp yaklaşık 3,3 milyon dolar.

Ethereum'da önemli bir kullanıcı tabanına sahip önde gelen bir protokol olarak, bu tür üst düzey protokoller bile sözleşme yükseltmeleri sırasında ciddi yeni sorunlar ortaya çıkarmaya karşı savunmasız kalabilmektedir. Bu durum, DeFi topluluğuna güvenliğin her zaman en öncelikli konu olması gerektiğini hatırlatmaktadır. Üstelik bu güvenlik olayı, bir beyaz şapkalı güvenlik araştırmacısının kurtarma girişimiyle tetiklenmiş ve topluluk içinde ciddi tartışmalara yol açmıştır; 2023'ün en önemli on güvenlik olayından biri olarak öne çıkan bu olayı kısaca ele alıyoruz.

Arka Plan

SushiSwap

Tanınmış bir DEX olan SushiSwap, Uniswap'a karşı bir vampir saldırısı başlatarak büyük bir başarı elde etti. En yüksek noktasında TVL'si 8 milyar dolara ulaştı ve hâlâ yaklaşık 400 milyon dolar seviyesini koruyor.

Onay (Approval)

Kısaca: bir sözleşmenin cüzdanınızdaki belirli bir token'a erişmesi ve transfer etmesi için verilen izin.

Kolaylık sağlamak amacıyla birçok sözleşme varsayılan olarak sınırsız onay talep eder. Güvenlik risklerinden endişe eden pek çok kullanıcı, çeşitli protokollere yalnızca küçük miktarlar yatırır. Ancak bu kullanıcılar, protokollere sınırsız fon onayı vermektedir; bir protokolün güvenliği ihlal edilirse hesapta onaylanan tüm token'lar kaybedilebilir.

Güvenlik Açığı

Doğrulanmamış Harici Parametre

RouteProcessor2 sözleşmesinin processRoute() fonksiyonu, kullanıcılara çağrı akışı üzerinde tam kontrol sağlar (parametre route). uniswapV3SwapCallback() içinde ise safeTransferFrom()'un from parametresi, kullanıcı tarafından sağlanan route'dan çözümlenir. Sonuç olarak, RouteProcessor2 sözleşmesini onaylayan kullanıcılar varlıklarını kaybetti.

Saldırı Süreci

Bu olay birden fazla saldırı işlemi içermektedir, ancak biz örnek olarak ilk saldırı işlemini kullanacağız. İşlem: 0x43ff7e01423044cfb501b4fe9ef1386725c0ddc117dadd6e6620cb68bdeaf4f9

  1. Saldırgan, özenle oluşturulmuş uzun bir route argümanıyla savunmasız RouteProcessor2 sözleşmesinin processRoute() fonksiyonunu çağırdı.
  2. processRouteInternal(), kullanıcı tarafından sağlanan route'a dayalı olarak bir InputStream oluşturur.
  3. İşlem, swapUniV3()'e ulaşana kadar saldırganın route'unu takip etti. pool'un stream'den çözümlendiğine, yani saldırganın hangi pool'da swap() yapılacağını kontrol ettiğine ve bunu lastCalledPool olarak ayarladığına dikkat edin.
  4. Bu, saldırgan tarafından dağıtılan kötü amaçlı sözleşmeyi çağırdı; saldırgan daha sonra RouteProcessor2'nin uniswapV3SwapCallback() fonksiyonunu geri çağırmak için kötü amaçlı calldata iletti.
  5. uniswapV3SwapCallback(), msg.sender kontrolü gerektirir; ancak lastCalledPool zaten kötü amaçlı sözleşmeye ayarlandığından, hacker kontrolü atlatmayı başardı. Önemli olan husus şudur: safeTransferFrom()'un from parametresi, saldırgan tarafından oluşturulan calldata'dan çözümlendi.
  6. Kurbanın varlıkları, saldırgan tarafından dağıtılan kötü amaçlı sözleşmeye aktarıldı.

Tartışmalı Beyaz Şapkalı Kurtarma Girişimi

Belirtmek gerekir ki @trust__90 kullanıcı adlı bir beyaz şapkalı bu sorunu tespit etti ve fonları kurtarmaya çalıştı; ancak bu kurtarma girişimi felakete yol açtı.

  • İşlemleri özel bir RPC yerine mempool aracılığıyla yayınlamak.
  • Risk altındaki tüm fonlar yerine yalnızca 100 Ether kurtarmaya çalışmak.

Bu durum, MEV Bot'larının ve diğer saldırganların birden fazla taklit işlem gerçekleştirmesine kapı araladı ve fonların büyük bölümünün boşaltılmasına neden oldu. Tüm bu gelişmelerin ardından @trust__90, yoğun eleştirilere maruz kaldı ve eylemlerini savunmak zorunda kaldı.

BlockSec Kurtarma Operasyonu

Bu saldırıda biz de 100 Ether kurtardık ve fonları kurban 0xsifu'ya iade ettik.

Bugüne kadar 20'den fazla gerçek dünya saldırısını başarıyla engelledi ve 14.000.000 dolar değerinden fazla varlığı kurtardık.

Güvenlik Önerileri

Yükseltmeler Her Zaman Denetlenmeli

Bu durum, DeFi topluluğuna şunu hatırlatmaktadır: güvenlik her zaman en öncelikli konu olmalıdır. Denetimler güvenliği garanti etmez, ancak denetim yokluğu kesinlikle güvenliği sağlamaz.

Onay Sorununa Yönelik Çözümler

2023 yılı, onay saldırılarını içeren çok sayıda olaya sahne oldu ve biz bu fırsatı değerlendirerek onay yönetiminin önemini bir kez daha vurgulamak istiyoruz. Güvenlik açısından iyi bir uygulama, yalnızca gerekli miktarları onaylamak; kolaylık öncelikliyse ihtiyaç duyulandan biraz daha fazlasını onaylamaktır.

BlockSec'in MetaSuites ürünü, kullanışlı bir Onay Tanılama özelliği sunmaktadır. Bunun yanı sıra, onay durumlarını düzenli olarak kontrol etmek için Revoke Cash gibi araçlar kullanılabilir.

İzleme ve Otomatik Müdahale Mekanizmaları Benimseyin

Ethereum karanlık bir ormandır ve DeFi topluluğundaki herkes, güvenlik uzmanları dahil, çeşitli riskler ve zorluklarla karşı karşıyadır. 2023'te, yalnızca saldırıları izlemek için değil, tehditleri gerçek zamanlı olarak aktif biçimde engellemek için tasarlanmış sektörün ilk otomatik müdahale sistemi olan Phalcon Security'yi hayata geçirdik. Phalcon'un savaş testinden geçmiş yetenekleri, 20'den fazla gerçek dünya saldırısını başarıyla engelleyerek ve 14.000.000 dolar değerinden fazla varlığı kurtararak etkinliğini kanıtlamıştır. Bu yenilik, tüm paydaşların yatırımlarını korumaya yönelik proaktif önlemlerin mevcut olduğunu bilerek geceleri daha huzurlu uyumasını sağlar.

Bu serideki diğer makaleleri okuyun:

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit