Move dilinde yeni keşfedilen bir tamsayı taşma açığı
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ederken yeni bir tam sayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenliği doğrulama sürecinde ortaya çıkmakta ve düğümlerin çökmesine neden olabilmektedir.
Move dili, byte kodunu yürütmeden önce kod doğrulaması yapar ve dört aşamaya ayrılır. Bu açık, reference_safety aşamasında bulunur. Referans güvenliği doğrulaması esas olarak askıda referansların var olup olmadığını, değişken referans erişiminin güvenli olup olmadığını ve global depolama referans erişiminin güvenli olup olmadığını kontrol eder.
Doğrulama süreci, her bir temel bloğu analiz edecektir. Temel blok, giriş ve çıkış dışında dalga komutları olmayan bir kod dizisidir. Move, byte kodunu tarayarak, dalga komutlarını ve döngü komutlarını bularak temel blokları tanımlar.
Referans güvenliğini doğrulamanın ana süreci şudur: Her temel blok için kod yürütmek, yürütme sonrası durumu oluşturmak, ardından yürütme öncesi ve sonrası durumları birleştirmek, blok durumunu güncellemek ve bunu sonraki bloklara yaymaktır. Bu süreç, durum değişmeyene veya hata vermeyene kadar tekrar tekrar yürütülür.
Açık, birleştirme durumunun sürecinde ortaya çıkmaktadır. Eğer fonksiyon parametrelerinin uzunluğu ile yerel değişkenlerin uzunluğu 256'dan büyükse, u8 türü taşma yapar. Yerel değişken sayısını kontrol eden bir kod olmasına rağmen, parametre uzunluğunu içermemektedir.
Bu taşma sayesinde bloğun durumu değiştirilebilir, böylece yeni ve eski durum farklılaşır. Temel bloğu yeniden yürütürken, yeni durumda mevcut olmayan bir indekse erişmek programın çökmesine neden olur.
Araştırmacılar, bu açığı tetikleyerek düğüm çökmesine neden olabilecek bir konsept kanıtı kodu sundular. Bu, statik tür dillerinin bile güvenlik sorunlarına sahip olabileceğini göstermektedir, bu yüzden kod denetimi çok önemlidir. Move dilinin, yalnızca doğrulama aşamasında değil, aynı zamanda çalışma zamanında daha fazla güvenlik kontrolü eklemesi önerilmektedir.
Bu açığın keşfi, kesinlikle güvenli bir kodun olmadığını bir kez daha gösteriyor. Güçlü tipli diller bile açıklar içerebilir. Güvenlik araştırmacıları, Move dilini daha derinlemesine analiz etmeye devam edecek ve daha fazla potansiyel sorun arayacaklar.
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.
9 Likes
Reward
9
7
Repost
Share
Comment
0/400
BlockchainRetirementHome
· 7h ago
Move soğuyacak mı?
View OriginalReply0
MemeEchoer
· 7h ago
Yine çöktü, bugün kaçıncı oldu?
View OriginalReply0
AirdropBlackHole
· 7h ago
Bu dalga sıcak gündeme katıldı~ move yine patladı
View OriginalReply0
UncleLiquidation
· 7h ago
Yine tencereyi tamir etmemiz gerekecek.
View OriginalReply0
MidnightSnapHunter
· 7h ago
move serinledi
View OriginalReply0
ApeWithNoChain
· 7h ago
move yine çöktü mü? Artık beklenmeye değer değil...
Move dilinde yeni bulunan tam sayı taşma açığı, düğüm çökmesine neden olabilir.
Move dilinde yeni keşfedilen bir tamsayı taşma açığı
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ederken yeni bir tam sayı taşma açığı keşfettiler. Bu açık, Move dilinin referans güvenliği doğrulama sürecinde ortaya çıkmakta ve düğümlerin çökmesine neden olabilmektedir.
Move dili, byte kodunu yürütmeden önce kod doğrulaması yapar ve dört aşamaya ayrılır. Bu açık, reference_safety aşamasında bulunur. Referans güvenliği doğrulaması esas olarak askıda referansların var olup olmadığını, değişken referans erişiminin güvenli olup olmadığını ve global depolama referans erişiminin güvenli olup olmadığını kontrol eder.
Doğrulama süreci, her bir temel bloğu analiz edecektir. Temel blok, giriş ve çıkış dışında dalga komutları olmayan bir kod dizisidir. Move, byte kodunu tarayarak, dalga komutlarını ve döngü komutlarını bularak temel blokları tanımlar.
Referans güvenliğini doğrulamanın ana süreci şudur: Her temel blok için kod yürütmek, yürütme sonrası durumu oluşturmak, ardından yürütme öncesi ve sonrası durumları birleştirmek, blok durumunu güncellemek ve bunu sonraki bloklara yaymaktır. Bu süreç, durum değişmeyene veya hata vermeyene kadar tekrar tekrar yürütülür.
Açık, birleştirme durumunun sürecinde ortaya çıkmaktadır. Eğer fonksiyon parametrelerinin uzunluğu ile yerel değişkenlerin uzunluğu 256'dan büyükse, u8 türü taşma yapar. Yerel değişken sayısını kontrol eden bir kod olmasına rağmen, parametre uzunluğunu içermemektedir.
Bu taşma sayesinde bloğun durumu değiştirilebilir, böylece yeni ve eski durum farklılaşır. Temel bloğu yeniden yürütürken, yeni durumda mevcut olmayan bir indekse erişmek programın çökmesine neden olur.
Araştırmacılar, bu açığı tetikleyerek düğüm çökmesine neden olabilecek bir konsept kanıtı kodu sundular. Bu, statik tür dillerinin bile güvenlik sorunlarına sahip olabileceğini göstermektedir, bu yüzden kod denetimi çok önemlidir. Move dilinin, yalnızca doğrulama aşamasında değil, aynı zamanda çalışma zamanında daha fazla güvenlik kontrolü eklemesi önerilmektedir.
Bu açığın keşfi, kesinlikle güvenli bir kodun olmadığını bir kez daha gösteriyor. Güçlü tipli diller bile açıklar içerebilir. Güvenlik araştırmacıları, Move dilini daha derinlemesine analiz etmeye devam edecek ve daha fazla potansiyel sorun arayacaklar.