İleri Seviye8 min read

Akıllı Sözleşme Denetimi Nasıl Yapılır? Kapsamlı Güvenlik Rehberi

Akıllı sözleşme denetimini adım adım öğrenin: kapsam belirleme, manuel inceleme, otomatik araçlar, fuzzing, zafiyet puanlama ve yeniden denetim planlaması.

Akıllı sözleşme denetimi, zincir üzerindeki kodun dağıtımdan önce güvenlik açıklarını, mantık hatalarını ve gas verimsizliklerini tespit etmek amacıyla sistematik biçimde incelenmesi sürecidir. Eksiksiz bir denetim dört katmanı birleştirir: sözleşmenin amaçlanan davranışının kapsamını belirlemek, satır satır manuel inceleme, Slither ve MythX gibi araçlarla otomatik statik ve dinamik analiz ve fuzzing dahil kapsamlı testler. Dağıtılan akıllı sözleşme kodu değiştirilemez olduğundan denetim, kullanıcı fonlarını boşaltabilecek bir hatayı yakalamak için gerçekçi son fırsattır. Bu ileri düzey rehber her aşamayı derinlemesine ele alır, zafiyet puanlama modeli, gerçek maliyet örneği ve yeniden denetim takvimi içerir.

Akıllı Sözleşme Denetimi Gerçekte Neyi Doğrular?

Bir blokzinciri üzerinde çalışan akıllı sözleşme, koşulları tamamen zincir üzerinde yaşayan öz-yürütücü koddur. Bu değişmezlik hem özellik hem de tehlikedir: Dağıtıldıktan sonra destek masası yoktur, geri alma yoktur, hatayı yamayacak merkezi bir taraf yoktur. Bu nedenle denetim aynı anda üç şeyi doğrular; sözleşmenin belirtiminin öngördüğünü yapıp yapmadığını, yapmaması gereken şeyleri yapıp yapmadığını ve harici bir aktörün onu istenmeyen bir duruma sürükleyip sürükleyemeyeceğini.

Bu ayrım DeFi'de neredeyse her yerden daha fazla önem taşır. Hatalı bir web uygulaması dakikalar içinde düzeltilir; hatalı bir borç verme havuzu tek bir işlemde boşaltılabilir. İki tarihi olay riskleri çerçeveler: 2016 DAO yeniden giriş saldırısı yaklaşık 60 milyon dolar değerinde Ethereum (ETH) drene etti; 2021 Poly Network çapraz zincir ihlali ise geri iade edilmeden önce 600 milyon doları aşan miktarı hareket ettirdi. Her ikisi de rastgele incelemeden geçen ancak adversarial koşullar altında başarısız olan mantıktan kaynaklandı.

📷 Bir işlemin bir sözleşmeyi çağırdığını, sözleşmenin harici bir adrese çağrı yaptığını ve durum güncellenmeden önce yeniden giriş döngüsünün oluştuğunu gösteren akış diyagramı

2024 Yılı Güvenlik Açığı Verileri: Rakamlar Ne Söylüyor?

Bağımsız blokzinciri güvenlik araştırmacılarının derlediği verilere göre 2024 yılında DeFi protokollerine yönelik saldırılar toplamda 1,5 milyar doları aşan kayıplara yol açtı. Bu kayıpların yüzde 60'ından fazlası aslında daha önce denetlenmiş sözleşmelerden kaynaklandı; ancak denetim sonrası yapılan kod değişiklikleri yeni açıklar doğurdu ya da ekonomik tasarım hataları hiçbir statik analizörün modelleyemeyeceği biçimde istismar edildi. Bu veri tek başına şunu kanıtlar: "Denetlendi" rozeti güvenliğin garantisi değil, bir başlangıç noktasıdır.

Beş Aşamalı Denetim İş Akışı

Profesyonel bir denetim tek bir geçiş değildir; her aşamanın bir sonraki için arama alanını daralttığı tekrarlanabilir bir süreçtir.

Aşama 1 — Kapsam ve Tehdit Modeli

