Yeniden giriş saldırıları hala bir sorundur.Mevcut savunma yöntemleri, esas olarak, yalnızca sözleşme çalışma zamanı durumuna girmeden önce yürürlüğe giren protokolün kaynak kodu düzeyine odaklanır.
"Çalışma zamanı koruması", DeFi güvenliği için önemli bir tamamlayıcıdır. "Yürütme sonuçlarını korumayı" ve protokolün yürütülmesinin beklenen tasarımla tutarlı olmasını sağlamayı amaçlar.
EVM'nin tasarımı "çalışma zamanı korumasını" desteklemez, çünkü akıllı sözleşme çalışma zamanı durumunun tam bağlam bilgilerine erişemez.
Artela, bir EVM+Extension yürütme katmanı paradigmasını araştırıyor, yeniden giriş saldırılarını ortadan kaldırmak için yürütme katmanını geliştiriyor
Artela, Aspect Programming aracılığıyla zincir üzerinde "çalışma zamanı koruması" uzantılarını uygular
Aspect aracılığıyla Eğri sözleşmesinde yeniden giriş saldırılarının nasıl önleneceğini adım adım gösteriyoruz
Mevcut risk kontrollerine rağmen yeniden giriş saldırıları neden hala sorun teşkil ediyor?
Yeniden giriş saldırıları iyi bilinen bir sorun olmasına ve birçok risk denetiminin devreye alınmasına rağmen, bu tür saldırıları içeren güvenlik olayları son iki yılda meydana gelmeye devam etti:
Curve Finance Attack (Temmuz 2023) — 60 milyon $ Curve, sözleşmeli programlama dili Vyper'daki bir derleme kusuru nedeniyle yeniden giriş saldırısına uğradı.
Origin Protocol Attack (Kasım 2022) — 7 milyon dolarlık Stablecoin projesi Origin Dollar (OUSD) yeniden giriş saldırısına uğradı.
Siren Protokolü saldırısı (Eylül 2021) — 3,5 milyon dolar, AMM havuzu yeniden giriş saldırısına maruz kaldı.
Cream Finance saldırısı (Ağustos 2021) - 18,8 milyon dolar, saldırganlar ikincil borçlanma için yeniden giriş güvenlik açığından yararlandı.
Şu anda, yeniden giriş saldırılarını önlemenin odak noktası, akıllı sözleşmelerin kaynak kodu seviyesindedir Önlemler, OpenZeppelin'in ReentrancyGuard'ını entegre etmeyi ve önceden tanımlanmış güvenlik risklerini önlemek için sözleşme mantık kodlarında güvenlik denetimleri yapmayı içerir.
"Beyaz kutu" çözümü olarak bilinen bu yaklaşım, mantık hatalarını en aza indirmek için kaynak kod düzeyinde güvenlik açıklarından kaçınmayı amaçlar. Ancak asıl zorluğu, bilinmeyen gizli tehlikelere karşı savunma yapamamaktır.
Bir sözleşmeyi kaynak kodundan gerçek çalışma zamanına "çevirmek" zorlu bir süreçtir. Her adım, geliştiriciler için öngörülemeyen sorunları beraberinde getirebilir ve sözleşme kaynak kodunun kendisi tüm olası durumları tam olarak kapsamayabilir. Curve durumunda, protokol kaynak kodu doğru olsa bile, derleyici sorunları nedeniyle son çalıştırma ile protokolün amaçlanan tasarımı arasında yine de tutarsızlıklar olabilir.
Kaynak kodu ve derleme düzeyinde protokolün güvenliğine güvenmek yeterli değildir. Kaynak kodu kusursuz görünse bile, derleyici sorunları nedeniyle güvenlik açıkları beklenmedik şekilde ortaya çıkabilir.
Çalışma zamanı korumasına ihtiyacımız var
Protokol kaynak kodu seviyesinde yoğunlaşan ve yürütmeden önce yürürlüğe giren mevcut risk kontrol önlemlerinin aksine, çalışma zamanı koruması, protokol geliştiricilerin çalışma zamanı öngörülemeyen durumlarla başa çıkmak için çalışma zamanı koruma kuralları ve operasyonları yazmasını içerir. Bu, gerçek zamanlı değerlendirmeyi ve çalışma zamanı yürütme sonuçlarına yanıt vermeyi kolaylaştırır.
Çalışma zamanı koruması, DeFi güvenliğini geliştirmede kritik öneme sahiptir ve mevcut güvenlik önlemlerine önemli bir ektir. Protokolü "kara kutu" tarzında koruyarak, sözleşme kodunun yürütülmesine doğrudan müdahale etmeden nihai çalışma sonucunun protokolün amaçlanan tasarımıyla tutarlı olmasını sağlayarak güvenliği artırır.
Çalışma zamanı korumasını uygulamanın zorlukları
Ne yazık ki EVM tasarımı, zincir üzerinde çalışma zamanı korumasını desteklemiyor çünkü akıllı sözleşmeler tam çalışma zamanı içeriğine erişemiyor.
Bu zorluğun üstesinden nasıl gelinir? Aşağıdaki ön koşulların gerekli olduğuna inanıyoruz:
Tüm işlem bağlamı dahil olmak üzere akıllı sözleşmelerdeki tüm bilgilere erişim sağlayan özel bir modül.
Akıllı sözleşmeden gerekli yetki alınır ve modüle gerektiğinde işlemleri geri alma hakkı verilir.
Akıllı sözleşme yürütüldükten sonra ve durum gönderilmeden önce modülün işlevselliğinin etkili olduğundan emin olun.
EVM şu anda yukarıdaki zorlukları ele alma konusunda sınırlamalarla karşı karşıyadır ve daha fazla yeniliği barındıramaz. Modüler blok zincir paradigması altında, yürütme katmanının EVM'nin ötesine geçme atılımını keşfetmesi gerekiyor.
Artela'nın fikri, EVM'nin ötesine geçmek için EVM'nin WASM yerel uzantı katmanını oluşturarak EVM + yerel uzantıdır.
En Boy Programlamaya Giriş
Artela blok zinciri için blok zincirinde yerel ölçeklendirmeyi destekleyen bir programlama çerçevesi olan Aspect Programming'i başlattık.
Aspect, akıllı sözleşmelere modüler bir ek olarak özel işlevleri çalışma zamanında blok zincirine dinamik olarak entegre etmek ve zincirdeki işlevselliği geliştirmek için kullanılan programlanabilir bir yerel uzantı modülüdür.
Aspect'in özelliği, blockchain taban katmanının sistem düzeyindeki API'sine erişebilmesi ve işlem yaşam döngüsünün her bir birleştirme noktasına uzantı mantığı ekleyebilmesidir. Akıllı sözleşmeler, genişletilmiş işlevleri tetiklemek için belirli yönleri bağlayabilir. Bir işlem bir akıllı sözleşmeyi çağırdığında, işlem aynı zamanda sözleşmeyle ilişkili yön tarafından da işlenir.
Görünüş Programlaması çalışma zamanı korumasını nasıl uygular?
Aspect, her işlev çağrısının yürütme durumunu kaydedebilir ve geri arama işlevi yürütülürken yeniden girişi önleyebilir. Geri arama işlevinin yürütülmesi sırasında bir yeniden giriş çağrısı meydana geldiğinde, Aspect işlemi algılar ve hemen geri alarak saldırganların yeniden giriş güvenlik açıklarından yararlanmasını engeller. Bu yaklaşımla Aspect, yeniden giriş saldırılarını etkili bir şekilde ortadan kaldırarak akıllı sözleşmelerin güvenliğini ve istikrarını sağlar.
Aspect, çalışma zamanı koruması için temel özellikleri uygular:
Akıllı sözleşmenin yürütülmesinden sonra ve durum tesliminden önce tetiklenebilir: Aspect modülleri, akıllı sözleşmenin yürütülmesinden sonra ancak durum tesliminden önce etkinleştirilecek şekilde ayarlanabilir.
Eksiksiz işlem içeriği erişimi: Aspect, tüm işlem bilgileri (yöntemler, parametreler vb.), çağrı yığını (yürütme sırasındaki tüm dahili sözleşme çağrıları), durum bağlamı değişiklikleri ve tüm işlemle tetiklenen olaylar dahil olmak üzere tüm işlem içeriğine erişebilir.
Sistem çağrısı yeteneği: Aspect, sistem çağrıları yapabilir ve gerektiğinde işlem geri izlemelerini başlatabilir.
Akıllı sözleşmelerle bağlama ve yetkilendirme: Akıllı sözleşmeler Aspect'e bağlanabilir ve Aspect'e işlem işlemeye katılma izni verebilir.
Yeniden giriş koruması için Unsurun Uygulanması
Bu bölümde, Aspect'in çalışma zamanı korumasının zincirde nasıl uygulanacağını tartışıyoruz.
Yeniden giriş saldırılarını önlemek için "preContractCall" ve "postContractCall" birleştirme noktasında gerçek bir "Sözleşme Koruma Amacı" yönü konuşlandırılabilir.
preContractCall: Sözleşmeler arası çağrının yürütülmesinden önce tetiklenir
postContractCall: sözleşmeler arası çağrının yürütülmesinden sonra tetiklenir
Yeniden giriş koruması için amacımız, çağrı tamamlanana kadar sözleşmenin yeniden girişini önlemektir. Aspect ile bunu, işlem yaşam döngüsündeki nokta kesimlerine belirli bir mantık ekleyerek başarabiliriz.
"preContractCall" nokta kesiminde Aspect, sözleşme çağrı yığınını izler. Çağrı yığınında yinelenen çağrılar varsa (kilitli çağrımızda beklenmedik bir yeniden giriş anlamına gelir), özellik çağrıyı geri alır.
Eğri sözleşmesini dağıtın ve yeniden giriş saldırılarını önleyin
Bu süreci daha anlaşılır bir şekilde yeniden oluşturmak için bir Curve sahte sözleşmesi yazdık ve bir yeniden giriş saldırısı düzenledik. Sözleşme kodu aşağıdaki gibidir:
Yukarıdaki sözleşmenin hem likidite ekle_liquidity hem de remove_likidity'nin aynı yeniden giriş kilidi kilidi tarafından korunduğu görülebilir; bu, yeniden giriş koruması normal şekilde çalışıyorsa korunan işlevin değiştirilerek yeniden girilemeyeceği anlamına gelir. kilit (örneğin, _liquidity'yi kaldır çağrılarında_liquidity ekle).
Yukarıdaki sözleşmeyi vyper derleyici 0.2.15, 0.2.16 veya 0.3.0 ile derleyin (bu sürümlerde bilinen yeniden giriş koruma sorunları vardır).
Daha sonra yukarıdaki kurban sözleşmesini devreye alır ve aşağıdaki sözleşmeyle ona saldırırız:
Gerçek bir saldırıyı simüle etmek için, bu sözleşmenin saldırı yöntemi, yedek işlevi aracılığıyla remove_liquidity yönteminden add_liquidity'yi yeniden girmeye çalışır. Yeniden giriş gerçekten gerçekleşirse, makbuzda RemoveLiquidity olayından önce bir AddLiquidity olayının kaydedildiği gözlemlenebilir.
Şimdi saldırı altındaki sözleşmeyi korumak için Aspect'i kullanalım. Aşağıdakileri yapmadan önce lütfen aşağıdaki adımları tamamlayın:
Unsur Dağıt
Mağdur sözleşmesini Aspect ile bağlayın
Aspect işlemlerine aşina değilseniz, önce geliştirici kılavuzumuza göz atabilirsiniz.
Yukarıdakileri yaptıktan sonra, işlemin başarılı olup olmayacağını kontrol etmek için saldırı yöntemini tekrar çağırmayı deneyelim.
Hareketli resimden (orijinal bağlantıyı makalenin sonunda görebilirsiniz), yeniden giren işlemin geri alındığını görebiliriz, bu da Unsurumuzun kurban sözleşmesini yeniden giriş saldırılarına karşı başarıyla koruduğu anlamına gelir.
Sonuç olarak
Curve'ye yapılan son saldırı, hiçbir protokolün %100 tamamen güvenli olmadığını bir kez daha gösteriyor. Protokolün kaynak ve derleme seviyelerinde güvenliğe odaklanmak yeterli değildir. Kaynak kodu kusursuz görünse bile, derleyici sorunları nedeniyle güvenlik açıkları beklenmedik şekilde ortaya çıkabilir.
DeFi'nin güvenliğini artırmak için çalışma zamanı koruması kritik hale gelir. Protokolü "kara kutu" tarzında koruyarak, protokolün yürütülmesinin amaçlanan tasarımla tutarlı olmasını sağlayarak, çalışma zamanında yeniden giriş saldırılarını etkili bir şekilde önleyebilir.
Eğri sözleşmesini çatallaştırdık ve son yeniden giriş saldırısını tam olarak simüle ettik ve tüm süreci daha anlaşılır bir şekilde yeniden oluşturduk. Zincir üstü çalışma zamanı korumasına yeni bir yaklaşım olarak özellik programlamayı kullanarak, boyutlarla kurban sözleşmelerinin nasıl korunacağını adım adım gösteriyoruz. Amacımız, Curve gibi DeFi protokollerinin maruz kalabileceği yeniden giriş saldırılarının kökünü kazımaya yardımcı olmak ve böylece tüm DeFi alanı genelinde güvenliği artırmaktır.
Aspect Programming ile geliştiriciler, güvenlik alanında yalnızca zincir üzerinde çalışma zamanı koruması elde etmekle kalmaz, aynı zamanda niyetler, JIT ve zincir üstü otomasyon gibi benzeri görülmemiş yenilikçi kullanım durumlarını da mümkün kılar. Ek olarak, Cosmos SDK'ya dayalı bu genel çerçeve, yalnızca Artela blok zincirini desteklemekle kalmayacak, aynı zamanda kendi yürütme katmanlarına dayalı olarak yerel uzantılar oluşturmak için diğer blok zincirlerini de destekleyecektir.
View Original
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.
Çalışma Zamanı Koruması, DeFi zincirinde risk kontrol korumasını gerçekleştirir
Yazar: Artela Çince blog, orta# Özet
Yeniden giriş saldırıları hala bir sorundur.Mevcut savunma yöntemleri, esas olarak, yalnızca sözleşme çalışma zamanı durumuna girmeden önce yürürlüğe giren protokolün kaynak kodu düzeyine odaklanır.
"Çalışma zamanı koruması", DeFi güvenliği için önemli bir tamamlayıcıdır. "Yürütme sonuçlarını korumayı" ve protokolün yürütülmesinin beklenen tasarımla tutarlı olmasını sağlamayı amaçlar.
EVM'nin tasarımı "çalışma zamanı korumasını" desteklemez, çünkü akıllı sözleşme çalışma zamanı durumunun tam bağlam bilgilerine erişemez.
Artela, bir EVM+Extension yürütme katmanı paradigmasını araştırıyor, yeniden giriş saldırılarını ortadan kaldırmak için yürütme katmanını geliştiriyor
Artela, Aspect Programming aracılığıyla zincir üzerinde "çalışma zamanı koruması" uzantılarını uygular
Aspect aracılığıyla Eğri sözleşmesinde yeniden giriş saldırılarının nasıl önleneceğini adım adım gösteriyoruz
Mevcut risk kontrollerine rağmen yeniden giriş saldırıları neden hala sorun teşkil ediyor?
Yeniden giriş saldırıları iyi bilinen bir sorun olmasına ve birçok risk denetiminin devreye alınmasına rağmen, bu tür saldırıları içeren güvenlik olayları son iki yılda meydana gelmeye devam etti:
Curve Finance Attack (Temmuz 2023) — 60 milyon $ Curve, sözleşmeli programlama dili Vyper'daki bir derleme kusuru nedeniyle yeniden giriş saldırısına uğradı.
Origin Protocol Attack (Kasım 2022) — 7 milyon dolarlık Stablecoin projesi Origin Dollar (OUSD) yeniden giriş saldırısına uğradı.
Siren Protokolü saldırısı (Eylül 2021) — 3,5 milyon dolar, AMM havuzu yeniden giriş saldırısına maruz kaldı.
Cream Finance saldırısı (Ağustos 2021) - 18,8 milyon dolar, saldırganlar ikincil borçlanma için yeniden giriş güvenlik açığından yararlandı.
Şu anda, yeniden giriş saldırılarını önlemenin odak noktası, akıllı sözleşmelerin kaynak kodu seviyesindedir Önlemler, OpenZeppelin'in ReentrancyGuard'ını entegre etmeyi ve önceden tanımlanmış güvenlik risklerini önlemek için sözleşme mantık kodlarında güvenlik denetimleri yapmayı içerir.
"Beyaz kutu" çözümü olarak bilinen bu yaklaşım, mantık hatalarını en aza indirmek için kaynak kod düzeyinde güvenlik açıklarından kaçınmayı amaçlar. Ancak asıl zorluğu, bilinmeyen gizli tehlikelere karşı savunma yapamamaktır.
Bir sözleşmeyi kaynak kodundan gerçek çalışma zamanına "çevirmek" zorlu bir süreçtir. Her adım, geliştiriciler için öngörülemeyen sorunları beraberinde getirebilir ve sözleşme kaynak kodunun kendisi tüm olası durumları tam olarak kapsamayabilir. Curve durumunda, protokol kaynak kodu doğru olsa bile, derleyici sorunları nedeniyle son çalıştırma ile protokolün amaçlanan tasarımı arasında yine de tutarsızlıklar olabilir.
Kaynak kodu ve derleme düzeyinde protokolün güvenliğine güvenmek yeterli değildir. Kaynak kodu kusursuz görünse bile, derleyici sorunları nedeniyle güvenlik açıkları beklenmedik şekilde ortaya çıkabilir.
Çalışma zamanı korumasına ihtiyacımız var
Protokol kaynak kodu seviyesinde yoğunlaşan ve yürütmeden önce yürürlüğe giren mevcut risk kontrol önlemlerinin aksine, çalışma zamanı koruması, protokol geliştiricilerin çalışma zamanı öngörülemeyen durumlarla başa çıkmak için çalışma zamanı koruma kuralları ve operasyonları yazmasını içerir. Bu, gerçek zamanlı değerlendirmeyi ve çalışma zamanı yürütme sonuçlarına yanıt vermeyi kolaylaştırır.
Çalışma zamanı koruması, DeFi güvenliğini geliştirmede kritik öneme sahiptir ve mevcut güvenlik önlemlerine önemli bir ektir. Protokolü "kara kutu" tarzında koruyarak, sözleşme kodunun yürütülmesine doğrudan müdahale etmeden nihai çalışma sonucunun protokolün amaçlanan tasarımıyla tutarlı olmasını sağlayarak güvenliği artırır.
Çalışma zamanı korumasını uygulamanın zorlukları
Ne yazık ki EVM tasarımı, zincir üzerinde çalışma zamanı korumasını desteklemiyor çünkü akıllı sözleşmeler tam çalışma zamanı içeriğine erişemiyor.
Bu zorluğun üstesinden nasıl gelinir? Aşağıdaki ön koşulların gerekli olduğuna inanıyoruz:
Tüm işlem bağlamı dahil olmak üzere akıllı sözleşmelerdeki tüm bilgilere erişim sağlayan özel bir modül.
Akıllı sözleşmeden gerekli yetki alınır ve modüle gerektiğinde işlemleri geri alma hakkı verilir.
Akıllı sözleşme yürütüldükten sonra ve durum gönderilmeden önce modülün işlevselliğinin etkili olduğundan emin olun.
EVM şu anda yukarıdaki zorlukları ele alma konusunda sınırlamalarla karşı karşıyadır ve daha fazla yeniliği barındıramaz. Modüler blok zincir paradigması altında, yürütme katmanının EVM'nin ötesine geçme atılımını keşfetmesi gerekiyor.
Artela'nın fikri, EVM'nin ötesine geçmek için EVM'nin WASM yerel uzantı katmanını oluşturarak EVM + yerel uzantıdır.
En Boy Programlamaya Giriş
Artela blok zinciri için blok zincirinde yerel ölçeklendirmeyi destekleyen bir programlama çerçevesi olan Aspect Programming'i başlattık.
Aspect, akıllı sözleşmelere modüler bir ek olarak özel işlevleri çalışma zamanında blok zincirine dinamik olarak entegre etmek ve zincirdeki işlevselliği geliştirmek için kullanılan programlanabilir bir yerel uzantı modülüdür.
Aspect'in özelliği, blockchain taban katmanının sistem düzeyindeki API'sine erişebilmesi ve işlem yaşam döngüsünün her bir birleştirme noktasına uzantı mantığı ekleyebilmesidir. Akıllı sözleşmeler, genişletilmiş işlevleri tetiklemek için belirli yönleri bağlayabilir. Bir işlem bir akıllı sözleşmeyi çağırdığında, işlem aynı zamanda sözleşmeyle ilişkili yön tarafından da işlenir.
Görünüş Programlaması çalışma zamanı korumasını nasıl uygular?
Aspect, her işlev çağrısının yürütme durumunu kaydedebilir ve geri arama işlevi yürütülürken yeniden girişi önleyebilir. Geri arama işlevinin yürütülmesi sırasında bir yeniden giriş çağrısı meydana geldiğinde, Aspect işlemi algılar ve hemen geri alarak saldırganların yeniden giriş güvenlik açıklarından yararlanmasını engeller. Bu yaklaşımla Aspect, yeniden giriş saldırılarını etkili bir şekilde ortadan kaldırarak akıllı sözleşmelerin güvenliğini ve istikrarını sağlar.
Aspect, çalışma zamanı koruması için temel özellikleri uygular:
Akıllı sözleşmenin yürütülmesinden sonra ve durum tesliminden önce tetiklenebilir: Aspect modülleri, akıllı sözleşmenin yürütülmesinden sonra ancak durum tesliminden önce etkinleştirilecek şekilde ayarlanabilir.
Eksiksiz işlem içeriği erişimi: Aspect, tüm işlem bilgileri (yöntemler, parametreler vb.), çağrı yığını (yürütme sırasındaki tüm dahili sözleşme çağrıları), durum bağlamı değişiklikleri ve tüm işlemle tetiklenen olaylar dahil olmak üzere tüm işlem içeriğine erişebilir.
Sistem çağrısı yeteneği: Aspect, sistem çağrıları yapabilir ve gerektiğinde işlem geri izlemelerini başlatabilir.
Akıllı sözleşmelerle bağlama ve yetkilendirme: Akıllı sözleşmeler Aspect'e bağlanabilir ve Aspect'e işlem işlemeye katılma izni verebilir.
Yeniden giriş koruması için Unsurun Uygulanması
Bu bölümde, Aspect'in çalışma zamanı korumasının zincirde nasıl uygulanacağını tartışıyoruz.
Yeniden giriş saldırılarını önlemek için "preContractCall" ve "postContractCall" birleştirme noktasında gerçek bir "Sözleşme Koruma Amacı" yönü konuşlandırılabilir.
preContractCall: Sözleşmeler arası çağrının yürütülmesinden önce tetiklenir
postContractCall: sözleşmeler arası çağrının yürütülmesinden sonra tetiklenir
Yeniden giriş koruması için amacımız, çağrı tamamlanana kadar sözleşmenin yeniden girişini önlemektir. Aspect ile bunu, işlem yaşam döngüsündeki nokta kesimlerine belirli bir mantık ekleyerek başarabiliriz.
"preContractCall" nokta kesiminde Aspect, sözleşme çağrı yığınını izler. Çağrı yığınında yinelenen çağrılar varsa (kilitli çağrımızda beklenmedik bir yeniden giriş anlamına gelir), özellik çağrıyı geri alır.
Eğri sözleşmesini dağıtın ve yeniden giriş saldırılarını önleyin
Bu süreci daha anlaşılır bir şekilde yeniden oluşturmak için bir Curve sahte sözleşmesi yazdık ve bir yeniden giriş saldırısı düzenledik. Sözleşme kodu aşağıdaki gibidir:
Yukarıdaki sözleşmenin hem likidite ekle_liquidity hem de remove_likidity'nin aynı yeniden giriş kilidi kilidi tarafından korunduğu görülebilir; bu, yeniden giriş koruması normal şekilde çalışıyorsa korunan işlevin değiştirilerek yeniden girilemeyeceği anlamına gelir. kilit (örneğin, _liquidity'yi kaldır çağrılarında_liquidity ekle).
Yukarıdaki sözleşmeyi vyper derleyici 0.2.15, 0.2.16 veya 0.3.0 ile derleyin (bu sürümlerde bilinen yeniden giriş koruma sorunları vardır).
Daha sonra yukarıdaki kurban sözleşmesini devreye alır ve aşağıdaki sözleşmeyle ona saldırırız:
Gerçek bir saldırıyı simüle etmek için, bu sözleşmenin saldırı yöntemi, yedek işlevi aracılığıyla remove_liquidity yönteminden add_liquidity'yi yeniden girmeye çalışır. Yeniden giriş gerçekten gerçekleşirse, makbuzda RemoveLiquidity olayından önce bir AddLiquidity olayının kaydedildiği gözlemlenebilir.
Şimdi saldırı altındaki sözleşmeyi korumak için Aspect'i kullanalım. Aşağıdakileri yapmadan önce lütfen aşağıdaki adımları tamamlayın:
Unsur Dağıt
Mağdur sözleşmesini Aspect ile bağlayın
Aspect işlemlerine aşina değilseniz, önce geliştirici kılavuzumuza göz atabilirsiniz.
Yukarıdakileri yaptıktan sonra, işlemin başarılı olup olmayacağını kontrol etmek için saldırı yöntemini tekrar çağırmayı deneyelim.
Hareketli resimden (orijinal bağlantıyı makalenin sonunda görebilirsiniz), yeniden giren işlemin geri alındığını görebiliriz, bu da Unsurumuzun kurban sözleşmesini yeniden giriş saldırılarına karşı başarıyla koruduğu anlamına gelir.
Sonuç olarak
Curve'ye yapılan son saldırı, hiçbir protokolün %100 tamamen güvenli olmadığını bir kez daha gösteriyor. Protokolün kaynak ve derleme seviyelerinde güvenliğe odaklanmak yeterli değildir. Kaynak kodu kusursuz görünse bile, derleyici sorunları nedeniyle güvenlik açıkları beklenmedik şekilde ortaya çıkabilir.
DeFi'nin güvenliğini artırmak için çalışma zamanı koruması kritik hale gelir. Protokolü "kara kutu" tarzında koruyarak, protokolün yürütülmesinin amaçlanan tasarımla tutarlı olmasını sağlayarak, çalışma zamanında yeniden giriş saldırılarını etkili bir şekilde önleyebilir.
Eğri sözleşmesini çatallaştırdık ve son yeniden giriş saldırısını tam olarak simüle ettik ve tüm süreci daha anlaşılır bir şekilde yeniden oluşturduk. Zincir üstü çalışma zamanı korumasına yeni bir yaklaşım olarak özellik programlamayı kullanarak, boyutlarla kurban sözleşmelerinin nasıl korunacağını adım adım gösteriyoruz. Amacımız, Curve gibi DeFi protokollerinin maruz kalabileceği yeniden giriş saldırılarının kökünü kazımaya yardımcı olmak ve böylece tüm DeFi alanı genelinde güvenliği artırmaktır.
Aspect Programming ile geliştiriciler, güvenlik alanında yalnızca zincir üzerinde çalışma zamanı koruması elde etmekle kalmaz, aynı zamanda niyetler, JIT ve zincir üstü otomasyon gibi benzeri görülmemiş yenilikçi kullanım durumlarını da mümkün kılar. Ek olarak, Cosmos SDK'ya dayalı bu genel çerçeve, yalnızca Artela blok zincirini desteklemekle kalmayacak, aynı zamanda kendi yürütme katmanlarına dayalı olarak yerel uzantılar oluşturmak için diğer blok zincirlerini de destekleyecektir.