Reentrancy saldırıları ilk başta karmaşık görünebilir. Bunları basit terimlerle açıklayayım ve akıllı sözleşmelerinizi güvende tutmanın bazı yollarını göstereyim 🛡️
Reentrancy Saldırısı Nedir? 🧐
Bu, ContractB'nin ContractA'nın hala çalıştığı sırada geri çağrılmasıdır. Kötü şeyler. Saldırganlar, sözleşmelerden fonları boşaltmak için bu açığı çok severler 💸
Tüm sözleşmelerinizin bunu miras almasını sağlayın. Daha güvenli bir ekosistem.
Son Trendler 🔥
Eylül 2025 itibarıyla, bu saldırılar DeFi'yi hâlâ rahatsız ediyor. Geliştiricilerin neden aynı hataları yapmaya devam ettikleri tamamen net değil. Slither gibi araçlar bu sorunları tespit edebilir. Echidna ve Foundry bunları test etmeye yardımcı olur 🚀
Güvenlik sadece bir değiştirici eklemekle ilgili değildir. Bu bir zihniyettir.
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
Reentrancy Saldırılarını Anlamak & Bunları Önlemenin Yolları 🔐
Reentrancy saldırıları ilk başta karmaşık görünebilir. Bunları basit terimlerle açıklayayım ve akıllı sözleşmelerinizi güvende tutmanın bazı yollarını göstereyim 🛡️
Reentrancy Saldırısı Nedir? 🧐
Bu, ContractB'nin ContractA'nın hala çalıştığı sırada geri çağrılmasıdır. Kötü şeyler. Saldırganlar, sözleşmelerden fonları boşaltmak için bu açığı çok severler 💸
Bunu hayal et:
Saldırı Mekanizması 🕵️♂️
İki ana şeye ihtiyacınız var:
Akış şu şekilde gider:
Bunun ne kadar basit ama yıkıcı olabileceği biraz şaşırtıcı.
Güvenlik Açığı Olan Kod Örneği 📝
İşte savunmasız bir sözleşmenin nasıl göründüğü: solidity function withdrawAll() public { uint bal = balances[msg.sender]; require(bal > 0);
}
Saldırı sözleşmesi bunu yapar: solidity fallback() harici ödenecek { eğer(etherStore.bakiye >= 1 ether) etherStore.withdrawAll(); }
function attack() external payable { require(msg.value >= 1 ether); etherStore.deposit{value: 1 ether}(); etherStore.withdrawAll(); }
Bu Saldırıları Durdurmanın Üç Yolu 🛡️
1. nonReentrant Modifier 🔒
solidity bool özel kilitli = false;
modifier nonReentrant() { require(!locked, "No reentrancy"); kilitli = true; _; locked = false; }
Zayıf fonksiyonlara ekleyin. Basit ama etkili.
2. Kontroller-Etkiler-Etkileşimler Deseni 📊
Bu çok önemli:
solidity function withdrawAll() public { uint bal = balances[msg.sender]; require(bal > 0);
}
Önce durumunuzu güncelleyin. Sonra etkileşimde bulunun. Her zaman.
3. Küresel Koruma 🌐
Büyük projeler için:
solidity sözleşme GlobalReentrancyGuard { bool private locked = false;
}
Tüm sözleşmelerinizin bunu miras almasını sağlayın. Daha güvenli bir ekosistem.
Son Trendler 🔥
Eylül 2025 itibarıyla, bu saldırılar DeFi'yi hâlâ rahatsız ediyor. Geliştiricilerin neden aynı hataları yapmaya devam ettikleri tamamen net değil. Slither gibi araçlar bu sorunları tespit edebilir. Echidna ve Foundry bunları test etmeye yardımcı olur 🚀
Güvenlik sadece bir değiştirici eklemekle ilgili değildir. Bu bir zihniyettir.
Dikkatli olun! 🛡️