Tek bir satır okumadan önce denetçi, sözleşmenin ne yapması gerektiğini ve onu kırmanın kimin çıkarına olduğunu haritalandırır. Bu bir token mi, bir DAO hazinesi mi, otomatik bir piyasa yapıcı mı, yoksa bir köprü mü? Her mimari farklı bir saldırı yüzeyine sahiptir. Borç verme pazarları fiyat oracle manipülasyonunu davet eder; vault'lar yeniden girişi (reentrancy); yönetişim sözleşmeleri flaş kredi destekli oy ele geçirmeleri. Tehdit modelini belgelemek, acemi denetimlerdeki en yaygın başarısızlığı önler: kodun sahip olmadığı hataları bulup sahip olduğunu kaçırmak.

Aşama 2 — Manuel Satır Satır İnceleme

Manuel inceleme, insan yargısının vazgeçilmez olduğu yerdir. Denetçi her işlevi üç soruyu sorarak okur: Bu hangi durumu değiştiriyor? Çağıran ne kontrol edebilir? Aşırı uçlarda ne olur? Sıfır değerli transferler, tam sayı sınırları, boş diziler, bir token geri çağrısından beklenmedik yeniden giriş gibi uç durumlar gerçek istismarların çoğunun yaşadığı yerdir. Bilinen kalıpların kontrol listesi incelemeyi yapılandırır; ikinci bir gözlemci (dört göz prensibi) ise birincisinin normalleştirdiğini rutinen yakalar.

Aşama 3 — Otomatik Statik ve Dinamik Analiz

Araçlar, makine hızında genişliği kapsar. Statik analizörler kodu çalıştırmadan ayrıştırır; fuzz test araçları ve sembolik yürütücüler onu binlerce oluşturulmuş girişe karşı çalıştırır. Bu araçlar "düşük asılı meyvelerde" mükemmeldir; ancak yanlış pozitif üretirler ve bağlama özgü her şeyi kaçırırlar. Bu nedenle Aşama 2'yi tamamlarlar, onun yerini almazlar.

Aşama 4 — Test Paketi ve Fuzzing

Bir sözleşme; birim testleri (her işlev tek başına), entegrasyon testleri (işlevlerin etkileşimi) ve fuzz testleri (rastgele ve adversarial girdiler) ile gönderilmelidir. Güçlü projeler ayrıca değişmez testleri çalıştırır: ne olursa olsun geçerli kalması gereken özellikler. Örneğin "toplam arz hiçbir zaman sınırı aşmaz" veya "kullanıcı bakiyelerinin toplamı her zaman sözleşmenin token bakiyesine eşittir." Bu tür testler 2024'te büyük protokollerde işlevselliği bozabilecek birkaç hatayı henüz mainnet'e gitmeden yakaladı.

Aşama 5 — Zafiyet Puanlama ve Raporlama

Her bulgu sıralanır, düzeltmeler önerilir ve rapor bir iyileştirme yol haritasına dönüşür. Çıktı yalnızca geliştiriciler üzerinde işlem yapabiliyorsa faydalıdır; belirsiz "bunu gözden geçirmeyi düşünün" notları kimseye yardımcı olmaz.

📷 Kritik, Yüksek, Orta, Düşük önem etiketleri ve durum sütunu içeren örnek bir denetim raporu sayfasının ekran görüntüsü

Manuel İnceleme ile Otomatik Araçların Karşılaştırması

Hiçbir yaklaşım tek başına yeterli değildir. Aşağıdaki tablo, hibrit iş akışının neden endüstri standardı olduğunu göstermektedir.

BoyutManuel İncelemeOtomatik Araçlar
En iyi olduğu alanMantık hataları, iş kuralı hataları, yeni saldırı vektörleriBilinen zafiyet kalıpları, büyük kod tabanları
HızYavaş (günler ila haftalar)Hızlı (tarama başına dakikalar)
Yanlış pozitifDüşükOrta ila yüksek
Bağlam farkındalığıYüksekDüşük
Denetim başına maliyetYüksek (uzman zamanı)Düşük (çoğunlukla hesaplama)
Yeniden girişi yakalar mıEvet, niyet analiziyleEvet, yalnızca yaygın kalıplar
Ekonomik açıkları yakalar mıEvetNadiren

