📢 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步驟中。reference_safety模塊負責驗證引用操作的合法性,包括檢查是否存在懸空引用、可變引用訪問是否安全等。
驗證過程是以函數爲單位進行的。對於每個函數,會先識別出其中的基本塊。基本塊是一段連續的代碼序列,只有入口和出口處可能存在分支。然後對每個基本塊進行分析,生成執行前後的狀態,並將狀態傳播到後續塊。
狀態包含了locals和borrow graph兩部分信息。locals記錄了局部變量的信息,borrow graph表示變量間的引用關係。分析過程會不斷更新這些狀態信息。
漏洞出現在狀態合並的過程中。當函數參數和局部變量總數超過256個時,由於使用u8類型表示索引,會發生整數溢出。這導致合並後的狀態信息出現錯誤,進而可能引發拒絕服務攻擊。
雖然Move語言有檢查局部變量數量的機制,但是並未考慮參數數量。這一疏忽導致了漏洞的產生。
爲了觸發這個漏洞,攻擊者可以構造一個循環代碼塊,利用溢出改變塊的狀態。當再次執行時,由於狀態信息錯誤,訪問不存在的變量會導致程序崩潰。
這個漏洞再次說明了即使是經過精心設計的語言,也可能存在安全隱患。它提醒我們代碼審計的重要性,以及在語言設計中需要更全面的安全考慮。對於Move語言來說,在運行時增加更多的檢查可能是一個改進方向。