Move dili yüksek riskli bir açık daha gösterdi: Tam sayı taşması düğümün çökmesine neden olabilir
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ettikten sonra yeni bir tam sayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenliği doğrulama sürecinde ortaya çıkmakta olup, Düğüm çökmesine neden olabilir.
Move dili, byte kodunu çalıştırmadan önce kod doğrulaması yapar ve bu işlem dört adımdan oluşur. Bu keşfedilen güvenlik açığı, reference_safety adımında bulunmaktadı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 referansların erişiminin güvenli olup olmadığını denetlemek gibi işlemleri içerir.
Açığın tetiklenmesi, Move dilindeki temel blok kavramıyla ilgilidir. Temel blok, giriş ve çıkış dışında dal komutları olmayan bir kod dizisidir. Move, bytecode'u tarayarak ve dal komutlarını bularak temel blokları tanımlar.
Alıntı güvenlik doğrulama sürecinde sistem, her temel bloktaki byte kodu komutlarını tarar ve tüm alıntı işlemlerinin yasal olup olmadığını belirler. Bu süreç, borrow graph ve locals adlı iki önemli bileşeni içeren AbstractState yapısını kullanır.
Hata, join_ fonksiyonunda ortaya çıkmıştır. Parametre uzunluğu ile yerel değişken uzunluğunun toplamı 256'yı aştığında, local indeksini u8 tipi ile temsil ettiğinden, tam sayı taşması meydana gelebilir. Move'un locals sayısını kontrol etme mekanizması olmasına rağmen, parametre uzunluğunu içermemektedir.
Bu taşma açığını kullanarak, saldırgan bir döngü kod bloğu oluşturabilir ve bloğun durumunu değiştirebilir. Temel blok tekrar çalıştırıldığında, eğer talimatın erişim sağlaması gereken indeks yeni locals haritasında yoksa, bu programın çökmesine neden olur.
Araştırmacılar, bu açığı nasıl tetikleyebileceğini gösteren bir konsept kanıtı ( PoC ) kodu sağladılar. Belirli parametreleri ve yerel değişken sayısını ayarlayarak, locals haritasının uzunluğunu 8'e düşürebilirler. Bir sonraki yürütmede, var olmayan 57 numaralı indeksi erişmeye çalışmak panic ile sonuçlanacaktır.
Bu açık, kesinlikle güvenli bir kodun olmadığını bir kez daha kanıtladı. Move dilinin yürütülmeden önce statik denetimden geçtiği halde, yine de tamsayı taşmasıyla aşılabilir. Araştırmacılar, Move dilinin tasarımcılarına, benzer sorunların meydana gelmesini önlemek için çalışma zamanında daha fazla kontrol kodu eklemelerini öneriyor.
Şu anda, araştırma ekibi Move dilinin başka bir açığını keşfetti ve daha fazla ayrıntıyı ilerleyen günlerde paylaşacak. Bu bulgular, Move dilinin güvenliğinin geliştirilmesi açısından önemli bir anlam taşıyor.
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.
11 Likes
Reward
11
4
Share
Comment
0/400
PositionPhobia
· 10h ago
Bu kodda ne kadar tuzak var, gidebildiği kadar gider.
Move dilinde tamsayı taşma açığı: referans güvenlik doğrulamasında risk var
Move dili yüksek riskli bir açık daha gösterdi: Tam sayı taşması düğümün çökmesine neden olabilir
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ettikten sonra yeni bir tam sayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenliği doğrulama sürecinde ortaya çıkmakta olup, Düğüm çökmesine neden olabilir.
Move dili, byte kodunu çalıştırmadan önce kod doğrulaması yapar ve bu işlem dört adımdan oluşur. Bu keşfedilen güvenlik açığı, reference_safety adımında bulunmaktadı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 referansların erişiminin güvenli olup olmadığını denetlemek gibi işlemleri içerir.
Açığın tetiklenmesi, Move dilindeki temel blok kavramıyla ilgilidir. Temel blok, giriş ve çıkış dışında dal komutları olmayan bir kod dizisidir. Move, bytecode'u tarayarak ve dal komutlarını bularak temel blokları tanımlar.
Alıntı güvenlik doğrulama sürecinde sistem, her temel bloktaki byte kodu komutlarını tarar ve tüm alıntı işlemlerinin yasal olup olmadığını belirler. Bu süreç, borrow graph ve locals adlı iki önemli bileşeni içeren AbstractState yapısını kullanır.
Hata, join_ fonksiyonunda ortaya çıkmıştır. Parametre uzunluğu ile yerel değişken uzunluğunun toplamı 256'yı aştığında, local indeksini u8 tipi ile temsil ettiğinden, tam sayı taşması meydana gelebilir. Move'un locals sayısını kontrol etme mekanizması olmasına rağmen, parametre uzunluğunu içermemektedir.
Bu taşma açığını kullanarak, saldırgan bir döngü kod bloğu oluşturabilir ve bloğun durumunu değiştirebilir. Temel blok tekrar çalıştırıldığında, eğer talimatın erişim sağlaması gereken indeks yeni locals haritasında yoksa, bu programın çökmesine neden olur.
Araştırmacılar, bu açığı nasıl tetikleyebileceğini gösteren bir konsept kanıtı ( PoC ) kodu sağladılar. Belirli parametreleri ve yerel değişken sayısını ayarlayarak, locals haritasının uzunluğunu 8'e düşürebilirler. Bir sonraki yürütmede, var olmayan 57 numaralı indeksi erişmeye çalışmak panic ile sonuçlanacaktır.
Bu açık, kesinlikle güvenli bir kodun olmadığını bir kez daha kanıtladı. Move dilinin yürütülmeden önce statik denetimden geçtiği halde, yine de tamsayı taşmasıyla aşılabilir. Araştırmacılar, Move dilinin tasarımcılarına, benzer sorunların meydana gelmesini önlemek için çalışma zamanında daha fazla kontrol kodu eklemelerini öneriyor.
Şu anda, araştırma ekibi Move dilinin başka bir açığını keşfetti ve daha fazla ayrıntıyı ilerleyen günlerde paylaşacak. Bu bulgular, Move dilinin güvenliğinin geliştirilmesi açısından önemli bir anlam taşıyor.