Pratik okuma: Otomatik araçların kod tabanını sınıflandırmasına ve şüpheli bölgeleri işaretlemesine izin verin, ardından tam olarak araçların elini kaldırdığı yerlerde derin manuel analiz için pahalı insan saatlerini harcayın.

Zafiyet Puanlama: Gerçek Bir Sayısal Örnek

Profesyonel denetimler her sorunu iki eksen boyunca sınıflandırır; etki (istismar edilirse ne kadar kötü) ve olasılık (ne kadar kolay istismar edilebilir); ardından bunları bir önem derecesi puanına dönüştürür. Basit bir model ikisini çarpar:

  • Etki: Kritik = 5, Yüksek = 4, Orta = 3, Düşük = 2, Bilgilendirici = 1
  • Olasılık: Neredeyse kesin = 5, Muhtemel = 4, Mümkün = 3, Düşük ihtimalli = 2, Nadir = 1

Çalışılan örnek: Para çekme işlevindeki bir yeniden giriş hatası; etki 5'tir (fonlar boşaltılabilir) ve olasılık 4'tür (istismar iyi bilinmekte ve uygulaması önemsizdir). Puan = 5 × 4 = 20; bu, Kritik bant'a (16-25) denk gelir ve düzeltilene kadar dağıtımı engeller. Karşılaştırma için kullanılmayan bir durum değişkeni: etki 1, olasılık 1, puan 1 — Bilgilendirici, uygun olduğunda düzeltin. Bu sayısal çerçeve, ekiplerin kozmetik bir uyarıyı fon boşaltan bir kusur kadar acil olarak ele almasını engeller.

Puan aralığıÖnem derecesiEylem
16-25KritikDağıtımı engelle; hemen düzelt
10-15YüksekMainnet'ten önce düzelt
5-9OrtaBu sürüm döngüsünde düzelt
2-4DüşükUygun olduğunda düzelt
1Bilgilendiriciİsteğe bağlı

Denetim Gerçekten İşe Yarıyor mu? Ön Hazırlık Adımları

Bir denetim yalnızca aldığı materyal kadar iyidir. İki hazırlık adımı hem maliyeti hem de kaçırılan bulguları azaltır.

Dokümantasyon: Anlayamadıkları kodla karşılaşan denetçiler ya amaçlanan davranışı tersine mühendislikle çözmek için faturalandırılabilir saatler harcar ya da daha kötüsü yanlış tahmin eder. Net NatSpec yorumları, beklenen davranışın yazılı bir belirtimi ve her harici entegrasyonun açıklaması, bir tahmin oyununu doğrulama görevine dönüştürür.

Net hedefler: "Güvenli hale getir" bir kapsam değildir. "Borç verme havuzunun fiyat oracle manipülasyonuna ve yeniden girişe karşı dayanıklı olduğunu doğrula ve yönetici işlevlerinde erişim kontrolünü onayla" bir kapsamdır. Yaygın olarak kullanılan OpenZeppelin kitaplık kalıpları gibi standartlar üzerinde anlaşmak, her iki tarafın da "doğru" nun neye benzediği konusunda ortak bir referans noktasına sahip olmasını sağlar.

Denetçilerin Aradığı Yaygın Zafiyet Sınıfları

Çoğu istismar, yinelenen kategorilerin küçük bir bölümünde kümelenir. Bunları bilmek hem manuel incelemeyi hem de araç yapılandırmasını keskinleştirir. Daha fazlası için akıllı sözleşme saldırılarına ilişkin kapsamlı kılavuzumuza bakabilirsiniz:

  • Yeniden giriş (Reentrancy): Harici bir çağrı, durum güncellemeleri tamamlanmadan önce saldırganın yeniden girmesine izin verir.
  • Tam sayı taşması/yetersizliği: Aritmetik sessizce döner (büyük ölçüde modern derleyici kontrolleriyle azaltılmış, unchecked bloklarda hâlâ risk).
  • Erişim kontrol eksiklikleri: Sahip veya rol kısıtlaması olmayan ayrıcalıklı işlevler.
  • Oracle ve fiyat manipülasyonu: Flaş kredi aracılığıyla sözleşmeye sahte fiyat besleme.
  • Ön koşma ve MEV: Değer çıkarmak için yeniden sıralanan işlemler.
  • Kontrol edilmemiş harici çağrılar: Yok sayılan dönüş değerleri, sözleşmeyi kötü bir durumda bırakır.
  • Rug pull'a olanak tanıyan mantık: Gizli mint işlevleri veya sınırsız yönetici para çekme hakları.

