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

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

Published:
2025-07-09 17:05:53

作者:TONBit

引言:

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

TON 官方漏洞修復以及致謝 TonBit 詳情鏈接:

https://github.cOM/ton-blockchain/ton/releases/tag/v2025.06

近日,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 將繼續為區塊鏈安全保駕護航,推動技術和生態的持續發展。

|Square

下載BTCC APP,您的加密之旅從這啟程

立即行動 掃描 加入我們的 100M+ 用戶行列