📢 Gate廣場獨家活動: #PUBLIC创作大赛# 正式開啓!
參與 Gate Launchpool 第 297 期 — PublicAI (PUBLIC),並在 Gate廣場發布你的原創內容,即有機會瓜分 4,000 枚 $PUBLIC 獎勵池!
🎨 活動時間
2025年8月18日 10:00 – 2025年8月22日 16:00 (UTC)
📌 參與方式
在 Gate廣場發布與 PublicAI (PUBLIC) 或當前 Launchpool 活動相關的原創內容
內容需不少於 100 字(可爲分析、教程、創意圖文、測評等)
添加話題: #PUBLIC创作大赛#
帖子需附帶 Launchpool 參與截圖(如質押記錄、領取頁面等)
🏆 獎勵設置(總計 4,000 枚 $PUBLIC)
🥇 一等獎(1名):1,500 $PUBLIC
🥈 二等獎(3名):每人 500 $PUBLIC
🥉 三等獎(5名):每人 200 $PUBLIC
📋 評選標準
內容質量(相關性、清晰度、創意性)
互動熱度(點讚、評論)
含有 Launchpool 參與截圖的帖子將優先考慮
📄 注意事項
所有內容須爲原創,嚴禁抄襲或虛假互動
獲獎用戶需完成 Gate廣場實名認證
Gate 保留本次活動的最終解釋權
Move語言引用安全模塊發現整數溢出漏洞 構造攻擊或致系統崩潰
Move語言引用安全模塊中發現整數溢出漏洞
近期,一項深入研究發現了Move語言中的一個新的整數溢出漏洞。這個漏洞存在於引用安全驗證過程中,涉及到Move語言的一些核心概念和機制。
Move語言在執行字節碼前會進行代碼驗證,分爲四個步驟。這個新發現的漏洞出現在reference_safety步驟中。該步驟負責驗證引用的安全性,包括檢查是否存在懸空引用、可變引用的訪問安全性以及全局存儲引用的訪問安全性等。
引用安全驗證的核心是分析每個函數中的基本塊。基本塊是一段除入口和出口外沒有分支指令的代碼序列。Move語言通過遍歷字節碼,查找所有分支指令和循環指令來識別基本塊。
在驗證過程中,系統會維護一個AbstractState結構體,包含borrow graph和locals信息,用於確保函數中引用的安全性。驗證流程會執行基本塊代碼,生成執行後的狀態,然後將執行前後的狀態合並,更新塊狀態並傳播到後續塊。
漏洞出現在join_函數中。當函數參數長度加上局部變量長度超過256時,由於使用u8類型表示local變量,會導致整數溢出。雖然Move語言有檢查locals個數的機制,但只檢查了局部變量數量,沒有包括參數長度。
這個溢出漏洞可能導致拒絕服務攻擊。攻擊者可以構造一個循環代碼塊,利用溢出改變塊的狀態。當再次執行基本塊時,如果指令需要訪問的索引在新的locals map中不存在,就會導致系統崩潰。
爲了演示這個漏洞,研究人員提供了一個概念驗證(PoC)。通過設置特定的參數和局部變量數量,可以觸發整數溢出,導致系統panic。
這個漏洞揭示了即使是經過嚴格設計的語言也可能存在安全隱患。它強調了代碼審計的重要性,以及在語言設計中需要考慮更多的邊界情況。對於Move語言來說,建議在運行時增加更多的安全檢查,而不僅僅依賴於驗證階段的安全機制。
隨着Move語言在Web3領域的廣泛應用,深入研究和發現這類潛在漏洞對於提升整個生態系統的安全性至關重要。開發者和安全研究人員需要保持警惕,持續關注和改進Move語言的安全性能。