Move dilinin referans güvenlik mekanizmasında tam sayı taşma açığı bulunmaktadır
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ettiklerinde yeni bir tamsayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenlik doğrulama sürecinde meydana gelmekte olup, hizmeti reddetme saldırısına yol açabilir.
Move dili, byte kodu çalıştırmadan önce kod doğrulaması yapar ve bu 4 adımda gerçekleştirilir. Bu açık, referans güvenliği (reference_safety) doğrulama aşamasında bulunmaktadır. Referans güvenliği doğrulamasının ana amacı, boş referansların, değişken referans erişim güvenliğinin, küresel depolama referans erişim güvenliğinin vb. olmadığından emin olmaktır.
Doğrulama süreci, her bir temel bloğun bayt kodu talimatlarını gözden geçirecektir. Temel blok, giriş ve çıkış dışında dalga talimatı olmayan kod dizisidir. Move dili, temel blokları tanımlamak için dalga talimatlarını ve döngü talimatlarını analiz eder.
Güvenlik doğrulaması, yerel değişkenleri ve referans ilişkilerini izlemek için AbstractState yapılarını kullanır. Bu, locals ve borrow graph adlı iki bölüm içerir. Doğrulama sırasında, yürütme öncesi ve sonrası durum karşılaştırılır ve güncellemeler birleştirilir.
Hata, birleştirilmiş durumda olan join_fonksiyonunda ortaya çıkıyor. Bu fonksiyon, locals'i u8 türü ile iterasyon yapıyor, ancak eğer parametreler ve yerel değişkenlerin toplam sayısı 256'dan fazla olursa, tam sayı taşmasına neden oluyor. locals sayısını kontrol eden bir mantık olmasına rağmen, parametre uzunluğu göz önünde bulundurulmamış.
Saldırganlar, bu taşmayı kullanarak durumu değiştiren döngüsel bir temel blok oluşturabilirler. Yeniden çalıştırıldığında, mevcut olmayan locals indeksine erişim panik yaratacak ve bu da hizmetin reddine yol açacaktır.
Bu açık, statik tür güvenliği olan dillerin bile güvenlik açıkları barındırabileceğini göstermektedir. Move dilinin çalışma zamanında daha fazla güvenlik kontrolü eklemesi önerilir, sadece doğrulama aşamasına güvenmemelidir. Aynı zamanda kod denetiminin önemini de vurgulamaktadır.
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.
Move dilinin referans güvenlik mekanizması, tam sayı taşması açığı ortaya çıkardı; bu, hizmet reddi saldırısına yol açabilir.
Move dilinin referans güvenlik mekanizmasında tam sayı taşma açığı bulunmaktadır
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ettiklerinde yeni bir tamsayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenlik doğrulama sürecinde meydana gelmekte olup, hizmeti reddetme saldırısına yol açabilir.
Move dili, byte kodu çalıştırmadan önce kod doğrulaması yapar ve bu 4 adımda gerçekleştirilir. Bu açık, referans güvenliği (reference_safety) doğrulama aşamasında bulunmaktadır. Referans güvenliği doğrulamasının ana amacı, boş referansların, değişken referans erişim güvenliğinin, küresel depolama referans erişim güvenliğinin vb. olmadığından emin olmaktır.
Doğrulama süreci, her bir temel bloğun bayt kodu talimatlarını gözden geçirecektir. Temel blok, giriş ve çıkış dışında dalga talimatı olmayan kod dizisidir. Move dili, temel blokları tanımlamak için dalga talimatlarını ve döngü talimatlarını analiz eder.
Güvenlik doğrulaması, yerel değişkenleri ve referans ilişkilerini izlemek için AbstractState yapılarını kullanır. Bu, locals ve borrow graph adlı iki bölüm içerir. Doğrulama sırasında, yürütme öncesi ve sonrası durum karşılaştırılır ve güncellemeler birleştirilir.
Hata, birleştirilmiş durumda olan join_fonksiyonunda ortaya çıkıyor. Bu fonksiyon, locals'i u8 türü ile iterasyon yapıyor, ancak eğer parametreler ve yerel değişkenlerin toplam sayısı 256'dan fazla olursa, tam sayı taşmasına neden oluyor. locals sayısını kontrol eden bir mantık olmasına rağmen, parametre uzunluğu göz önünde bulundurulmamış.
Saldırganlar, bu taşmayı kullanarak durumu değiştiren döngüsel bir temel blok oluşturabilirler. Yeniden çalıştırıldığında, mevcut olmayan locals indeksine erişim panik yaratacak ve bu da hizmetin reddine yol açacaktır.
Bu açık, statik tür güvenliği olan dillerin bile güvenlik açıkları barındırabileceğini göstermektedir. Move dilinin çalışma zamanında daha fazla güvenlik kontrolü eklemesi önerilir, sadece doğrulama aşamasına güvenmemelidir. Aynı zamanda kod denetiminin önemini de vurgulamaktadır.