Son zamanlarda, Move dilinde ciddi bir tam sayı taşma açığı keşfedildi. Bu açık, güvenlik doğrulama adımlarına atıfta bulunurken ortaya çıkmakta ve hizmet reddi saldırısına yol açabilmektedir. Bu açığı derinlemesine analiz ederek, Move dili hakkında daha derin bir anlayışa sahip olabiliriz.
Move dili, byte kodunu çalıştırmadan önce kod doğrulaması yapar ve bu dört aşamaya ayrılır. Bu açıklık, reference_safety aşamasında ortaya çıkmaktadır. reference_safety modülü, referans işlemlerinin geçerliliğini doğrulamaktan sorumludur; bu, askıda referansların olup olmadığını kontrol etmeyi ve değişken referans erişiminin güvenli olup olmadığını içerir.
Doğrulama süreci, işlev bazında gerçekleştirilir. Her işlev için, içindeki temel bloklar tanımlanır. Temel blok, yalnızca giriş ve çıkış noktalarında dallanma olabilecek bir dizi sürekli kod dizisidir. Daha sonra her temel blok analiz edilir, yürütme öncesi ve sonrası durumlar üretilir ve durumlar sonraki bloklara aktarılır.
Durum, locals ve borrow grafi olmak üzere iki bölümden oluşur. Locals, yerel değişkenlerin bilgilerini kaydeder, borrow grafi ise değişkenler arasındaki referans ilişkisini gösterir. Analiz süreci bu durum bilgilerini sürekli olarak günceller.
Hata, durum birleştirme sürecinde ortaya çıkmaktadır. Fonksiyon parametreleri ve yerel değişkenlerin toplam sayısı 256'yı aştığında, indeksin u8 türü ile temsil edilmesi nedeniyle tam sayı taşması meydana gelir. Bu, birleştirilmiş durum bilgisinin hatalı olmasına yol açar ve bu da hizmet reddi saldırısına neden olabilir.
Move dilinin yerel değişken sayısını kontrol etme mekanizması olmasına rağmen, parametre sayısını dikkate almadığı görülmektedir. Bu ihmal, bir açığın ortaya çıkmasına neden olmuştur.
Bu açığı tetiklemek için, saldırgan bir döngü kod bloğu oluşturabilir ve taşma kullanarak bloğun durumunu değiştirebilir. Yeniden çalıştırıldığında, durum bilgisi hatalı olduğu için, var olmayan bir değişkene erişmek programın çökmesine neden olur.
Bu açık, dikkatlice tasarlanmış dillerin bile güvenlik açıkları barındırabileceğini bir kez daha gösteriyor. Bu, kod denetiminin önemini ve dil tasarımında daha kapsamlı güvenlik dikkate alınması gerektiğini hatırlatıyor. Move dili için, çalışma zamanında daha fazla kontrol eklemek bir iyileştirme yönü olabilir.
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 dili tam sayı taşma açığı ifşa edildi, güvenlik doğrulama riskleri içeriyor.
Move dilinde tam sayı taşma açığı yeniden üretimi
Son zamanlarda, Move dilinde ciddi bir tam sayı taşma açığı keşfedildi. Bu açık, güvenlik doğrulama adımlarına atıfta bulunurken ortaya çıkmakta ve hizmet reddi saldırısına yol açabilmektedir. Bu açığı derinlemesine analiz ederek, Move dili hakkında daha derin bir anlayışa sahip olabiliriz.
Move dili, byte kodunu çalıştırmadan önce kod doğrulaması yapar ve bu dört aşamaya ayrılır. Bu açıklık, reference_safety aşamasında ortaya çıkmaktadır. reference_safety modülü, referans işlemlerinin geçerliliğini doğrulamaktan sorumludur; bu, askıda referansların olup olmadığını kontrol etmeyi ve değişken referans erişiminin güvenli olup olmadığını içerir.
Doğrulama süreci, işlev bazında gerçekleştirilir. Her işlev için, içindeki temel bloklar tanımlanır. Temel blok, yalnızca giriş ve çıkış noktalarında dallanma olabilecek bir dizi sürekli kod dizisidir. Daha sonra her temel blok analiz edilir, yürütme öncesi ve sonrası durumlar üretilir ve durumlar sonraki bloklara aktarılır.
Durum, locals ve borrow grafi olmak üzere iki bölümden oluşur. Locals, yerel değişkenlerin bilgilerini kaydeder, borrow grafi ise değişkenler arasındaki referans ilişkisini gösterir. Analiz süreci bu durum bilgilerini sürekli olarak günceller.
Hata, durum birleştirme sürecinde ortaya çıkmaktadır. Fonksiyon parametreleri ve yerel değişkenlerin toplam sayısı 256'yı aştığında, indeksin u8 türü ile temsil edilmesi nedeniyle tam sayı taşması meydana gelir. Bu, birleştirilmiş durum bilgisinin hatalı olmasına yol açar ve bu da hizmet reddi saldırısına neden olabilir.
Move dilinin yerel değişken sayısını kontrol etme mekanizması olmasına rağmen, parametre sayısını dikkate almadığı görülmektedir. Bu ihmal, bir açığın ortaya çıkmasına neden olmuştur.
Bu açığı tetiklemek için, saldırgan bir döngü kod bloğu oluşturabilir ve taşma kullanarak bloğun durumunu değiştirebilir. Yeniden çalıştırıldığında, durum bilgisi hatalı olduğu için, var olmayan bir değişkene erişmek programın çökmesine neden olur.
Bu açık, dikkatlice tasarlanmış dillerin bile güvenlik açıkları barındırabileceğini bir kez daha gösteriyor. Bu, kod denetiminin önemini ve dil tasarımında daha kapsamlı güvenlik dikkate alınması gerektiğini hatırlatıyor. Move dili için, çalışma zamanında daha fazla kontrol eklemek bir iyileştirme yönü olabilir.