Move dili tekrar yüksek riskli bir güvenlik açığına sahip: Tam sayı taşması düğümün çökmesine neden olabilir.
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ederken yeni bir tamsayı taşma açığı keşfettiler; bu da düğümlerin çökmesine neden olabilir. Bu açık, Move dilinin referans güvenliği doğrulama modülünde bulunmakta olup, temel blok analizi ve durum birleştirme sürecini kapsamaktadır.
Move dili, byte kodunu çalıştırmadan önce kod doğrulaması yapar ve bu dört aşamaya ayrılır. Bu sefer keşfedilen güvenlik açığı, referans güvenliği (reference_safety) doğrulama aşamasında ortaya çıkmaktadır. Bu aşama, fonksiyondaki temel blokları analiz eder ve referans işlemlerinin geçerliliğini doğrular.
Doğrulama sürecinde bir AbstractState yapısı korunacaktır, bu yapı yerel değişkenleri (locals) ve borç alma ilişkisi grafiğini (borrow graph) içermektedir. Temel bloklar analiz edilirken, blok içindeki talimatlar post state'ini üretmek için yürütülecek ve ardından pre state ile birleştirilerek durum güncellenecektir.
Açık, birleştirilmiş durumdaki join_ fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, locals değişkenini dolaşır, ancak locals, fonksiyon parametrelerini ve yerel değişkenleri içerir. Parametre sayısının yerel değişken sayısının toplamını 256'yı aştığında, u8 türü ile yineleme yapıldığından, tam sayı taşması meydana gelir.
Saldırganlar, bu taşmayı kullanarak durumu değiştirmek için özel döngü kod blokları oluşturabilirler. Bir sonraki analiz turunda, bazı talimatlar mevcut olmayan locals indekslerine erişebilir, bu da panik tetikleyerek düğümün çökmesine neden olabilir.
Araştırmacılar, 264 locals değişkeni ayarlayarak, ikinci analiz turunda panic'i tetikleyebilen bir kavram kanıtı (PoC) sundular. Bu, Move dilinin çalışma zamanında yeterli güvenlik kontrolüne sahip olmadığını ortaya koydu.
Bu açık, güvenliğine vurgu yapılan Move dilinin bile hatalar içerebileceğini bir kez daha gösteriyor. Move dilinin tasarımcılarına, yalnızca doğrulama aşamasındaki statik analize güvenmek yerine, çalışma zamanında daha fazla güvenlik kontrolü eklemelerini öneriyorum. Aynı zamanda geliştiricilere de kod denetimlerini güçlendirmeleri ve benzer dikkatsizliklerden kaçınmaları hatırlatılıyor.
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
5
Share
Comment
0/400
SmartContractPhobia
· 08-02 02:38
move çökmüş durumda, yerel da çökmüş durumda
View OriginalReply0
CoconutWaterBoy
· 07-30 03:38
move yine başarısız oldu, çoktan değişmesi gerekiyordu
View OriginalReply0
SchrodingerWallet
· 07-30 03:36
move yine takla attı.
View OriginalReply0
0xDreamChaser
· 07-30 03:34
move yine mi çöktü? Mezuniyet bile yeterince hızlı değil
Move dili, tam sayı taşma açığını ortaya çıkardı; Düğüm çökme riski takip et.
Move dili tekrar yüksek riskli bir güvenlik açığına sahip: Tam sayı taşması düğümün çökmesine neden olabilir.
Son zamanlarda, güvenlik araştırmacıları Move dilini derinlemesine analiz ederken yeni bir tamsayı taşma açığı keşfettiler; bu da düğümlerin çökmesine neden olabilir. Bu açık, Move dilinin referans güvenliği doğrulama modülünde bulunmakta olup, temel blok analizi ve durum birleştirme sürecini kapsamaktadır.
Move dili, byte kodunu çalıştırmadan önce kod doğrulaması yapar ve bu dört aşamaya ayrılır. Bu sefer keşfedilen güvenlik açığı, referans güvenliği (reference_safety) doğrulama aşamasında ortaya çıkmaktadır. Bu aşama, fonksiyondaki temel blokları analiz eder ve referans işlemlerinin geçerliliğini doğrular.
Doğrulama sürecinde bir AbstractState yapısı korunacaktır, bu yapı yerel değişkenleri (locals) ve borç alma ilişkisi grafiğini (borrow graph) içermektedir. Temel bloklar analiz edilirken, blok içindeki talimatlar post state'ini üretmek için yürütülecek ve ardından pre state ile birleştirilerek durum güncellenecektir.
Açık, birleştirilmiş durumdaki join_ fonksiyonunda ortaya çıkmaktadır. Bu fonksiyon, locals değişkenini dolaşır, ancak locals, fonksiyon parametrelerini ve yerel değişkenleri içerir. Parametre sayısının yerel değişken sayısının toplamını 256'yı aştığında, u8 türü ile yineleme yapıldığından, tam sayı taşması meydana gelir.
Saldırganlar, bu taşmayı kullanarak durumu değiştirmek için özel döngü kod blokları oluşturabilirler. Bir sonraki analiz turunda, bazı talimatlar mevcut olmayan locals indekslerine erişebilir, bu da panik tetikleyerek düğümün çökmesine neden olabilir.
Araştırmacılar, 264 locals değişkeni ayarlayarak, ikinci analiz turunda panic'i tetikleyebilen bir kavram kanıtı (PoC) sundular. Bu, Move dilinin çalışma zamanında yeterli güvenlik kontrolüne sahip olmadığını ortaya koydu.
Bu açık, güvenliğine vurgu yapılan Move dilinin bile hatalar içerebileceğini bir kez daha gösteriyor. Move dilinin tasarımcılarına, yalnızca doğrulama aşamasındaki statik analize güvenmek yerine, çalışma zamanında daha fazla güvenlik kontrolü eklemelerini öneriyorum. Aynı zamanda geliştiricilere de kod denetimlerini güçlendirmeleri ve benzer dikkatsizliklerden kaçınmaları hatırlatılıyor.