Forum Akıllı Kontratlar Solidity ile Güvenli Akıllı Kontrat Yazımı: Reentr...
Akıllı Kontratlar

Solidity ile Güvenli Akıllı Kontrat Yazımı: Reentrancy Saldırılarından Korunma

Furkan Demir
4 ay önce • 152 görüntülenme

Ethereum Ağında Kendi Tokenınızı (ERC-20) Yaratırken Dikkat Etmeniz Gerekenler

Blockchain üzerinde çalışan ve şartlar sağlandığında otomatik tetiklenen kod parçacıklarına Akıllı Kontrat (Smart Contract) denir. Genellikle Solidity diliyle yazılırlar. Ancak web programlamadan farklı olarak, akıllı kontrata yazdığınız kodu blokzincire yükledikten (Deploy) sonra bir daha değiştiremezsiniz! Kodda bir güvenlik açığı varsa, milyonlarca dolar saniyeler içinde çalınabilir.

En Ölümcül Açık: Reentrancy (Yeniden Giriş) Saldırısı

Tarihteki meşhur DAO Hack olayına sebep olan bu zafiyet, kontratın "Çekim (Withdraw)" fonksiyonlarındaki mantık hatasından kaynaklanır.

Hatalı Mantık:

Kullanıcının bakiyesi kontrol edilir.

Para kullanıcıya gönderilir (`user.transfer(amount)`).

Kullanıcının bakiyesi veritabanında (State) sıfırlanır.

Saldırgan, para gönderimi anında tetiklenen özel bir zararlı kontrat (Fallback function) yazar. Bu kontrat parayı alır almaz, işlemi bitirmeden (bakiye sıfırlanma adımına geçmeden) tekrar "Çekim" fonksiyonunu çağırır. Sistem bakiyenin henüz sıfırlanmadığını gördüğü için kasadaki tüm para bitene kadar saldırgana para göndermeye devam eder (Sonsuz döngü).

Checks-Effects-Interactions Prensibi

Bu saldırıyı önlemenin tek yolu işlem sırasını değiştirmektir. Önce şartları kontrol et (Checks), sonra bakiyeyi sıfırla (Effects) ve en son parayı transfer et (Interactions). Ayrıca OpenZeppelin kütüphanesinin sağladığı ReentrancyGuard ve nonReentrant değiştiricilerini (Modifier) kullanmak sektör standardıdır.

Beğen 0
Kabul Edilmiş Cevap
Bilgi İşlem Uzmanı 1

Solidity'de Reentrancy saldırılarından korunmak için Checks-Effects-Interactions prensibini uygulamak ve bakiyeyi anında sıfırlamak hayati önem taşır.

Beğen 6

Cevap yazmak için giriş yapmalısınız.

Giriş Yap