BitsLab 旗下 TonBit 再次發現 TON 虛擬機關鍵漏洞並獲 TON 官方致謝

robot
摘要生成中

作者:TonBit

引言:

BitsLab 旗下 TonBit 再次發現 TON 虛擬機關鍵漏洞並獲 TON 官方致謝:INMSGPARAM 指令在處理消息參數時未做空指針校驗,可能導致 TON 虛擬機崩潰。

TON 官方漏洞修復以及致謝 TonBit 詳情連結:

近日,BitsLab 旗下 TonBit 在最新 TVM 源碼(master 分支 / TON v2025.04)中發現了一處嚴重安全隱患——INMSGPARAM 指令在處理消息參數時未做空指針校驗,可能導致 TON 虛擬機崩潰。此次漏洞同樣深藏於 TVM 的深層調用流程中,攻擊者可通過構造特殊消息參數令 VM 在執行時觸發 null pointer dereference,從而造成執行中斷,嚴重影響合約執行的可用性與穩定性。以下內容保留了技術細節,供開發者深入研判與防範。

我們在 TVM11 上線之前就發現了此漏洞,並立即向 Ton Core 報告,從而避免了該漏洞對任何鏈上資產造成安全風險。Ton Core 認真分析了我們的報告,在正式上線前修復了該漏洞,並向我們發放了賞金與鳴謝。我們由衷感謝 Ton Core 的專業精神和守約態度。

受影響的代碼(位於 crypto/vm/tonops.cpp)如下:

根本原因:

這一行代碼

Ref t = get_param(st, inmsgparams_idx).as_tuple();

未對變量 t 是否爲 nullptr進行檢查。若將 c7 寄存器的槽 0 配置爲一個第 17 個元素不是 Tuple類型的 tuple,as_tuple() 將返回空指針。當該空指針 t 被傳入 tuple_index 時,會觸發空指針解引用,導致虛擬機崩潰。該嚴重錯誤可在全局版本 11 (Global Version 11)中穩定復現。

POC 代碼:

爲了便於本地測試(因爲 global_version 通常由鏈配置),我們在 run_vm_code 函數中修改了虛擬機的初始化,將 global_version 強制設爲 11:

將 PoC代碼復制到 crypto/test/vm.cpp 文件中。

按照上述方式修改 run_vm_code,將 global_version 設置爲 11。

編譯並運行 test-vm 可執行文件。

崩潰:

虛擬機會因空指針解引用而崩潰:

總結來看,BitsLab 旗下的 TonBit 始終秉持“深耕安全、責任披露”的原則,持續在 TON 虛擬機核心代碼中挖掘並修復關鍵漏洞。從 RUNVM 指令的非原子遷移隱患,到此次 INMSGPARAM 指令的空指針解引用問題,TonBit 都以專業的技術實力和高效的響應速度,第一時間向 Ton Core 提交報告並協助修復,不僅有效保障了鏈上資產的安全,也推動了 TVM 的穩定性與可靠性提升。未來,TonBit 將繼續與 Ton Core 及社區緊密合作,共同構築更爲堅實的 Web3 安全防線。

關於 TonBit

TonBit 作爲 BitsLab 的核心子品牌,是 TON 生態系統內的安全專家和早期建設者。作爲 TON 區塊鏈的主要安全保障提供商,TonBit 專注於全面的安全審計,包括 Tact 和 FunC語言的審計,確保基於 TON 的項目具備完整性和彈性。迄今爲止,TonBit 已成功審計了包括 Catizen、Algebra、UTonic 等多個知名項目,並發現了多個關鍵漏洞,展現了我們在區塊鏈安全領域的卓越能力。此外,TonBit 還成功舉辦了 TON CTF 比賽,吸引了衆多參與者並收獲了廣泛關注,進一步鞏固了其在 TON 生態中的安全專家地位。未來,TonBit 將繼續爲區塊鏈安全保駕護航,推動技術和生態的持續發展。

查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 讚賞
  • 留言
  • 分享
留言
0/400
暫無留言
交易,隨時隨地
qrCode
掃碼下載 Gate APP
社群列表
繁體中文
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)