Güvenlik rehberi
Web3 güvenlik kontrol listesi: akıllı sözleşmenizi korumak için 15 adım
Erişim kontrolünden izlemeye kadar her şeyi kapsayan kapsamlı, uygulanabilir bir liste — açıklar saldırganlardan önce yakalamak için.
Dağıtım öncesi güvenlik kontrol listesi
Herhangi bir akıllı sözleşmeyi mainnet’e dağıtmadan önce bu 15 kontrolü tamamlayın.
Rol tabanlı erişim denetimi uygulayın
Ham adres kontrolleri yerine OpenZeppelin’in AccessControl veya Ownable2Step’ini kullanın. Admin, operatör ve durdurucu işlevleri için ayrı roller tanımlayın. Yetkilendirme için asla tx.origin kullanmayın.
Reentrancy’ye karşı koruyun
Tüm dış çağrılara checks-effects-interactions kalıbını uygulayın. ETH transfer eden veya güvenilmeyen sözleşmelerle etkileşen işlevler için ReentrancyGuard kullanın. Kasıtlı kötü niyetli geri çağrı sözleşmeleriyle test edin.
Tüm dış girdileri doğrulayın
İşlev girişlerinde sıfır adresleri, taşma değerleri, boş diziler ve aralık dışı parametreleri kontrol edin. Çağıranların makul girdi vereceğine güvenmeyin — kısıtları zincir üstünde zorunlu kılın.
Tam sayı aritmetiğini güvenli işleyin
Solidity 0.8+ yerleşik taşma kontrollerine sahiptir; unchecked blokları bunları atlar. Her unchecked bloğunu overflow/underflow riski için denetleyin. Sıfıra bölme ve sabit noktalı matematikte hassasiyet kaybına dikkat edin.
Oracle bağımlılıklarını güvenceye alın
Flash loan manipülasyonuna direnmek için zaman ağırlıklı ortalama fiyatlar (TWAP) veya birden fazla oracle kaynağı kullanın. Bayatlık kontrolleri, asgari yanıt eşikleri ve oracle arızası için yedek mantık ekleyin.
Derleyici sürümünü kilitleyin ve doğrulayın
Yüzen pragma’lar (^0.8.0) yerine belirli bir pragma ile Solidity sürümünü sabitleyin (ör. 0.8.20). Projedeki tüm sözleşmelerin aynı sürümle derlendiğinden emin olun; ince davranış farklarını önlersiniz.
Yükseltme yüzeyini küçültün
Yükseltilebilir proxy kullanıyorsanız yükseltme yetkisini timelock ve çok imzalı yönetişimle kısıtlayın. Depolama düzeni çarpışmalarını önleyin. Yükseltilebilirliğin gerçekten gerekli olup olmadığını düşünün — değişmez sözleşmeler hakkında akıl yürütmek daha basittir.
Acil durdurma mekanizmaları uygulayın
Kritik işlemler için duraklatılabilir işlev ekleyin. Duraklatmayı sansür için kötüye kullanılamayacak ama aktif exploit sırasında işlemleri durdurabilecek şekilde tasarlayın. Duraklatmanın tüm kritik yolları gerçekten kestiğini test edin.
Front-running’e karşı koruyun
Zamana duyarlı işlemler için commit-reveal şemaları, özel mempool’lar (Flashbots Protect) veya son tarihler kullanın. Bekleyen işlemlerdeki çıkarılabilir değeri en aza indirin.
Token onay kalıplarını denetleyin
Mümkünse sonsuz onaylardan kaçının. Gassız onaylar için EIP-2612 permit uygulayın. Onay yarış koşullarını kontrol edin ve approve(0) ardından approve(newAmount) yerine decreaseAllowance kullanın.
Gerçekçi çatal simülasyonlarıyla test edin
Gerçek token bakiyeleri, havuz durumları ve oracle değerleriyle sorun yakalamak için mainnet çatallarına karşı entegrasyon testleri çalıştırın. Hardhat ve Foundry çatallı testi destekler — gerçek dağıtım koşullarını simüle etmek için kullanın.
Gaz optimizasyonu ile güvenlik ödünlerini gözden geçirin
Gaza optimize kod ince güvenlik sorunları sokabilir. Gaz tasarrufu için güvenlik kontrollerini atlamayın. Her unchecked bloğunu veya assembly kullanımını açık güvenlik gerekçeleriyle belgelendirin.
Sözleşme kaynağını blok gezgininde doğrulayın
Dağıtımdan hemen sonra kaynağı Etherscan veya ilgili blok gezgininde yayımlayıp doğrulayın. Bu kamuya açık incelemeyi mümkün kılar ve güven inşa eder. Doğrulanmış kaynağın dağıtılan bytecode ile birebir eşleştiğinden emin olun.
İzleme ve uyarı kurun
Zincir üstü izlemeyi lansmandan sonra değil önce dağıtın. Olağandışı transfer kalıplarını, yetki yükseltmesini, yönetişim tekliflerini ve parametre değişikliklerini izleyin. FinGuard’ın 7/24 izleme katmanı gibi araçlar aktif exploit’leri gerçek zamanda yakalar.
Bağımsız güvenlik denetimi alın
İç inceleme gerekli ama yeterli değildir. Sözleşmenizi sanal alan ortamında sömürmeye çalışacak bağımsız bir denetçi tutun. Bulgular için yalnızca teorik risk listeleri değil, exploit kanıtı isteyin.
İzlenecek yaygın zafiyetler
Bu zafiyet sınıfları 2024–2025 DeFi exploit’lerinin çoğunu açıklar.
Reentrancy saldırıları
En klasik akıllı sözleşme zafiyeti. Saldırganlar ilk çağrı bitmeden işleve yeniden girer ve özyinelemeli çağrılarla fonları boşaltır. 2016’daki DAO hack’i bu kalıpla 60 milyon dolar kaybettirdi.
Oracle manipülasyonu
Saldırganlar zincir üstü fiyat beslemelerini geçici manipüle etmek için flash loan kullanır, ardından anlık fiyata dayanan protokolleri sömürür. Bu, 2020’den beri DeFi’de önde gelen exploit vektörüdür.
Erişim denetimi açıkları
Ayrıcalıklı işlevlerde eksik veya yanlış izin kontrolleri — herkesin yönetici işlemlerini çağırmasına, parametre güncellemesine veya fon çekmesine izin verir. Çoğu zaman eksik modifier kapsamından kaynaklanır.
Flash loan exploit’leri
Tek bir işlemde yönetişim oylarını, havuz oranlarını veya fiyat mekanizmalarını manipüle etmek için atomik büyük miktar borçlanma. Savunma zaman ağırlıklı değerler ve çok bloklu onay ister.
İş kurallarındaki mantık hataları
Kredi faizlerinin, ödül hesaplarının veya tasfiye eşiklerinin yanlış uygulanması. Bu hatalar her protokole özgüdür; bu yüzden yalnızca otomatik araçlar yetmez — insan akıl yürütmesi tasarım kusurlarını yakalar.
Test gereksinimleri
Herhangi bir akıllı sözleşme mainnet’e gitmeden önce asgari test standardı.
Birim testleri (%90+ kapsam)
Her public ve external işlevin olumlu ve olumsuz test senaryoları olmalıdır. En az %90 dal kapsamını hedefleyin. Ölçmek için Foundry’nin forge coverage veya Hardhat coverage eklentilerini kullanın.
Mainnet çatallarında entegrasyon testleri
Çatallanmış bir mainnet durumunda tam dağıtım akışını test edin. DEX havuzları, kredi protokolleri ve oracle’larla etkileşimlerin gerçek zincir üstü veriyle beklendiği gibi davrandığını doğrulayın.
Özellik değişmezleriyle fuzz testi
Değişmezler tanımlayın (ör. toplam arz tavanı aşmaz, kullanıcı bakiyesi negatife düşmez) ve bir fuzzer’ın binlerce rastgele girdi üretmesine izin verin. Foundry ve Echidna bu alanda önde gelen araçlardır.
Kritik yollar için biçimsel doğrulama
Önemli TVL yöneten yüksek değerli sözleşmeler için, kritik özelliklerin tüm olası girdiler altında tutulduğunu matematiksel kanıtlamak üzere biçimsel doğrulama araçları (Certora, Solidity SMTChecker) kullanın.
Sık sorulan sorular
Bu kontrol listesini tamamlamak ne kadar sürer?
Mevcut test kapsamı olan iyi yapılandırılmış bir proje için 15 maddenin sistematik taranması 2–5 gün sürer. Sıfırdan başlayan projeler için düzgün erişim denetimi, test altyapısı ve izleme kurulumu için 1–2 hafta ayırın.
Otomatik araçlar elle güvenlik incelemesinin yerini alır mı?
Otomatik araçlar (statik analizörler, fuzzer’lar, biçimsel doğrulama) bilinen zafiyet kalıplarını verimli yakalar; iş mantığı hatalarını, ekonomik tasarım sorunlarını ve yeni saldırı vektörlerini kaçırır. En iyi yaklaşım geniş kapsam için otomatik araçları, derinlik için uzman incelemeyi birleştirir — tam olarak FinGuard’ın 7 katmanlı hattının çalıştığı gibi.
Bu listedeki en önemli tek madde nedir?
Yalnızca bir şey yapabiliyorsanız bağımsız güvenlik denetimi alın (madde 15). Deneyimli bir denetçi incelemede diğer maddelerin çoğunu yakalar. Ancak diğer maddeleri uygulamadan yalnızca denetime dayanmak gereksiz iş ve risk yaratır.
Bu listeyi denetimden önce mi sonra mı yapmalıyım?
Önce. Listeyi tamamlamak, denetçinizin temel hijyen sorunlarını işaretlemek yerine derin, bariz olmayan sorunları bulmasına zaman ayırması demektir. Denetime harcanan her dolar için daha fazla değer alırsınız. Müfettiş gelmeden evinizi temizlemek gibi düşünün.
Profesyonel denetime hazır mısınız?
Listenizi tamamlayın, ardından FinGuard’ın 7 katmanlı AI motorunun çalışmanızı gerçek sanal alan exploit’leriyle doğrulamasına izin verin.