Move dilinde güvenli doğrulama tam sayısı taşma açığı analizi

robot
Abstract generation in progress

Move dilinde referans güvenliği doğrulama için tam sayı taşması açığı analizi

Son zamanlarda, araştırmacılar Aptos Moveevm'i derinlemesine analiz ederken yeni bir tamsayı 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. Bu makalede, bu açığın derinlemesine incelenecek ve tetiklenme süreci ile potansiyel etkileri açıklanacaktır.

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

Move dili doğrulama süreci

Move dili, bayt kodunu çalıştırmadan önce kod birimi doğrulaması yapar ve bu süreç 4 adımda gerçekleşir. Bu keşfedilen güvenlik açığı, reference_safety adımında ortaya çıkmıştır. Bu adım, referans güvenliğini doğrulamak için kullanılır ve askıda kalan referansların olup olmadığını, değişken referans erişiminin güvenli olup olmadığını, küresel depolama referans erişiminin güvenli olup olmadığını kontrol eder.

Doğrulama süreci öncelikle temel blokları tanımlar. Move dilinde, temel bloklar bayt kodunu tarayarak, tüm dal talimatları ve döngü talimatı dizilerini bularak belirlenir. Her temel blok, giriş ve çıkış dışında dal talimatı olmayan bir kod dizisidir.

Numen Cyber'ın özel keşfi move dilinde bir yüksek tehlike açığı daha

Alıntı Güvenlik Doğrulama Mekanizması

Move dili, değişmez referans (&) ve değişebilir referans (&mut) olmak üzere iki türü destekler. Referans güvenlik doğrulama modülü, fonksiyon bazında, fonksiyondaki her temel bloğun bytecode talimatlarını tarayarak tüm referans işlemlerinin geçerli olup olmadığını belirler.

Doğrulama süreci, durumu temsil etmek için AbstractState yapısını kullanır ve iki temel bileşen içerir: borç grafiği ve yerel değişkenler. Doğrulama sırasında, temel blokların öncesi ve sonrası durum değişiklikleri karşılaştırılır ve sonuç sonraki bloklara iletilir.

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

Açık Ayrıntıları

Açık, join_ fonksiyonunda bulunuyor. Bu fonksiyon, temel blokların öncesi ve sonrasındaki durumları birleştirmek için kullanılır. Sorun, iter_locals() yönteminde, bu yöntem u8 türünde bir iterator döndürüyor. Fonksiyon parametrelerinin uzunluğu ile yerel değişkenlerin toplam uzunluğu 256'yı aştığında, bu tam sayı taşmasına neden oluyor.

Move dilinin locals sayısını kontrol eden bir süreci olmasına rağmen, yalnızca yerel değişken sayısını kontrol etmektedir, parametre uzunluğunu içermemektedir. Bu, geliştiricilerin bir dikkatsizliği olabilir.

Numen Cyber, move dilinde bir başka yüksek riskli açıklık keşfetti

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

Numen Cyber, move dilinde bir başka yüksek riskli güvenlik açığı buldu

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

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

Numen Cyber'ın özel bulgusu: move dilinde bir yüksek riskli güvenlik açığı daha

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

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

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

Açıkların Kullanımı ve Etkisi

Bu tam sayı taşma açığını kullanarak, bir saldırgan özel döngü kod blokları oluşturabilir ve bloğun durumunu değiştirebilir. Temel blok yeniden çalıştırıldığında, eğer talimatın eriştiği indeks yeni locals haritasında yoksa, hizmet reddi (DoS) ile sonuçlanabilir.

Özellikle, reference safety modülünde, MoveLoc/CopyLoc/FreeRef gibi opcode'lar, var olmayan bir LocalIndex'e erişim nedeniyle panic ile sonuçlanabilir ve bu da tüm düğümün çökmesine yol açabilir.

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

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

Özet ve Öneriler

Bu açık, dikkatlice tasarlanmış dillerin bile güvenlik açıkları barındırabileceğini bir kez daha kanıtladı. Move dili için önerimiz:

  1. Kod denetimini güçlendirin, benzer ihmalden kaçının.
  2. Move çalışma zamanında daha fazla kontrol kodu ekleyin, yalnızca doğrulama aşamasının güvenlik kontrollerine güvenmeyin.
  3. Çalışma aşamasında güvenlik güçlendirme önlemleri ekleyin, böylece doğrulamanın atlanmasının ardından daha ciddi sorunların ortaya çıkmasını önleyin.

Move dilinin güvenlik araştırmalarında öncülerden biri olarak, ilgili güvenlik sorunlarını derinlemesine keşfetmeye devam edeceğiz ve Move ekosisteminin sağlıklı gelişimine katkıda bulunacağız.

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

MOVE1.51%
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
  • 9
  • Share
Comment
0/400
LiquidationWatchervip
· 07-07 17:46
aman tanrım bir başka defi istismarı... şu anda bana 2022 anılarını hatırlatıyor
View OriginalReply0
BearMarketSunriservip
· 07-07 02:16
move mahkum ah,炒a hala炒b'den daha iyi değil
View OriginalReply0
SundayDegenvip
· 07-06 08:36
Tüh bu hata gerçekten biraz basit.
View OriginalReply0
MoonRocketmanvip
· 07-05 04:47
Move'un engelleme yüksekliği 256 kaybedildi, roket düşüş riski konusunda dikkatli olun.
View OriginalReply0
Web3ProductManagervip
· 07-05 04:47
dönüşüm hunisi verilerine bakarken, bu taşma hatası = büyük bir kullanıcı deneyimi friction açıkçası
View OriginalReply0
PanicSeller69vip
· 07-05 04:47
Move çok gevrek oldu değil mi
View OriginalReply0
WhaleMistakervip
· 07-05 04:46
move köpeği serin mi?
View OriginalReply0
NeverVoteOnDAOvip
· 07-05 04:28
Aptos yine bir kod hatası mı???
View OriginalReply0
SignatureCollectorvip
· 07-05 04:18
Yine bir taşma sorunu, tırman.
View OriginalReply0
View More
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)