Move dilindeki güvenlik modülü, tam sayı taşma açığına sahip
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ettiklerinde ciddi bir tamsayı taşma açığı keşfettiler. Bu açık, referans güvenlik doğrulama modülünde bulunmaktadır ve hizmet reddi saldırısına yol açabilir. Bu yazıda, bu açığın prensibi ve etkileri detaylı bir şekilde ele alınacaktır.
Açık Arka Plan
Move dili, byte kodunu yürütmeden önce kod doğrulaması yapar ve bu, referans güvenliği kontrolünü içerir. Bu süreç birkaç adımdan oluşur ve bu sefer keşfedilen açık, reference_safety doğrulama aşamasında meydana gelmiştir.
Güvenlik doğrulamasının ana süreci şudur:
Kodu temel bloklara ayırın
Her temel bloğu analiz et
Analizden önce ve sonraki durumu birleştirin
Yayılma sonuçları sonraki bloklara
Analiz durumunu temsil etmek için AbstractState yapısı kullanılmıştır, locals ve borç grafiği bilgilerini içermektedir.
Açık Detayları
Hata, birleştirme analiz durumu için join_fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, locals'ı u8 türü ile yinelemekte, ancak parametre uzunluğu ve yerel değişken uzunluğunun toplamı 256'dan fazla olduğunda tam sayı taşması meydana gelmektedir.
Özellikle:
join_fonksiyonunda self.iter_locals() ile locals'ı yinele
iter_locals() u8 türünde bir iteratör döndürür
Eğer parametre uzunluğu + yerel değişken uzunluğu > 256 ise, yineleyici taşacaktır.
Move yerel değişken sayısını kontrol etme sürecine sahip olsa da, yalnızca yerel değişken sayısını kontrol eder, parametre uzunluğunu dahil etmez.
Açık Kullanımı
Saldırganlar, bir döngü kod bloğu oluşturarak taşmayı kullanıp bloğun durumunu değiştirebilirler:
Parametreleri ve yerel değişkenlerin toplam sayısını 256'dan büyük ayarlayın.
İlk çalıştırmadan sonra, yeni locals haritasının uzunluğu taşacak ve küçülecek.
Tekrar çalıştırıldığında, mevcut olmayan locals dizinine erişim panic'e neden olur
Bu, düğümün hizmet reddine yol açabilir.
Açığın Etkisi
Bu açık, şunlara neden olabilir:
Move bytecode doğrulayıcısı çöktü
Move'a bağımlı blok zinciri düğümleri hizmeti reddetti
Bazı güvenlik kontrollerinden kaçınma
Onarım Önerisi
locals sınır kontrolünde parametre uzunluğunun doğrulanmasını ekleyin
locals'ı yinelemek için u16 gibi daha büyük tamsayı türleri kullanın
Çalışma zamanında ek güvenlik kontrolleri ekleyin
Özet
Bu güvenlik açığı, dikkatli bir şekilde tasarlanmış dillerin bile güvenlik riskleri içerebileceğini bir kez daha göstermiştir. Move dili için, doğrulama aşamasının ötesinde, çalışma zamanında da gerekli güvenlik kontrollerinin eklenmesi önerilmektedir. Güvenlik araştırmacıları, Move dilini daha derinlemesine analiz etmeye devam edeceklerdir, böylece daha fazla potansiyel sorun keşfedebileceklerdir.
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.
22 Likes
Reward
22
6
Repost
Share
Comment
0/400
BackrowObserver
· 08-11 11:51
move bir kez daha başarısız oldu
View OriginalReply0
MidnightTrader
· 08-10 07:32
Bu da hangi acemi tarafından yazılmış bir kod? Diz çöküyorum.
View OriginalReply0
MevShadowranger
· 08-10 07:30
Yine tam sayı taşması oynuyor.
View OriginalReply0
WagmiOrRekt
· 08-10 07:29
Neyse ki daha önce tüm pozisyonları kapatın Move yaptım.
View OriginalReply0
CommunityWorker
· 08-10 07:27
move yine mi patlayacak? Ne acele var?
View OriginalReply0
CryingOldWallet
· 08-10 07:26
Başka bir açık mı? move artık çekici değil sanırım.
Move dilinin referans güvenlik modülü tam sayı taşması açığı veya düğüm hizmet reddine yol açabilir.
Move dilindeki güvenlik modülü, tam sayı taşma açığına sahip
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ettiklerinde ciddi bir tamsayı taşma açığı keşfettiler. Bu açık, referans güvenlik doğrulama modülünde bulunmaktadır ve hizmet reddi saldırısına yol açabilir. Bu yazıda, bu açığın prensibi ve etkileri detaylı bir şekilde ele alınacaktır.
Açık Arka Plan
Move dili, byte kodunu yürütmeden önce kod doğrulaması yapar ve bu, referans güvenliği kontrolünü içerir. Bu süreç birkaç adımdan oluşur ve bu sefer keşfedilen açık, reference_safety doğrulama aşamasında meydana gelmiştir.
Güvenlik doğrulamasının ana süreci şudur:
Analiz durumunu temsil etmek için AbstractState yapısı kullanılmıştır, locals ve borç grafiği bilgilerini içermektedir.
Açık Detayları
Hata, birleştirme analiz durumu için join_fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, locals'ı u8 türü ile yinelemekte, ancak parametre uzunluğu ve yerel değişken uzunluğunun toplamı 256'dan fazla olduğunda tam sayı taşması meydana gelmektedir.
Özellikle:
Move yerel değişken sayısını kontrol etme sürecine sahip olsa da, yalnızca yerel değişken sayısını kontrol eder, parametre uzunluğunu dahil etmez.
Açık Kullanımı
Saldırganlar, bir döngü kod bloğu oluşturarak taşmayı kullanıp bloğun durumunu değiştirebilirler:
Bu, düğümün hizmet reddine yol açabilir.
Açığın Etkisi
Bu açık, şunlara neden olabilir:
Onarım Önerisi
Özet
Bu güvenlik açığı, dikkatli bir şekilde tasarlanmış dillerin bile güvenlik riskleri içerebileceğini bir kez daha göstermiştir. Move dili için, doğrulama aşamasının ötesinde, çalışma zamanında da gerekli güvenlik kontrollerinin eklenmesi önerilmektedir. Güvenlik araştırmacıları, Move dilini daha derinlemesine analiz etmeye devam edeceklerdir, böylece daha fazla potansiyel sorun keşfedebileceklerdir.