Move dilindeki referans güvenlik mekanizmasında yeni bir tamsayı taşma açığı keşfedildi
Son günlerde, güvenlik araştırmacıları Aptos MoveEVM'yi 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, özellikle reference_safety adımında bulunmaktadır.
Move dili, byte kodunu çalıştırmadan önce kod birimi doğrulaması yapar ve bu işlem 4 adıma ayrılır. Referans güvenliği doğrulaması, boş referansların olmadığından, değişken referanslara erişimin güvenli olduğundan ve küresel depolama referanslarına erişimin güvenli olduğundan emin olmak için kullanılan önemli bir aşamadır.
Güvenli doğrulamanın özünün her fonksiyondaki temel blokların analiz edilmesi olduğu belirtilmektedir. Temel blok, giriş ve çıkış dışında herhangi bir dal komutu bulunmayan kod dizisidir. Move, byte kodunu tarayarak, tüm dal komutlarını ve döngü komutlarını bulup temel blokları belirler.
Doğrulama süreci, durumu temsil etmek için AbstractState yapılarını kullanır ve iki bölümden oluşur: borrow graph ve locals. Doğrulama sırasında, temel blok kodu post state oluşturur ve ardından pre state ile birleştirerek blok durumunu günceller ve bunu sonraki bloklara yayar. Bu süreç, V8 turbofan'daki Sea of Nodes düşüncesine benzer.
Hata, join_ fonksiyonunda ortaya çıkmaktadır. Fonksiyon parametre uzunluğu ile yerel değişkenlerin uzunluğu toplamı 256'dan büyük olduğunda, u8 türü ile local üzerinde yineleme yapıldığında tam sayı taşması oluşmaktadır. Move'un locals sayısını kontrol eden bir süreci olmasına rağmen, yalnızca locals'ı kontrol etmekte ve parametre uzunluğunu dahil etmemektedir.
Bu açığı kullanarak, saldırganlar bir döngü kod bloğu oluşturabilir ve taşmayı kullanarak bloğun durumunu değiştirebilirler. Yeniden çalıştırıldığında, eğer talimatın erişmesi gereken indeks yeni locals haritasında yoksa, bu DoS'a neden olacaktır.
Bu açık, Move gibi güvenliğe önem veren dillerin bile sorunlar yaşayabileceğini bir kez daha gösteriyor. Move dilinin tasarımcılarına, yalnızca doğrulama aşamasındaki güvenlik kontrollerine güvenmekle kalmayıp, çalışma zamanında daha fazla kontrol eklemelerini öneriyorum. Ayrıca geliştiricilere kod denetiminin önemini hatırlatmakta fayda var.
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.
12 Likes
Reward
12
5
Share
Comment
0/400
BoredWatcher
· 15h ago
Bu hata çok saçma, nasıl bu kadar basit olabilir?
View OriginalReply0
WalletInspector
· 15h ago
Eh, move kullanmaktansa rust kullanmak daha iyi.
View OriginalReply0
MemecoinTrader
· 15h ago
lmao başka bir l1 mahvoldu... klasik tam sayı taşması alfa sızıntısı
View OriginalReply0
LidoStakeAddict
· 15h ago
Move yine sorun çıkardı, tsk tsk.
View OriginalReply0
BuyHighSellLow
· 15h ago
Yine kötüleştim. Yok et, her şey yeniden başlasın.
Move dilindeki referans güvenlik mekanizması, AptosMoveEVM'yi etkileyen tam sayı taşma açığını tespit etti.
Move dilindeki referans güvenlik mekanizmasında yeni bir tamsayı taşma açığı keşfedildi
Son günlerde, güvenlik araştırmacıları Aptos MoveEVM'yi 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, özellikle reference_safety adımında bulunmaktadır.
Move dili, byte kodunu çalıştırmadan önce kod birimi doğrulaması yapar ve bu işlem 4 adıma ayrılır. Referans güvenliği doğrulaması, boş referansların olmadığından, değişken referanslara erişimin güvenli olduğundan ve küresel depolama referanslarına erişimin güvenli olduğundan emin olmak için kullanılan önemli bir aşamadır.
Güvenli doğrulamanın özünün her fonksiyondaki temel blokların analiz edilmesi olduğu belirtilmektedir. Temel blok, giriş ve çıkış dışında herhangi bir dal komutu bulunmayan kod dizisidir. Move, byte kodunu tarayarak, tüm dal komutlarını ve döngü komutlarını bulup temel blokları belirler.
Doğrulama süreci, durumu temsil etmek için AbstractState yapılarını kullanır ve iki bölümden oluşur: borrow graph ve locals. Doğrulama sırasında, temel blok kodu post state oluşturur ve ardından pre state ile birleştirerek blok durumunu günceller ve bunu sonraki bloklara yayar. Bu süreç, V8 turbofan'daki Sea of Nodes düşüncesine benzer.
Hata, join_ fonksiyonunda ortaya çıkmaktadır. Fonksiyon parametre uzunluğu ile yerel değişkenlerin uzunluğu toplamı 256'dan büyük olduğunda, u8 türü ile local üzerinde yineleme yapıldığında tam sayı taşması oluşmaktadır. Move'un locals sayısını kontrol eden bir süreci olmasına rağmen, yalnızca locals'ı kontrol etmekte ve parametre uzunluğunu dahil etmemektedir.
Bu açığı kullanarak, saldırganlar bir döngü kod bloğu oluşturabilir ve taşmayı kullanarak bloğun durumunu değiştirebilirler. Yeniden çalıştırıldığında, eğer talimatın erişmesi gereken indeks yeni locals haritasında yoksa, bu DoS'a neden olacaktır.
Bu açık, Move gibi güvenliğe önem veren dillerin bile sorunlar yaşayabileceğini bir kez daha gösteriyor. Move dilinin tasarımcılarına, yalnızca doğrulama aşamasındaki güvenlik kontrollerine güvenmekle kalmayıp, çalışma zamanında daha fazla kontrol eklemelerini öneriyorum. Ayrıca geliştiricilere kod denetiminin önemini hatırlatmakta fayda var.