📢 Gate廣場 #创作者活动第一期# 火熱開啓,助力 PUMP 公募上線!
Solana 爆火項目 Pump.Fun($PUMP)現已登入 Gate 平台開啓公開發售!
參與 Gate廣場創作者活動,釋放內容力量,贏取獎勵!
📅 活動時間:7月11日 18:00 - 7月15日 22:00(UTC+8)
🎁 活動總獎池:$500 USDT 等值代幣獎勵
✅ 活動一:創作廣場貼文,贏取優質內容獎勵
📅 活動時間:2025年7月12日 22:00 - 7月15日 22:00(UTC+8)
📌 參與方式:在 Gate 廣場發布與 PUMP 項目相關的原創貼文
內容不少於 100 字
必須帶上話題標籤: #创作者活动第一期# #PumpFun#
🏆 獎勵設置:
一等獎(1名):$100
二等獎(2名):$50
三等獎(10名):$10
📋 評選維度:Gate平台相關性、內容質量、互動量(點讚+評論)等綜合指標;參與認購的截圖的截圖、經驗分享優先;
✅ 活動二:發推同步傳播,贏傳播力獎勵
📌 參與方式:在 X(推特)上發布與 PUMP 項目相關內容
內容不少於 100 字
使用標籤: #PumpFun # Gate
發布後填寫登記表登記回鏈 👉 https://www.gate.com/questionnaire/6874
🏆 獎勵設置:傳播影響力前 10 名用戶,瓜分 $2
Move語言引用安全驗證中發現新整數溢出漏洞
Move語言引用安全機制中發現新的整數溢出漏洞
近期,在對Move語言進行深入研究時,我們發現了一個新的整數溢出漏洞。這個漏洞出現在引用安全驗證過程中,涉及到Move語言的一些核心機制。通過分析這個漏洞,我們可以更深入地理解Move語言的設計和實現。
Move語言的驗證過程
Move語言在執行字節碼之前會對代碼單元進行驗證,這個過程分爲4個步驟。本次發現的漏洞出現在reference_safety這一步驟中。
reference_safety模塊定義了用於驗證引用安全性的核心函數。它主要檢查是否存在懸空引用、可變引用訪問是否安全、全局存儲引用訪問是否安全等問題。
驗證過程的入口函數會調用analyze_function來分析每個函數。analyze_function會對函數中的每個基本塊進行驗證。基本塊是指除入口和出口外沒有分支指令的代碼序列。
Move語言中的引用安全
Move語言支持兩種引用類型:不可變引用(&)和可變引用(&mut)。不可變引用用於讀取數據,可變引用用於修改數據。這種設計有助於提高代碼的安全性和可讀性。
引用安全驗證模塊會掃描函數中每個基本塊的字節碼指令,判斷所有引用操作是否合法。驗證過程主要包括:
這個過程類似於V8 turbofan中的Sea of Nodes思想。
漏洞分析
漏洞出現在合並執行前後狀態的過程中。當函數參數長度加上局部變量長度大於256時,由於使用u8類型表示局部變量索引,會導致整數溢出。
雖然Move語言有校驗局部變量個數的過程,但這個校驗並不包括參數長度。開發人員似乎意識到需要檢查參數和局部變量的總和,但實際代碼中只檢查了局部變量的個數。
這個整數溢出可能導致拒絕服務攻擊(DoS)。攻擊者可以構造一個循環代碼塊,利用溢出改變塊的狀態。當再次執行基本塊時,如果指令需要訪問的索引在新的狀態中不存在,就會導致程序崩潰。
漏洞利用
我們構造了一個概念驗證(PoC)來演示這個漏洞:
結論
這個漏洞再次證明了沒有絕對安全的代碼。雖然Move語言在執行前進行了靜態校驗,但仍可能被整數溢出漏洞繞過。
對於Move語言的未來發展,我們建議:
作爲Move語言安全研究的先行者,我們將繼續深入研究Move的安全問題,爲其發展貢獻力量。