Son madde teknik olduğu kadar bir güven sinyalidir: Arka kapı yönetici işlevi olan kusursuz kod bile kullanıcılar için güvensizdir. Bir dApp'i denetlemek, giderek daha fazla yalnızca bellek güvenliğini değil ekonomik ve yönetişim tasarımını kontrol etmek anlamına gelmektedir.

📷 Her birinin yanında onay kutusu bulunan yedi zafiyet sınıfının etiketli bir kontrol listesi grafiği

Riskler ve Tuzaklar: Denetimi Garanti Olarak Görmek

En tehlikeli yanılgı, "denetlendi" kelimesinin "güvenli" anlamına geldiğidir. Gelmez. Denetim; belirli bir kod sürümünün belirli varsayımlar altındaki bir anlık görüntüsüdür. Birkaç tuzak, ekipleri tökezletir:

Kapsam körlüğü: Denetlenen kapsam dışında bir bağımlılık veya yükseltme vekili varsa, bir istismar denetlenmemiş kapıdan girebilir.

Denetim sonrası değişiklikler: Denetimin ardından tek bir satırı bile düzenlemek, o işlev için sonuçlarını geçersiz kılar.

Ekonomik istismarlar: Pek çok boşaltma hiçbir kod hatası içermez; denetimin hiçbir zaman modellemediği teşvik tasarımını istismar eder.

Araçlara aşırı güven: Ucuza sunulan yalnızca otomatik "denetimler" tam olarak en çok önem taşıyan yüksek önemli mantık hatalarını kaçırır.

Tek denetçi yanlılığı: Bir firmanın kör noktası, üretim olayınıza dönüşebilir; yüksek değerli sözleşmeler genellikle iki bağımsız denetim ve bir hata ödülü programı gerektirir.

Yeniden Denetim Takvimi: Ne Zaman Tekrar Denetim Yaptırılmalı?

Güvenlik bir kilometre taşı değil, bir süreçtir. Geçen çeyrekte temiz olan bir sözleşme, bir yükseltmenin ardından temiz olmayabilir. Taze bir denetim için mantıklı tetikleyiciler şunlardır:

  • Önemli herhangi bir kod değişikliğinden veya yeni özellikten sonra.
  • Büyük bir mainnet dağıtımından veya geçişten önce.
  • Yüksek değerli, görev açısından kritik sözleşmeler için periyodik olarak (örneğin yıllık).
  • İlgili yeni bir saldırı sınıfı kamuya açıklandığında; yeni bir istismar tekniğinden önce güvenli olan şey, sonradan güvenli olmayabilir.

Yeniden denetimleri, köprülerin nasıl yeniden incelendiği gibi rutin bakım olarak değerlendirin; bir başarısızlık kabulü olarak değil. Blokzinciri güvenlik denetimlerine daha geniş bir perspektiften bakmak için blokzinciri güvenlik denetimleri rehberimizi incelemenizi öneririz.

COINOTAG Perspektifi

COINOTAG olarak zincir üzerindeki olayları piyasalar genelinde takip ederken tutarlı bir örüntü görüyoruz: En maliyetli başarısızlıklar nadiren egzotik, hiç görülmemiş hatalardan kaynaklanıyor. "Küçük" bir yükseltmenin ardından atlanan yeniden denetimlerden, kalıcı bir onay mührü olarak değerlendirilen tek denetimden ve hiçbir statik analizörün yakalamak için inşa edilmediği ekonomik tasarımlardan geliyor.

Kullanıcılar için pratik çıkarım şudur: "X tarafından denetlendi" rozetini okumakla kalmayın; hangi sürümün denetlendiğini, neyin kapsama dahil edildiğini, raporun Kritik ve Yüksek bulgularının gerçekten çözülüp çözülmediğini ve aktif bir hata ödülü programı olup olmadığını kontrol edin. Rozet pazarlamadır; yayımlanmış, çözülmüş rapor ise kanıttır.

