hizmet reddi saldırısı(DoS) saldırıları, akıllı sözleşmelerin belirli bir süre boyunca hatta kalıcı olarak düzgün çalışamamasına yol açabilir. Temel nedenler şunlardır:
Sözleşme mantığında eksiklikler var. Örneğin, bazı public fonksiyonların implementasyonu hesaplama karmaşıklığını dikkate almadı, bu da Gas sınırını aşarak işlemlerin başarısız olmasına neden olabilir.
Akıllı sözleşmeler arası çağrı senaryolarında, sözleşme yürütmesi dış sözleşme durumuna bağımlıdır. Dış sözleşmenin yürütülmesinin güvenilir olmaması, bu sözleşmenin çalışmasını engelleyebilir, örneğin fonların kilitlenmesi nedeniyle yatırma veya çekme işlemleri yapılamaz.
İnsan faktörleri, örneğin sözleşme sahibinin özel anahtarını kaybetmesi, kritik sistem durumunun güncellenememesine neden olur.
Aşağıda belirli örneklerle DoS saldırı açığını analiz edeceğiz.
1. Dışarıdan değiştirilebilen büyük veri yapılarının döngüsel olarak gezilmesi
Aşağıda kayıtlı kullanıcılara "kar payı" vermek için basit bir akıllı sözleşme bulunmaktadır:
Sözleşme durumu, kayıtlı kullanıcı listesini ve hesap bakiye eşlemesini içerir. Kullanıcılar register_account() aracılığıyla kayıt olabilir ve başlatabilir.
Yönetici, kullanıcılara kar payı vermek için distribute_token() aracılığıyla registered dizisini dolaşarak her bir kullanıcıya belirli miktarda token transfer eder.
Sorun, registered boyutunun sınırsız olması ve kötü niyetli bir şekilde manipüle edilebilmesidir; bu da dolaşım sırasında Gas tüketiminin sınırları aşmasına neden olmaktadır.
Önerilen çözüm:
Veri yapısının boyutunu sınırlayın, maksimum değere ulaşıldığında bile Gas kısıtlamasını aşmamayı sağlayın.
Çekim modunu benimseyin, önce muhasebe yapın, kullanıcı ödüllerini withdraw ile geri alır.
2. Akıllı sözleşmeler arası durum bağımlılığı nedeniyle tıkanma
Bir "ihale" sözleşmesi senaryosunu düşünün:
Mevcut en yüksek teklif veren ve miktarını kaydedin
Kullanıcılar hesap kaydedip teklif vermeye katılabilir.
Mevcut en yüksek fiyatın üzerinde bir teklif verildiğinde, önceki en yüksek fiyat geri verilir, durum güncellenir.
Sorun, geri ödemenin dış sözleşme durumuna bağlı olmasıdır. Eğer daha önceki en yüksek teklif sahibinin hesabı kapatıldıysa, geri ödeme başarısız olur ve en yüksek fiyat güncellenemez, bu da tüm açık artırma sürecinin engellenmesine neden olur.
Çözüm:
Dış çağrıların başarısız olabileceğini göz önünde bulundurarak, makul bir hata işleme uygulayın. Örneğin, geri alınamayan fonları geçici olarak saklayın ve ardından kullanıcıların bunları ayrı olarak çekmelerine izin verin.
3. Yönetici özel anahtarın kaybolması
Bazı kritik fonksiyonlar (, örneğin işlemleri duraklatma/yeniden başlatma ) yalnızca yöneticiler tarafından çağrılabilir. Yöneticinin özel anahtarının kaybolması, bu işlevlerin kullanılamaz hale gelmesine neden olacak ve sözleşme uzun süre düzgün çalışamayabilir.
Çözüm:
Tek bir yöneticiyi yerine çoklu imza mekanizması kullanarak merkeziyetsiz yönetim sağlamak, tek noktada arıza riskini önlemek.
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.
18 Likes
Reward
18
7
Share
Comment
0/400
NFTFreezer
· 07-16 03:27
Zaten tahmin ediliyordu, numara çalındı, işte bu kadar.
View OriginalReply0
BridgeJumper
· 07-15 12:26
Özel Anahtar'ı kaybettin, neden kaybolan pantolondan bahsetmiyorsun?
View OriginalReply0
AirdropF5Bro
· 07-13 07:29
Patron, önce çoklu imza atın, bir önlem alın.
View OriginalReply0
MetaEggplant
· 07-13 07:28
Testin gerçekten maliyeti biraz yüksek.
View OriginalReply0
Ser_This_Is_A_Casino
· 07-13 07:26
Çok kötü, dos'un sadece web ile ilgilenebileceğini sanıyordum.
akıllı sözleşmeler DoS saldırı riski ve önleme stratejileri analizi
Akıllı sözleşmelerde hizmet reddi saldırısı
hizmet reddi saldırısı(DoS) saldırıları, akıllı sözleşmelerin belirli bir süre boyunca hatta kalıcı olarak düzgün çalışamamasına yol açabilir. Temel nedenler şunlardır:
Sözleşme mantığında eksiklikler var. Örneğin, bazı public fonksiyonların implementasyonu hesaplama karmaşıklığını dikkate almadı, bu da Gas sınırını aşarak işlemlerin başarısız olmasına neden olabilir.
Akıllı sözleşmeler arası çağrı senaryolarında, sözleşme yürütmesi dış sözleşme durumuna bağımlıdır. Dış sözleşmenin yürütülmesinin güvenilir olmaması, bu sözleşmenin çalışmasını engelleyebilir, örneğin fonların kilitlenmesi nedeniyle yatırma veya çekme işlemleri yapılamaz.
İnsan faktörleri, örneğin sözleşme sahibinin özel anahtarını kaybetmesi, kritik sistem durumunun güncellenememesine neden olur.
Aşağıda belirli örneklerle DoS saldırı açığını analiz edeceğiz.
1. Dışarıdan değiştirilebilen büyük veri yapılarının döngüsel olarak gezilmesi
Aşağıda kayıtlı kullanıcılara "kar payı" vermek için basit bir akıllı sözleşme bulunmaktadır:
Sözleşme durumu, kayıtlı kullanıcı listesini ve hesap bakiye eşlemesini içerir. Kullanıcılar register_account() aracılığıyla kayıt olabilir ve başlatabilir.
Yönetici, kullanıcılara kar payı vermek için distribute_token() aracılığıyla registered dizisini dolaşarak her bir kullanıcıya belirli miktarda token transfer eder.
Sorun, registered boyutunun sınırsız olması ve kötü niyetli bir şekilde manipüle edilebilmesidir; bu da dolaşım sırasında Gas tüketiminin sınırları aşmasına neden olmaktadır.
Önerilen çözüm:
2. Akıllı sözleşmeler arası durum bağımlılığı nedeniyle tıkanma
Bir "ihale" sözleşmesi senaryosunu düşünün:
Sorun, geri ödemenin dış sözleşme durumuna bağlı olmasıdır. Eğer daha önceki en yüksek teklif sahibinin hesabı kapatıldıysa, geri ödeme başarısız olur ve en yüksek fiyat güncellenemez, bu da tüm açık artırma sürecinin engellenmesine neden olur.
Çözüm: Dış çağrıların başarısız olabileceğini göz önünde bulundurarak, makul bir hata işleme uygulayın. Örneğin, geri alınamayan fonları geçici olarak saklayın ve ardından kullanıcıların bunları ayrı olarak çekmelerine izin verin.
3. Yönetici özel anahtarın kaybolması
Bazı kritik fonksiyonlar (, örneğin işlemleri duraklatma/yeniden başlatma ) yalnızca yöneticiler tarafından çağrılabilir. Yöneticinin özel anahtarının kaybolması, bu işlevlerin kullanılamaz hale gelmesine neden olacak ve sözleşme uzun süre düzgün çalışamayabilir.
Çözüm: Tek bir yöneticiyi yerine çoklu imza mekanizması kullanarak merkeziyetsiz yönetim sağlamak, tek noktada arıza riskini önlemek.