Move dilindeki tam sayı taşma açığı ifşa edildi: bytecode doğrulama tehlikesi

robot
Abstract generation in progress

Move dilinde tam sayı taşma açığı analizi

Move diline derinlemesine araştırma yaptıktan sonra yeni bir tam sayı taşma açığı keşfettik. Bu açık, Move dilinin byte kodu doğrulama sürecinin referans güvenliği kontrol aşamasında ortaya çıkmaktadır. Bu makalede, bu açığın tetiklenme sürecini detaylı bir şekilde analiz edecek ve Move dilinin bazı temel kavramlarını tartışacağız.

Move dilinin bytecode doğrulama süreci

Move dili, byte kodunu çalıştırmadan önce kod doğrulaması yapar ve bu işlem 4 aşamaya ayrılır. Bu güvenlik açığı, reference_safety aşamasında meydana gelmiştir. Bu aşama, referansların güvenliğini doğrulamaktan sorumludur ve boş referansların varlığını kontrol etme, değişken referans erişiminin güvenli olup olmadığını kontrol etme gibi işlemleri içerir.

Doğrulama süreci öncelikle kod içindeki temel blokları tanımlar. Temel blok, giriş ve çıkış dışında dalga komutları olmayan kod dizileridir. Move, bayt kodunu dolaşarak tüm dalga komutlarını ve döngü komutlarını arar ve temel blokları belirler.

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

Move'deki Referans Güvenliği

Move, iki tür referans türünü destekler: değişmez referans (&) ve değişken referans (&mut). Referans güvenliği modülü, her temel bloğun bayt kodu talimatlarını tarar ve tüm referans işlemlerinin geçerliliğini doğrular.

Doğrulama süreci, durumu temsil etmek için AbstractState yapısını kullanır ve borrow graph ile locals içerir. Doğrulama sırasında, yürütme öncesi ve sonrası durumlar karşılaştırılacak ve blok durumu güncellenecektir.

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

Açık Analizi

Hata, join_ fonksiyonunda ortaya çıkıyor. Bu fonksiyon, yürütme öncesi ve sonrası durumu birleştirmek, locals haritasını ve borç grafiğini güncellemek için kullanılır. Sorun, locals iterator'ının u8 türü döndürmesi ve parametre uzunluğu ile yerel değişken uzunluğunun toplamı 256'yı aştığında taşma yaşanmasıdır.

Move, locals sayısını kontrol eden bir sürece sahip olmasına rağmen, yalnızca yerel değişkenlerin sayısını kontrol eder, parametre uzunluğunu dahil etmez.

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

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

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

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

Açık Kullanım

Bu taşma kullanılarak temel bloğun durumu değiştirilebilir. Döngü kodunda, temel blok her çalıştırıldığında durum değişir. Yeniden çalıştırıldığında, eğer komutun eriştiği indeks yeni locals haritasında yoksa, panic'e yol açarak DoS saldırısı gerçekleştirilir.

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

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

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

PoC Gösterimi

Belirli parametreler ve yerel değişken sayısı ayarlanarak tamsayı taşmasına neden olan, programın çökmesine yol açan yeniden üretilebilir bir PoC kodu sağladı.

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

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

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

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

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

Özet

Bu açık, kod denetiminin önemini bir kez daha kanıtladı. Move dili için, yalnızca doğrulama aşamasındaki kontrolere güvenmek yerine, çalışma zamanında daha fazla güvenlik kontrolü eklenmesi önerilmektedir. Move dilinin güvenlik sorunlarını derinlemesine incelemeye devam edeceğiz ve gelişimine katkıda bulunacağız.

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

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
  • 7
  • Share
Comment
0/400
RektButStillHerevip
· 07-11 04:35
Yine taşma oldu, tsk tsk
View OriginalReply0
consensus_failurevip
· 07-11 01:01
Bununla birlikte bu hata var.
View OriginalReply0
SchrodingersPapervip
· 07-09 07:32
move yine mi gönderdi? Her şey yolunda gitmedi, her şey yolunda gitmedi.
View OriginalReply0
DevChivevip
· 07-08 16:28
Yeni başlayanlar insanları enayi yerine koymak
View OriginalReply0
ProposalManiacvip
· 07-08 06:09
Parametre doğrulamasının sadece belgede yazılmasının yeterli olmadığını daha önce söyledim.
View OriginalReply0
DegenWhisperervip
· 07-08 06:07
Taşma biraz korkutucu değil mi?
View OriginalReply0
ApeWithAPlanvip
· 07-08 05:48
move Ning yine bir sorun yaşadı
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)