Move dili referans güvenlik modülünde tam sayı taşma açığı bulunmaktadır, bu da DoS saldırısına neden olabilir.

robot
Abstract generation in progress

Move dilinin güvenlik modülündeki tam sayı taşma açığı analizi

Son zamanlarda, Aptos Moveevm'i derinlemesine incelerken yeni bir tam sayı taşma açığı keşfettik. Bu açığın tetiklenme süreci oldukça ilginç, aşağıda bu açığı derinlemesine analiz edecek ve bu vesileyle Move dilinin bazı temel kavramlarını tartışacağız.

Move dili, byte kodunu çalıştırmadan önce kod birimi doğrulaması yapar. Bu süreç dört adımdan oluşur. Bu yazıda tartışılan güvenlik açığı reference_safety adımında ortaya çıkmaktadır.

reference_safety modülü, kod içindeki referans güvenliğini doğrulamaktan sorumludur. Bu, askıda kalan referansların olup olmadığını kontrol etmeyi, değişken referans erişiminin güvenli olup olmadığını ve global depolama referans erişiminin uygun olup olmadığını içerir.

Numen Cyber, move dilinde başka bir yüksek risk açığı keşfetti

Güvenlik doğrulama sürecinde, sistem her bir temel bloğu analiz eder. Temel blok, giriş ve çıkış dışında hiçbir dal komutuna sahip olmayan kod dizisidir. Move dili, temel blokları tanımlamak için bayt kodunu tarayarak tüm dal komutlarını ve döngü komutu dizilerini bulur.

Move dili iki tür referans türünü destekler: değişmez referans (&) ve değiştirilebilir referans (&mut). Değişmez referans verileri okumak için, değiştirilebilir referans ise verileri değiştirmek için kullanılır. Bu tasarım, kodun güvenliğini ve okunabilirliğini artırmaya yardımcı olur.

Referans güvenliğini doğrulamanın ana süreçleri şunlardır: işlevdeki temel blokları taramak, bytecode talimatlarını analiz etmek ve tüm referans işlemlerinin yasal olup olmadığını belirlemek. Bu süreç, işlevdeki referans güvenliğini sağlamaya yardımcı olan borrow graph ve locals içeren AbstractState yapısını kullanır.

Numen Cyber'ın özel keşfi: move dilinde bir başka yüksek riskli güvenlik açığı

Doğrulama sürecinde, temel bloğun öncesi ve sonrası durumu (pre state ve post state) karşılaştırılacak ve sonuçlar blok durumunu güncellemek için birleştirilecektir. Eğer durum değişirse ve mevcut blok kendisine geri yönlendiren bir kenar (döngü varlığını gösterir) içeriyorsa, bu temel blok yeniden çalıştırılacaktır, ta ki durum değişmeyi durdurana veya bir hata meydana gelene kadar.

Açık, join sonucunun değişip değişmediğini kontrol etme sürecinde meydana geliyor. Fonksiyon parametrelerinin uzunluğu ile yerel değişkenlerin uzunluğunun toplamı 256'yı aşarsa, local indeksini belirtmek için u8 türü kullanıldığı için tam sayı taşması meydana gelebilir. Move dilinin locals sayısını kontrol etme süreci olmasına rağmen, sadece yerel değişkenlerin sayısını kontrol etmekte ve parametre uzunluğunu içermemektedir.

Numen Cyber özel keşfi move dilinde bir başka yüksek riskli güvenlik açığı

Bu tam sayı taşma açığı, hizmet reddi saldırısına yol açabilir ( DoS ). Saldırganlar, taşmayı kullanarak bloğun durumunu değiştirmek için bir döngü kod bloğu oluşturabilir ve yeni locals haritasının öncekinden farklı olmasını sağlayabilir. execute_block fonksiyonu tekrar çalıştırıldığında, eğer talimatların erişmesi gereken indeks yeni AbstractState locals haritasında yoksa, panic durumu meydana gelir ve bu da tüm düğümün çökmesine neden olur.

Bu açığı göstermek için, git'te yeniden üretilebilecek bir PoC sağladık. Bu PoC, koşulsuz dalga komutu içeren bir temel blok içerir ve execute_block ve join fonksiyonları birden fazla kez tetiklenebilir. Parametreleri ve yerel değişken sayısını dikkatlice ayarlayarak, yeni locals haritasının uzunluğunu 8'e indirebilir ve ardından ikinci yürütmede panic'i tetikleyebilirsiniz.

Numen Cyber özel keşfi move dilinde bir başka yüksek riskli açık

Bu açık, mutlak güvenli bir kodun olmadığını bir kez daha kanıtladı. Move dilinin yürütülmeden önce sıkı statik kontrollerden geçmesine rağmen, yine de taşma açıkları tarafından aşılabilir. Bu, kod denetiminin önemini ve dil tasarımında çalışma zamanı güvenlik kontrollerinin eklenmesi gerekliliğini vurguluyor.

Move dilinin güvenlik araştırmalarında lider olarak, Move'un güvenlik sorunlarını derinlemesine araştırmaya devam edeceğiz ve dil tasarımcılarına Move çalışma zamanında daha fazla kontrol kodu eklemelerini öneriyoruz, böylece beklenmeyen durumların önüne geçilebilir. Şu anda Move dilinde güvenlik kontrolleri esas olarak doğrulama aşamasında gerçekleştirilmektedir, ancak bunun yeterli olmadığını düşünüyoruz. Doğrulama atlatıldığında, çalışma aşamasında yeterli güvenlik güçlendirmesinin olmaması daha ciddi sorunlara yol açabilir.

Numen Cyber özel keşfi move dilinde bir başka yüksek tehlikeli açık

Numen Cyber özel keşfi move dilinde bir başka yüksek tehlike açığı

Numen Cyber özel buluşu move dilinde başka bir yüksek riskli açık

Numen Cyber, move dilinde bir yüksek risk açığı daha keşfetti

Numen Cyber özel keşfi move dilinde bir yüksek riskli açık daha bulundu

Numen Cyber'in özel keşfi: move dilinde bir başka yüksek riskli güvenlik açığı

Numen Cyber'ın özel keşfi move dilinde bir başka yüksek riskli güvenlik açığı

Numen Cyber özel keşfi move dilinde bir başka yüksek riskli açık

Numen Cyber'ın özel keşfi move dilinde bir başka yüksek riskli güvenlik açığı

Numen Cyber özel olarak move dilinde başka bir yüksek riskli güvenlik açığı keşfetti

Numen Cyber'ın özel keşfi move dilinde bir başka yüksek riskli açık

View Original
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.
  • Reward
  • 5
  • Share
Comment
0/400
FUD_Whisperervip
· 07-08 18:40
Neden bu kadar çok açık var, moral bozuluyor.
View OriginalReply0
LadderToolGuyvip
· 07-06 19:13
Gerçekten birçok taşma hatası var.
View OriginalReply0
MetaverseMigrantvip
· 07-06 17:57
Yine bana 2021'de Solana'yı test ettiğim zamanı hatırlatıyor.
View OriginalReply0
ETHReserveBankvip
· 07-06 17:45
move artık hoş değil
View OriginalReply0
RuntimeErrorvip
· 07-06 17:32
Sorunun erken farkına varmıştım.
View OriginalReply0
Trade Crypto Anywhere Anytime
qrCode
Scan to download Gate app
Community
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)