Move dili yine yüksek riskli bir açıkla karşı karşıya: Tam sayı taşması düğüm çökmesine neden olabilir.
Son zamanlarda, güvenlik araştırmacıları Aptos Moveevm'yi derinlemesine analiz ederken yeni bir tamsayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenlik doğrulama sürecinde bulunmaktadır ve düğüm çökmesine neden olabilir.
Move dili, byte kodunu yürütmeden önce kod doğrulaması yapar ve bu dört adıma ayrılır. Bu açık, reference_safety adımında ortaya çıkmaktadır. Bu adım, referansların güvenliğini doğrulamak için kullanılır ve boş referansların varlığını kontrol etmek, değişken referans erişiminin güvenli olup olmadığını kontrol etmek gibi işlemleri içerir.
Doğrulama süreci her temel bloğu dolaşacak ve analiz edecektir. Temel blok, giriş ve çıkış dışında dalga komutları olmayan bir kod dizisidir. Move dili, dal ve döngü komutlarını arayarak temel blokları tanımlar.
Referans güvenliğini doğrularken, bir AbstractState yapısı korunur ve bu yapı borrow graph ve locals bilgilerini içerir. Doğrulama süreci, temel blok kodunu çalıştırır, ardından yürütme sonrası durumu oluşturur ve bu durumu yürütme öncesi durumla birleştirir, blok durumunu günceller ve bunu sonraki bloklara yayar.
Hata, join_ fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, yürütme öncesi ve sonrası durumu birleştirmek, locals ve borç grafiğini güncellemek için kullanılır. Parametre uzunluğu ve yerel değişkenlerin toplam uzunluğu 256'dan büyük olduğunda, u8 türü ile locals'ı yinelemek, tamsayı taşmasına neden olacaktır.
Bu taşma kullanılarak temel bloğun durumunu değiştirmek mümkündür. Döngü içeren kodlarda, aynı temel bloğun birden fazla kez çalıştırılması durumunda, mevcut olmayan locals indekslerine erişilebilir ve bu da panik oluşturarak düğümün çökmesine neden olabilir.
Araştırmacılar, belirli parametreler ve yerel değişken sayısını ayarlayarak tam sayı taşmasına neden olan bir PoC kodu sağladılar ve bu da nihayetinde panik ile sonuçlandı.
Bu açık, Move gibi güvenliğe önem veren dillerin bile güvenlik açıkları barındırabileceğini ortaya koyuyor. Move dilinin tasarımcılarına, yalnızca doğrulama aşamasındaki kontrolere güvenmekle kalmayıp, çalışma zamanında daha fazla güvenlik kontrolü eklemeleri önerilir. 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 dilindeki tam sayı taşma açığı: referans güvenlik doğrulama riski içeriyor
Move dili yine yüksek riskli bir açıkla karşı karşıya: Tam sayı taşması düğüm çökmesine neden olabilir.
Son zamanlarda, güvenlik araştırmacıları Aptos Moveevm'yi derinlemesine analiz ederken yeni bir tamsayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenlik doğrulama sürecinde bulunmaktadır ve düğüm çökmesine neden olabilir.
Move dili, byte kodunu yürütmeden önce kod doğrulaması yapar ve bu dört adıma ayrılır. Bu açık, reference_safety adımında ortaya çıkmaktadır. Bu adım, referansların güvenliğini doğrulamak için kullanılır ve boş referansların varlığını kontrol etmek, değişken referans erişiminin güvenli olup olmadığını kontrol etmek gibi işlemleri içerir.
Doğrulama süreci her temel bloğu dolaşacak ve analiz edecektir. Temel blok, giriş ve çıkış dışında dalga komutları olmayan bir kod dizisidir. Move dili, dal ve döngü komutlarını arayarak temel blokları tanımlar.
Referans güvenliğini doğrularken, bir AbstractState yapısı korunur ve bu yapı borrow graph ve locals bilgilerini içerir. Doğrulama süreci, temel blok kodunu çalıştırır, ardından yürütme sonrası durumu oluşturur ve bu durumu yürütme öncesi durumla birleştirir, blok durumunu günceller ve bunu sonraki bloklara yayar.
Hata, join_ fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, yürütme öncesi ve sonrası durumu birleştirmek, locals ve borç grafiğini güncellemek için kullanılır. Parametre uzunluğu ve yerel değişkenlerin toplam uzunluğu 256'dan büyük olduğunda, u8 türü ile locals'ı yinelemek, tamsayı taşmasına neden olacaktır.
Bu taşma kullanılarak temel bloğun durumunu değiştirmek mümkündür. Döngü içeren kodlarda, aynı temel bloğun birden fazla kez çalıştırılması durumunda, mevcut olmayan locals indekslerine erişilebilir ve bu da panik oluşturarak düğümün çökmesine neden olabilir.
Araştırmacılar, belirli parametreler ve yerel değişken sayısını ayarlayarak tam sayı taşmasına neden olan bir PoC kodu sağladılar ve bu da nihayetinde panik ile sonuçlandı.
Bu açık, Move gibi güvenliğe önem veren dillerin bile güvenlik açıkları barındırabileceğini ortaya koyuyor. Move dilinin tasarımcılarına, yalnızca doğrulama aşamasındaki kontrolere güvenmekle kalmayıp, çalışma zamanında daha fazla güvenlik kontrolü eklemeleri önerilir. Aynı zamanda kod denetiminin önemini de vurgulamaktadır.