İnşaatçılar için sürekli test artı iki bağımsız incelemeye bütçe ayırmak, tek bir dokuz haneli istismara kıyasla ucuzdur. Güvenlik kültürü teknik bir uygulama değil, stratejik bir yatırımdır.

Sonuç

Akıllı sözleşmeyi denetlemek katmanlı bir disiplindir: önce kapsam ve tehdit modeli, her satırı elle okuma, araçların genişliği kapsamasına izin verme, amansızca test etme ve fuzzing, ardından her bulguyu önem derecesine göre puanlama ve iyileştirme. Zincir üzerindeki kod sonradan yamalı olmadığından bu titizlik isteğe bağlı cilalama değildir; merkezi olmayan herhangi bir uygulamada güvenin temelidir. Kapsamlı bir ilk denetimi disiplinli yeniden denetimler ve sürekli testlerle eşleştirin; böylece değiştirilemez kodu bir yükümlülükten gerçek bir güvenlik avantajına dönüştürün.

Sıkça Sorulan Sorular

Akıllı sözleşme denetimi basitçe ne anlama gelir?

Dağıtımdan önce güvenlik açıklarını, mantık hatalarını ve istismar edilebilir zafiyetleri bulmak amacıyla sözleşmenin zincir üzerindeki kodunun yapılandırılmış güvenlik incelemesidir. Dağıtılan kod değiştirilemez olduğundan denetim, kullanıcı fonlarını boşaltabilecek bir hatayı yakalamak için gerçekçi son fırsattır.

Akıllı sözleşme denetimi ne kadar sürer?

Boyuta ve karmaşıklığa bağlıdır. Küçük bir token sözleşmesi birkaç gün sürebilirken, birbiriyle etkileşen birden fazla sözleşmeye sahip karmaşık bir DeFi protokolü birkaç hafta alabilir. Otomatik taramalar dakikalar içinde tamamlanır, ancak uzman manuel incelemesi ve iyileştirme döngüsü zaman çizelgesini belirler.

Otomatik araçlar manuel kod incelemesinin yerini alabilir mi?

Hayır. Statik analizörler ve fuzz araçları büyük kod tabanlarını hızla kapsar ve bilinen kalıpları yakalar, ancak bağlama özgü mantık hatalarını ve ekonomik açıkları kaçırır, yanlış pozitif üretir. Endüstri standardı, araçların önce sınıflandırmasını yaptığı, insan uzmanların ise derinlemesine analiz ettiği hibrit bir iş akışıdır.

Denetlenmiş bir akıllı sözleşme tamamen güvenli midir?

Hayır. Denetim, belirli bir kod sürümünün belirli varsayımlar altındaki anlık bir görüntüsüdür. Denetimden sonraki herhangi bir değişiklik, kapsam dışındaki bağımlılıklar veya teşvik tasarımı hataları hâlâ istismar edilebilir. 'Denetlendi'yi bir sinyal olarak değerlendirin, garanti değil, ve Kritik ile Yüksek bulguların gerçekten düzeltilip düzeltilmediğini kontrol edin.

Akıllı sözleşme ne sıklıkla yeniden denetlenmelidir?

Önemli herhangi bir kod değişikliği veya yeni özelliğin ardından, büyük bir dağıtımdan önce, yüksek değerli sözleşmeler için periyodik olarak (örneğin yıllık) ve kamuoyuna açıklanan yeni bir saldırı sınıfı ortaya çıktığında yeniden denetim yaptırılmalıdır.

Denetimlerin bulduğu en yaygın zafiyetler nelerdir?

Yinelenen sınıflar arasında yeniden giriş (reentrancy), erişim kontrol boşlukları, oracle ve fiyat manipülasyonu, unchecked bloklarda tam sayı taşması, kontrol edilmemiş harici çağrılar, ön koşma/MEV ve rug pull'u mümkün kılan gizli yönetici işlevleri yer almaktadır.

Son güncelleme: 15.06.2026

İlgili Rehberler