Yeniden Girişi Anlamak - Akıllı Sözleşmedeki Bu Hata, 2026'da Hâlâ Milyonlarca Doları Boşaltıyor ve Kodda Bunun Önünü Alan Checks-Effects-Interactions Deseni
Yeniden girişi sihir değil. Sıralama hatasıdır: Sözleşmeniz, dış bir çağrı yapmadan önce kendi durumunu güncellemez, bunun yerine çağrıdan sonra günceller ve bir saldırgan bu boşlukta geri çağırır. Sıralamayı düzeltin ve hata kaybolur.
DAO, 17 Haziran 2016'da bu tam hatayı yaparak yaklaşık 3,6 milyon ETH (yaklaşık 60 milyon dolar, o zamanlar var olan tüm ETH'nin %5'ine denk gelir) kaybetti. Bu olayın sonuçları Ethereum'u ETH ve ETC olarak ikiye böldü.
On yıl sonra hâlâ fonları boşaltıyor. Solv Protokolü, 5 Mart 2026'da bir yeniden girişi nedeniyle 2,73 milyon dolar kaybetti ve Mayıs 2026'da yaklaşık 52 milyon dolar, blok zinciri üzerindeki protokollerde çalındı (DeFiLlama, CryptoTimes, 31 Mayıs 2026).
Hassas desen: Bakiyeyi oku, düşük seviyeli bir çağrı ile ETH’i gönder, SONRA bakiyeyi sıfırla. Saldırganın receive() fonksiyonu, bu sıfır değerinin uygulanmadan önce withdraw() fonksiyonuna yeniden girer ve sözleşme boşalana kadar döngüyü tekrarlar.
İki çözüm, birlikte kullanıldığında:
Checks-Effects-Interactions. Doğrula, TÜM durumu güncelle, ardından dış çağrıyı SONDA yap. balances[msg.sender] = 0 ifadesini çağrının üstüne taşı. Yeniden girilen çağrı sıfırı okur ve geri döner.
OpenZeppelin’in nonReentrant koruması. Bir depolama mutex’ü (NOT_ENTERED’dan ENTERED’e), yeniden girişte geri döner. Bununla CEI’yi birlikte kullanın, ikisinden birini değil.
Geliştiricilerin hâlâ çoğu yanlış yaptığı iki şey:
1. .transfer() artık bir kalkan değil: EIP-1884, 2019’da SLOAD gazını artırınca 2300 gaz limiti güvenli bir varsayım olmaktan çıktı. CEI ile .call{value:}("") kullanın.
2. Salt okunur yeniden girişi standart korumayı atlar, çünkü güncelleme sırasında okunan view fonksiyonu bozuk durumu döndürür ve bir fiyat oracle’ını zehirleyebilir (dForce, 3,64 milyon dolar).
Sadece eğitim amaçlıdır. Finansal tavsiye değildir.
Günlük içgörüler için takip edin — blok zinciri ile yapay zekanın buluştuğu yerde, her seferinde bir tatmin edici kaydırma ile.
#Solidity #SmartContractSecurity #Web3Security #Ethereum #DeFi #SmartContracts #BlockchainDeveloper #SolidityDev #EVM #OpenZeppelin #Reentrancy #Web3Dev #BlockchainSecurity #DeFiSecurity #SmartContractAudit #CodeSecurity #OnChain #BlockchainEducation