Akıllı Sözleşme ve Web3 Güvenlik Denetimi: Otomatik Kontrat Analizi
Akıllı sözleşme hataları geri alınamaz ve felakettir. KAOS kontratları otomatik analiz eder, reentrancy, erişim kontrolü, oracle manipülasyonu gibi sınıfları tespit eder ve sömürülebilirliği doğrular. Statik ve dinamik analiz, yaygın zafiyet sınıfları, Slither ve Mythril, AI ile ölçeklenen denetim. İnsan incelemesini tamamlar.
Bir akıllı sözleşme zincire dağıtıldıktan sonra geri dönüş yoktur. Geleneksel bir web uygulamasında bir hatayı fark ettiğinizde sunucuya bağlanır, yamayı yükler ve sayfayı yenilersiniz. Blokzincirde böyle bir lüksünüz yoktur. Kodunuz değişmez bir defterde yaşar, herkese açıktır, dünyanın her yerinden okunabilir ve saldırı yüzeyi yatırılan her token kadar değerlidir. Bir saldırgan kontratınızdaki tek bir mantık hatasını bulduğunda, fonları çekmek için izin istemez. İşlemi gönderir, blok onaylanır ve para gider. Geri alma butonu yoktur.
Bu yüzden akıllı sözleşme denetimi, kurumsal güvenlikteki en yüksek bahisli disiplinlerden biridir. Bir web sitesindeki XSS açığı utanç verici olabilir, ancak bir DeFi protokolündeki reentrancy açığı dakikalar içinde milyonlarca dolar buharlaştırabilir. Tarihteki en bilinen örnek, 2016'daki DAO saldırısıdır: tek bir reentrancy hatası, o günkü değeriyle on milyonlarca dolarlık Ether'in tahliye edilmesine ve Ethereum ağının bir çatallanmaya (hard fork) gitmesine yol açtı. O olaydan bu yana araçlar gelişti, ancak temel gerçek değişmedi: zincir üstü istismarlar kalıcıdır, kamuya açıktır ve geri alınamaz.
Bu yazıda, akıllı sözleşme güvenlik denetiminin neden bu kadar kritik olduğunu, en sık görülen zafiyet sınıflarını, statik ve dinamik analiz arasındaki farkı ve DSET'in egemen yapay zeka güvenlik motoru KAOS'un otomatik kontrat analizini nasıl ölçeklendirdiğini anlatacağız. KAOS'un bir bulguyu yalnızca tespit etmekle kalmayıp, kontrollü bir ortamda istismar edilebilirliğini nasıl kanıtladığını da göstereceğiz.
Hızlı Cevap
Akıllı sözleşme denetimi, bir blokzincir kontratının zincire dağıtılmadan önce reentrancy, erişim kontrolü, tam sayı taşması ve oracle manipülasyonu gibi zafiyet sınıflarına karşı incelenmesidir. DSET'in KAOS motoru, Slither ve Mythril gibi araçları çok ajanlı bir mimariyle birleştirerek bu süreci otomatikleştirir, her bulguyu kanıt (PoC) ile doğrular ve yanlış pozitif raporlamamak için kontrollü bir kum havuzunda canary çapalarla teyit eder. Otomatik analiz, insan denetimini hızlandırır ve tarama kapsamını genişletir, ancak onun yerini almaz: ikisi birlikte en güçlü savunmayı oluşturur.
Akıllı Sözleşme Hataları Neden Felaket ve Geri Alınamaz?
Geleneksel yazılımda bir güvenlik açığı, en kötü ihtimalle bir veri ihlaline yol açar. Akıllı sözleşmelerde ise açık, doğrudan paraya bağlıdır. Kontratlar genellikle değer (token, stablecoin, native coin) tutar ve bu değer, kodun mantığına göre hareket eder. Kod hatalıysa, para hatalı şekilde hareket eder.
Bu durumu özellikle tehlikeli kılan üç özellik vardır. Birincisi, değişmezlik: dağıtılmış bir kontratın kodu kural olarak değiştirilemez. Yükseltilebilir (upgradeable) proxy desenleri bir esneklik sağlar, ancak bu desenler de kendi zafiyet sınıflarını getirir ve çoğu kontrat dağıtıldığı gibi kalır. İkincisi, şeffaflık: bytecode herkese açıktır ve çoğu projenin kaynak kodu doğrulanmıştır. Bir saldırgan, kontratınızı sizin kadar, hatta sizden daha dikkatli okuyabilir. Üçüncüsü, kesinlik: bir işlem onaylandığında geri alınamaz. Bir bankada şüpheli işlem dondurulabilir; blokzincirde böyle bir merci yoktur.
Bu üç özellik bir araya geldiğinde, akıllı sözleşme güvenliği "savunmasını ilk seferde doğru yapma" disiplinine dönüşür. Dağıtımdan sonra zafiyet bulmak, çoğu zaman saldırganın bulmasından sonra demektir. İşte bu yüzden web3 güvenlik, dağıtım öncesi denetimi merkeze alır.
En Sık Görülen Zafiyet Sınıfları
Akıllı sözleşme zafiyetleri rastgele değildir; tekrar eden desenler izler. Sektör bu desenleri SWC Registry (Smart Contract Weakness Classification) ve daha genel anlamda CWE (Common Weakness Enumeration) altında sınıflandırır. Bir denetimin değerli olması için bu sınıfların her birini sistematik olarak kapsaması gerekir.
Reentrancy. En klasik ve hâlâ en yıkıcı sınıf. Bir kontrat, durumunu güncellemeden önce harici bir adrese çağrı yaptığında, o harici adres geri çağrı yaparak fonksiyonu tekrar tekrar tetikleyebilir. DAO saldırısının kalbinde bu vardı. Çözüm "checks-effects-interactions" desenidir: önce kontrol et, sonra durumu güncelle, en son harici etkileşime gir.
Erişim kontrolü hataları. Bir fonksiyonun yalnızca yetkili adresler tarafından çağrılması gerekirken bu kontrolün eksik veya hatalı olması. onlyOwner benzeri kısıtların unutulması, sahiplik devrinin yanlış yapılması veya başlatma (initialize) fonksiyonunun korumasız bırakılması bu sınıfa girer. Sonuç genellikle yetkisiz para çekme veya kontrolü ele geçirmedir.
Tam sayı taşması ve eksik akışı (integer overflow/underflow). Solidity 0.8 öncesinde aritmetik işlemler sessizce taşardı; bir bakiyeyi sıfırın altına düşürmek dev bir sayıya dönüşebilirdi. 0.8 sonrasında dil bunu varsayılan olarak engeller, ancak unchecked blokları, montaj (assembly) kodu ve eski kontratlarla etkileşim bu riski geri getirir.
Oracle ve fiyat manipülasyonu. DeFi protokolleri fiyat bilgisi için oracle'lara güvenir. Bir saldırgan, anlık likiditeyi flash loan ile bozarak bir AMM havuzunun spot fiyatını manipüle edebilir ve protokolü yanlış fiyatla işlem yapmaya zorlayabilir. Zaman ağırlıklı ortalama fiyat (TWAP) ve birden fazla bağımsız oracle kullanmak bu riski azaltır.
Front-running ve işlem sıralaması. Mempool herkese açık olduğundan, bekleyen işlemleri gören bir saldırgan daha yüksek gaz ödeyerek öne geçebilir. Sandviç saldırıları ve MEV (Maximal Extractable Value) bu sınıftan doğar.
tx.origin kötüye kullanımı. Yetkilendirme için msg.sender yerine tx.origin kullanmak, kimlik avı tarzı saldırılara kapı açar; araya giren kötü niyetli bir kontrat, kurbanın kimliğiyle işlem yaptırabilir.
Bu listeyi DeFi güvenlik bağlamında genişletebiliriz: yanlış erişim kısıtlanmış başlatıcılar, ödül hesaplama yuvarlama hataları, imzalanmış mesaj tekrar oynatma (replay) açıkları ve yetersiz girdi doğrulaması. Her biri reentrancy kadar bilinmese de, gerçek protokollerde fon kaybına yol açmıştır.
Statik Analiz mi, Dinamik Analiz mi?
Akıllı sözleşme analizinde iki temel yaklaşım vardır ve olgun bir denetim ikisini de kullanır.
Statik analiz, kodu çalıştırmadan inceler. Soyut sözdizimi ağacını, kontrol akış grafiğini ve veri akışını analiz ederek tehlikeli desenleri arar. Slither bu kategorinin en yaygın aracıdır: hızlıdır, yüzlerce dedektör kuralıyla gelir ve reentrancy, korumasız fonksiyonlar, tehlikeli delegatecall kullanımı gibi sınıfları saniyeler içinde işaretler. Statik analizin gücü kapsam ve hızdır; zayıflığı ise yanlış pozitif eğilimidir. Bir desen tehlikeli görünebilir ama gerçek bir saldırı senaryosunda istismar edilemez olabilir.
Dinamik analiz, kodu çalıştırarak veya sembolik olarak yürüterek davranışını gözlemler. Mythril, sembolik yürütme kullanarak kontratın hangi girdilerle hangi tehlikeli durumlara ulaşabileceğini hesaplar. Bu yaklaşım, statik analizin kaçırdığı yol bağımlı hataları yakalar ve bir zafiyetin gerçekten ulaşılabilir olup olmadığını gösterir. Bedeli ise performanstır: sembolik yürütme yavaş olabilir ve durum patlaması (state explosion) ile karmaşık kontratlarda tıkanabilir.
Doğru cevap "biri ya da diğeri" değildir. Statik analiz geniş bir ağ atar, dinamik analiz ve sembolik yürütme bu ağdaki gerçek balıkları doğrular. KAOS tam olarak bu birleşimi otomatikleştirir.
KAOS Kontrat Analizini Nasıl Otomatikleştirir?
KAOS, DSET'in egemen, yüzde yüz yerel ve sıfır API bağımlılığına sahip yapay zeka güvenlik motorudur. Başka bir modelin etrafına sarılmış bir kabuk değil, kendi yapay zekasıdır. Bir orkestratör (swarm) tarafından koordine edilen 75'ten fazla uzman ajandan oluşan çok ajanlı bir sistemdir. Bu mimari, akıllı sözleşme denetiminde belirleyici bir avantaj sağlar: tek bir araç yerine, her biri belirli bir zafiyet sınıfında uzmanlaşmış ajanların bir orkestra gibi birlikte çalışmasını sağlar.
Web3 tarafında KAOS, Slither ve Mythril gibi araçları akışına entegre eder. Slither ile kontratı hızlıca tarayıp aday desenleri çıkarır: reentrancy, erişim kontrolü hataları, tam sayı sorunları, oracle ve fiyat manipülasyonu açıkları, tx.origin kötüye kullanımı. Ardından Mythril'in sembolik yürütmesiyle bu adayların gerçekten ulaşılabilir olup olmadığını değerlendirir. Bu, statik kapsamla dinamik doğrulamayı tek bir akışta birleştirir.
KAOS'un farkı, çekirdek döngüsündedir: üret, doğrula, öğren. KAOS yalnızca bir uyarı listesi üretmez. Bir bulgu için kendi istismarını yazar, bunu bir kanıt (PoC) ile somutlaştırır ve kontrollü bir kum havuzunda canary çapalarla çalıştırarak istismarın gerçekten işe yarayıp yaramadığını teyit eder. Eğer canary tetiklenmezse, bulgu yanlış pozitif olarak elenir. Bu yaklaşım, statik araçların en büyük zayıflığını, yani gürültülü yanlış pozitif çıktıyı doğrudan hedef alır. Onaylanmış her bulgu ise bir vektör hafızasına yazılır; KAOS bir sonraki denetimde benzer desenleri daha hızlı ve daha güvenle tanır. Bu doğrulama disiplini hakkında daha fazlasını yanlış pozitifsiz güvenlik testi yazımızda okuyabilirsiniz.
KAOS'un kapsamı yalnızca kontratlarla sınırlı değildir. Aynı motor web, mobil, exe, apk, tarayıcı eklentileri, dosyalar, binary ve terminal/altyapı dahil her saldırı yüzeyini uçtan uca tarar. Bir web3 projesi yalnızca akıllı sözleşmeden ibaret değildir; bir ön yüz, bir RPC katmanı, cüzdan entegrasyonları ve sıklıkla bir backend içerir. KAOS bu yüzeylerin tamamını tek bir motorla değerlendirebilir. Motorun genel mimarisini KAOS sayfasında inceleyebilirsiniz.
Yapay Zeka Denetimi Nasıl Ölçeklendirir?
Akıllı sözleşme denetiminin geleneksel darboğazı, uzman insan zamanıdır. Nitelikli bir denetçi pahalıdır, sınırlı sayıdadır ve her kontrata harcayabileceği saat sayısı sonludur. Web3 ekosistemi ise her gün yeni protokoller, yeni token standartları ve yeni kompozisyon desenleri üretir. Talep, insan denetim kapasitesini sürekli olarak aşar.
Yapay zeka burada bir çoğaltıcı olarak devreye girer. KAOS, bir denetçinin saatler harcayacağı ilk geçiş taramasını dakikalara indirir. 800.000'den fazla doküman, tüm CVE kayıtları ve 17.000'den fazla GitHub deposundan oluşan bilgi tabanı, motorun bilinen zafiyet desenlerini ve gerçek dünya istismarlarını tanımasını sağlar. Bu, bir denetçinin yıllar içinde biriktireceği örüntü tanıma yetisini ölçeklenebilir hale getirir.
Ölçeklenebilirliğin kanıtı soyut değildir. KAOS, sektörde tanınan XBOW benchmark'ının tamamını, 104 zorluğun 104'ünü tek bir koşuda çözdü (yüzde 100). Bu sonuç, bir motorun yalnızca zafiyet tespit etmesini değil, onları gerçekten istismar ederek doğrulamasını ölçer. Otomatik analizin yüzeysel bir tarama değil, çalışan bir saldırı zinciri üretebildiğinin somut göstergesidir.
Ancak ölçek, dikkatsizlik anlamına gelmez. KAOS'un üret-doğrula-öğren döngüsü, ölçeği gürültüyle değil, kanıtla birleştirir. Yüzlerce kontratı taramak, eğer her bulgu yanlış pozitifse, bir denetçinin işini kolaylaştırmaz, zorlaştırır. KAOS'un canary tabanlı doğrulaması tam da bu nedenle vardır: ölçeği anlamlı kılan, hacim değil, doğrulanmış sinyaldir.
Raporlama: Her Bulgu Bir Kanıt ve Çözümle Gelir
Bir denetimin değeri, bulduğu açıklarla değil, o açıkları eyleme dönüştürülebilir hale getirmesiyle ölçülür. Bir geliştirici ekibi, "burada reentrancy olabilir" demekten fazlasına ihtiyaç duyar; nerede, nasıl ve hangi koşulda sömürülebileceğini, ve bunu nasıl düzelteceğini bilmek ister.
KAOS, her bulguyu bir kanıt (PoC) ve bir düzeltme önerisiyle birlikte sunar. PoC, zafiyetin teorik değil gerçek olduğunu gösterir: hangi girdilerle, hangi sırayla istismarın çalıştığını somutlaştırır. Düzeltme önerisi ise ekibi doğru yöne yönlendirir, örneğin checks-effects-interactions deseninin uygulanması veya bir erişim kısıtının eklenmesi. Raporlar Markdown, HTML, JSON ve SARIF formatlarında üretilir. SARIF desteği özellikle önemlidir, çünkü bulguların doğrudan CI/CD hatlarına ve mevcut güvenlik araçlarına entegre edilmesini sağlar.
Bu, denetimi tek seferlik bir olay olmaktan çıkarıp sürekli bir sürece dönüştürür. Her kod değişikliğinde KAOS yeniden koşabilir, yeni bulguları kanıtla raporlayabilir ve ekibin güvenlik duruşunu zaman içinde izlenebilir kılar.
Otomatik Analiz İnsan Denetiminin Yerini Alır mı?
Hayır, ve bu önemli bir nokta. KAOS güçlü bir otomasyon ve yapay zeka destekli analiz motorudur, resmi bir denetim firması sertifikası değildir. Otomatik akıllı sözleşme analizi, insan denetimini tamamlar, onun yerini almaz.
Otomatik analizin parlak olduğu yerler bellidir: bilinen zafiyet sınıflarını hızla taramak, geniş kod tabanlarını kapsamak, yanlış pozitifleri kanıtla elemek ve değişikliklerde sürekli yeniden çalışmak. İnsan denetçinin vazgeçilmez olduğu yerler de bellidir: protokolün ekonomik mantığını anlamak, tasarımdaki niyeti sorgulamak, birden fazla kontratın etkileşiminden doğan kompozisyon risklerini değerlendirmek ve bir saldırganın yaratıcı düşünce zincirini öngörmek.
En güçlü model, ikisinin birleşimidir. KAOS, denetçinin önündeki gürültüyü temizler ve geniş kapsamı dakikalar içinde sağlar; insan denetçi ise kurtarılan o zamanı protokole özgü, derin mantık analizine ayırır. Otonom sistemlerin ve trading botlarının güvenliğine ilgi duyuyorsanız, otonom kripto trading botu güvenliği yazımız bu kompozisyon riskine daha yakından bakar. KAOS'un yapay zeka tabanlı tarama yaklaşımının genel hatları için ise KAOS yapay zeka siber güvenlik tarama aracı yazımıza göz atabilirsiniz.
Adım Adım Bir Denetim Nasıl Yürür?
Disiplinli bir akıllı sözleşme denetimi rastgele bir tarama değildir; tekrarlanabilir bir sıraya oturur. Aşağıdaki akış, KAOS gibi otomatik bir motorla insan gözünü birleştiren tipik bir denetimin iskeletidir.
1. Kapsam ve tehdit modeli. Önce neyin denetlendiğini netleştirirsiniz. Hangi kontratlar derleme kapsamında, hangi kütüphaneler dış bağımlılık, hangi adresler yetkili rollere sahip? Bir lending protokolü ile bir NFT mint kontratı tamamen farklı tehdit yüzeylerine sahiptir. Bu adımda fonların nereden girip nereden çıktığını, hangi fonksiyonların değer hareket ettirdiğini ve kimin neyi çağırabildiğini haritalarsınız. Tehdit modeli yanlışsa, sonraki her adım yanlış yere bakar.
2. Derleme ve ortam kurulumu. Kontratın derlenmesi gerekir; doğru Solidity sürümü, doğru optimizasyon ayarları ve bağımlılıkların çözülmesi şarttır. KAOS bu aşamada solc sürüm uyumsuzluklarını otomatik düzeltir, çünkü Slither ve Mythril farklı sürüm beklentilerine takılabilir. Derlenemez bir kontrat, denetlenemez bir kontrattır.
3. Statik tarama. Slither koşar ve saniyeler içinde aday desenlerin listesini çıkarır: korumasız fonksiyonlar, durum güncellemesi öncesi harici çağrılar, tehlikeli delegatecall kullanımı, gölgeleme (shadowing) yapan değişkenler. Bu liste ham bir sinyaldir, bir karar değil. İçinde gerçek açıklar da gürültü de vardır.
4. Sembolik ve dinamik doğrulama. Mythril, statik taramanın işaretlediği yolların gerçekten ulaşılabilir olup olmadığını sembolik yürütmeyle değerlendirir. Bir desen "reentrancy olabilir" diyorsa, soru şudur: hangi girdiyle, hangi durum altında bu yol gerçekten tetiklenir? Ulaşılamayan bir yol, kâğıt üzerinde tehlikeli ama pratikte ölü bir koddur.
5. İstismar üretimi ve kanıt. KAOS'un ayrıştığı yer burasıdır. Doğrulanmış bir aday için motor kendi istismarını yazar, kontrollü bir kum havuzunda çalıştırır ve canary çapasının tetiklenip tetiklenmediğine bakar. Canary tetiklenirse bulgu gerçektir ve PoC'si vardır; tetiklenmezse bulgu elenir. Bu adım, "olabilir" ile "oldu" arasındaki çizgiyi çeker.
6. İnsan incelemesi. Otomatik motorun temizlediği gürültünün ardından, insan denetçi protokole özgü mantığa odaklanır: ödül hesaplamasındaki yuvarlama, iki kontrat arasındaki kompozisyon varsayımları, ekonomik teşviklerin kötüye kullanımı. Bunlar genellikle tek bir satırda değil, tasarımın bütününde yaşar.
7. Raporlama ve yeniden test. Her bulgu, konumu, etkisi, PoC'si ve düzeltme önerisiyle raporlanır. Düzeltme uygulandıktan sonra denetim yeniden koşar, çünkü bir yamanın yeni bir açık doğurmadığını kanıtlamak, ilk açığı bulmak kadar önemlidir.
Statik, Dinamik ve Yapay Zeka Destekli Analiz: Bir Karşılaştırma
Bu üç yaklaşımı yan yana koymak, hangisinin neyi yakaladığını netleştirir.
Statik analiz hızlıdır ve kapsamı geniştir. Tüm kod tabanını dakikalar içinde tarar, hiçbir yolu çalıştırma maliyeti olmadan kontrol eder. Bedeli, bağlam körlüğüdür: bir deseni tehlikeli görür ama o desenin gerçek bir saldırıda erişilebilir olup olmadığını bilemez. Bu yüzden yanlış pozitif üretir. Slither bu kategorinin temsilcisidir ve bir denetimin başlangıç noktası olarak vazgeçilmezdir.
Dinamik ve sembolik analiz derinlemesine gider. Kodu gerçekten yürütür veya tüm girdi uzayını sembolik olarak keşfeder, böylece yol bağımlı hataları ve gerçek ulaşılabilirliği gösterir. Bedeli performanstır: karmaşık kontratlarda durum patlaması yaşanır, analiz saatlerce sürebilir veya hiç tamamlanamaz. Mythril güçlüdür ama her kontratta sınırsız ölçeklenmez.
Yapay zeka destekli analiz, bu ikisinin üstüne bir karar katmanı ekler. KAOS, statik taramanın genişliğini ve sembolik yürütmenin derinliğini alır, ardından kendi istismarını üretip kanıtla doğrular. Fark, çıktının niteliğindedir: statik bir araç size yüz uyarı verir, sembolik bir araç bunların hangilerinin ulaşılabilir olduğunu söyler, yapay zeka destekli motor ise hangilerinin gerçekten istismar edilebildiğini çalışan bir PoC ile gösterir. Üstelik onaylanmış her bulgu bir vektör hafızasına yazıldığından, motor zamanla daha iyi karar verir.
Bu üçü birbirinin rakibi değildir. Statik analiz ağ atar, dinamik analiz balıkları doğrular, yapay zeka destekli katman ise hangilerinin tabağa konacak kadar gerçek olduğunu söyler. KAOS bu üç katmanı tek bir akışta birleştirir.
Tarihsel İstismarlardan Çıkan Dersler
Akıllı sözleşme güvenliğinin teorisi soyut görünebilir, ama her zafiyet sınıfının arkasında gerçek para kaybeden gerçek bir olay vardır. Kavramsal düzeyde birkaç desene bakmak, neden bu kadar titiz olduğumuzu açıklar.
Reentrancy ve 2016 DAO olayı. En çok anılan örnektir çünkü hem yıkıcı hem de eğiticiydi. Bir çekme fonksiyonu, kullanıcının bakiyesini sıfırlamadan önce parayı gönderiyordu. Saldırgan, parayı alan adrese geri çağrı mantığı yerleştirerek aynı çekmeyi defalarca tetikledi. Ders açıktır: durumu harici çağrıdan önce güncelle. Checks-effects-interactions deseni bu olaydan sonra sektörün refleksi haline geldi.
Erişim kontrolü ve korumasız başlatıcılar. Birçok proxy tabanlı protokolde, mantık kontratının initialize fonksiyonu yanlışlıkla korumasız bırakıldı. Bir saldırgan bu fonksiyonu kendisi çağırarak kontratın sahibi oldu ve fonları yönlendirdi. Ders: yetki belirleyen her fonksiyon, ya yapıcıda (constructor) ya da tek seferlik bir koruyucuyla kilitlenmeli; "nasılsa biz çağıracağız" varsayımı bir savunma değildir.
Oracle manipülasyonu ve flash loan. Birçok DeFi istismarı tek bir işlemde gerçekleşti: saldırgan flash loan ile büyük bir sermaye ödünç aldı, bir AMM havuzunun spot fiyatını bozdu, manipüle edilmiş fiyatı oracle olarak kullanan protokolü kandırdı ve aynı blokta krediyi geri ödedi. Ders: anlık spot fiyat bir güvenlik temeli değildir; zaman ağırlıklı ortalamalar ve birden fazla bağımsız kaynak şarttır.
Tam sayı taşması ve eski kod. Solidity 0.8 öncesinde sessiz taşmalar, bir bakiyeyi devasa bir sayıya çevirerek bedava token üretti. Dil artık varsayılan koruma sağlasa da, unchecked blokları ve eski kontratlarla etkileşim riski geri getirir. Ders: dilin sizi koruduğunu varsaymayın; korumayı bilinçli olarak devre dışı bıraktığınız her yeri ayrıca denetleyin.
Bu olayların ortak paydası şudur: hiçbiri egzotik bir matematik dehası gerektirmedi. Hepsi, dağıtım öncesi sistematik bir denetimin yakalayabileceği, bilinen sınıflara ait hatalardı. İşte otomatik analizin değeri tam buradadır: bilinen desenleri asla yorulmadan, asla atlamadan tarar.
Dağıtım Öncesi Kontrol Listesi
Bir kontratı zincire göndermeden önce aşağıdaki maddeleri geçtiğinizden emin olun. Bu liste bir denetimin yerini tutmaz, ama denetime girmeden önceki hijyeni sağlar.
- Erişim kontrolü. Değer hareket ettiren veya yapılandırma değiştiren her fonksiyonun yetki kontrolü var mı? Sahiplik devri ve başlatıcılar korumalı mı?
- Reentrancy. Tüm harici çağrılar durum güncellemesinden sonra mı yapılıyor? Kritik fonksiyonlarda reentrancy koruyucusu var mı?
- Aritmetik. Solidity 0.8+ kullanılıyor mu? Her
uncheckedbloğu gerekçeli ve denetlenmiş mi? - Oracle. Fiyat kaynağı anlık spot yerine manipülasyona dirençli mi (TWAP, çoklu kaynak)? Flash loan senaryosu düşünüldü mü?
- Gaz ve sınırlar. Döngüler sınırsız mı? Büyük dizilerde gaz limiti aşımı kontratı kilitleyebilir mi? Blok gaz limitine bağlı varsayımlar var mı?
- Yükseltilebilirlik. Proxy deseni kullanılıyorsa, depolama düzeni (storage layout) uyumlu mu? Yükseltme yetkisi bir multisig veya zaman kilidiyle korunuyor mu?
- Harici bağımlılıklar. Kullanılan kütüphanelerin sürümleri sabitlenmiş mi? Bilinen CVE içeren bir bağımlılık var mı?
- Olaylar ve izlenebilirlik. Kritik durum değişiklikleri olay (event) yayımlıyor mu, böylece zincir üstü izleme mümkün mü?
Gaz Verimliliği ve Yükseltilebilirlik Tuzakları
Güvenlik yalnızca açık önlemekten ibaret değildir; bir kontratın çalışabilir ve bakımı yapılabilir kalması da güvenliğin parçasıdır.
Gaz verimliliği bir performans konusu gibi görünür, ama doğrudan bir güvenlik meselesine dönüşebilir. Sınırsız bir döngü, dizi büyüdükçe gaz maliyetini blok limitinin üstüne çıkarabilir ve bir fonksiyonu kalıcı olarak çağrılamaz hale getirebilir. Eğer o fonksiyon fon çekmek veya kontratı durdurmak için gerekliyse, kontrat fiilen kilitlenir. Bu yüzden denetimde döngülerin sınırlandığını, toplu işlemlerin parçalanabildiğini ve hiçbir kritik yolun kullanıcı kontrolündeki bir boyuta bağlı olmadığını doğrularız.
Yükseltilebilirlik ise iki ucu keskin bir bıçaktır. Proxy desenleri, dağıtılmış bir kontratı düzeltme imkânı verir, ama kendi zafiyet sınıflarını getirir. Depolama düzeni uyumsuzluğu, yeni bir mantık kontratının eski verinin üstüne yanlış değişken yazmasına yol açabilir ve sessizce veriyi bozabilir. Korumasız bir yükseltme fonksiyonu, saldırgana tüm kontratı değiştirme yetkisi verir. Başlatıcı fonksiyonların birden fazla kez çağrılabilmesi, sahipliği yeniden ele geçirme kapısı açar. Bu yüzden yükseltilebilir kontratlarda denetim, yalnızca mevcut mantığı değil, yükseltme mekanizmasının kendisini de hedef alır: yükseltme yetkisi kimde, hangi gecikmeyle ve hangi kontrolle çalışıyor? KAOS bu desenleri proxy'ye özgü dedektörlerle işaretler ve insan denetçi yükseltme yönetişiminin tasarım niyetini değerlendirir.
SSS
Akıllı sözleşme denetimi tam olarak nedir?
Akıllı sözleşme denetimi, bir blokzincir kontratının kaynak kodunun ve davranışının, zincire dağıtılmadan önce güvenlik zafiyetlerine karşı sistematik olarak incelenmesidir. Bu süreç, reentrancy, erişim kontrolü hataları, tam sayı sorunları ve oracle manipülasyonu gibi bilinen zafiyet sınıflarını arar. Hem statik analiz (kodu çalıştırmadan inceleme) hem de dinamik analiz (kodu çalıştırarak veya sembolik olarak yürüterek davranışı gözlemleme) kullanır. Amaç, fonların risk altında olduğu istismar edilebilir açıkları, bir saldırgan bulmadan önce tespit etmek ve düzeltmektir.
Reentrancy neden bu kadar tehlikeli bir açık?
Reentrancy, bir kontrat durumunu güncellemeden önce harici bir adrese çağrı yaptığında ortaya çıkar. O harici adres, kötü niyetli bir kontrat ise, geri çağrı yaparak orijinal fonksiyonu tekrar tekrar tetikleyebilir ve örneğin bakiye düşürülmeden önce defalarca para çekebilir. Bu sınıf, 2016'daki DAO saldırısının kalbindeydi ve o günden bu yana defalarca tekrarlandı. Tehlikeli olmasının nedeni, hem yıkıcı (fonların tamamen tahliyesi) hem de sezgilere aykırı olmasıdır: kod ilk bakışta doğru görünür. Doğru savunma, checks-effects-interactions deseni ve reentrancy koruyucularıdır.
KAOS yanlış pozitif raporlamayı nasıl önlüyor?
KAOS'un çekirdek döngüsü üret, doğrula, öğren şeklindedir. Bir zafiyet adayı tespit ettiğinde, motor o açık için kendi istismarını yazar ve bunu kontrollü bir kum havuzunda canary çapalarla çalıştırır. Canary, istismarın gerçekten başarılı olduğunda tetiklenen bir işarettir. Eğer istismar canary'yi tetiklemezse, bulgu istismar edilemez kabul edilir ve elenir. Bu sayede rapora yalnızca kanıtlanmış, gerçekten istismar edilebilir bulgular girer. Onaylanan her bulgu ayrıca bir vektör hafızasına işlenir, böylece motor benzer desenleri gelecekte daha hızlı tanır.
Otomatik analiz insan denetçinin yerini alabilir mi?
Hayır. KAOS, otomatik ve yapay zeka destekli bir akıllı sözleşme güvenlik analizidir ve insan denetimini tamamlar, onun yerine geçmez. Otomatik analiz bilinen zafiyet sınıflarını hızla tarar, geniş kapsamı dakikalara indirir ve yanlış pozitifleri kanıtla eler. İnsan denetçi ise protokolün ekonomik mantığını, tasarım niyetini ve çoklu kontrat etkileşimlerinden doğan kompozisyon risklerini değerlendirir. En sağlam sonuç, otomasyonun kapsam ve hızını insan uzmanlığının derinliğiyle birleştirmektir.
Hangi araçlar ve standartlar kullanılıyor?
KAOS, web3 analizinde Slither (statik analiz) ve Mythril (sembolik yürütme) gibi yerleşik açık kaynak araçları çok ajanlı akışına entegre eder. Zafiyet sınıflandırması için sektör, SWC Registry ve daha genel olarak CWE referanslarını kullanır; web güvenliği tarafında OWASP rehberleri temel alınır. KAOS'un bilgi tabanı 800.000'den fazla doküman, tüm CVE kayıtları ve 17.000'den fazla GitHub deposunu kapsar. Raporlar Markdown, HTML, JSON ve SARIF formatlarında üretilir, böylece bulgular doğrudan CI/CD hatlarına entegre edilebilir.
Sonuç
Akıllı sözleşme güvenliği, hata payı olmayan bir disiplindir. Zincir üstü istismarlar kalıcı, kamuya açık ve geri alınamazdır; dağıtımdan sonra bulunan bir açık, çoğu zaman bir saldırgan tarafından zaten bulunmuş demektir. Bu nedenle web3 güvenlik, dağıtım öncesi, kanıta dayalı ve sürekli denetimi merkeze almak zorundadır.
DSET'in KAOS motoru, Slither ve Mythril gibi araçları çok ajanlı bir mimaride birleştirerek akıllı sözleşme analizini otomatikleştirir, her bulguyu kanıtla doğrular ve yanlış pozitif gürültüyü canary tabanlı teyit ile eler. XBOW benchmark'ının tamamını tek koşuda çözmesi, bu yaklaşımın yüzeysel değil, gerçekten istismar üretebilen bir analiz olduğunu gösterir. Ancak KAOS insan denetimini değiştirmek için değil, güçlendirmek için tasarlanmıştır: kapsamı ve hızı otomasyonun, derin mantık analizini ise insan uzmanlığının üstlendiği bir iş bölümü kurar.
Web3 projenizi dağıtmadan önce güvenlik duruşunuzu kanıta dayalı olarak değerlendirmek istiyorsanız, hizmetlerimizi inceleyin ve ekibimizle iletişime geçin. Güvenliği ilk seferde doğru yapmanın bedeli, sonradan ödenenden her zaman daha düşüktür.
Kaynaklar
Kimliğinizi doğrulayın
Yetkilendirilmiş erişim alanı. Tüm giriş denemeleri kayıt altına alınır.