
BitsLab傘下のTonBitが再びTON仮想マシンの脆弱性を発見:RUNVM命令によりスマートコントラクト実行環境の汚染が生じる可能性
TechFlow厳選深潮セレクト

BitsLab傘下のTonBitが再びTON仮想マシンの脆弱性を発見:RUNVM命令によりスマートコントラクト実行環境の汚染が生じる可能性
攻撃者は、サブ仮想マシンがgasを使い果たす瞬間に親仮想マシンのライブラリを汚染し、その後の呼び出しを失敗させることで、ライブラリの整合性に依存するコントラクトに異常な動作を引き起こす可能性がある。
著者:BitsLab
BitsLab傘下のTonBitは、TON仮想マシン(TVM)のコアコードにおいて再び「見えない爆弾」——RUNVM命令における非原子的状態遷移の脆弱性——を発見しました。攻撃者はサブ仮想マシンのgasが尽きる瞬間を悪用し、親仮想マシンのライブラリを汚染して後続の呼び出しを失敗させ、結果としてライブラリの整合性に依存するコントラクトに異常な動作を引き起こすことが可能です。
以下では技術的詳細を原文のまま保持しつつ、開発者向けに脆弱性の発見および検証プロセスを完全に公開し、コミュニティがこの問題を深く理解し、同様のリスクに対する防御意識を高める支援とします。

以下、脆弱性の詳細です:
TVM内のRUNVM命令は呼び出し元の状態を汚染し、ライブラリが利用不能になる可能性があります。「RUNVM」命令のコード内で新たな脆弱性が発見されました。この脆弱性により、呼び出し元の状態が汚染される可能性があります。関連するコード断片を以下に示します:

上記コードはサブ仮想マシンの起動を担当します。現在のVmStateから'log'および'libraries'を新しいVmStateオブジェクト'new_state'へ移動し、その後'new_state'で現在のVmStateを置き換える機能を持ちます。
問題は、この操作が真にアトミックではない点にあります。'*this = std::move(new_state);'の実行前に、仮想マシンがgas不足により中断される可能性があり、その場合'new_state'が現在の状態を正常に置き換えることができません。この時点で'libraries'がすでに移動済みであるため、サブ仮想マシンのライブラリはクリア(移動)された状態になります。
RUNVM命令はisolate_gasパラメータにより、サブ仮想マシンと親仮想マシン間のgas消費を隔離しているため、以下のシナリオが発生します:
サブ仮想マシンがgas不足例外を引き起こしても、親仮想マシンは引き続き実行可能な十分なgasを保持しています。しかし、失敗した状態遷移の過程でサブ仮想マシンが既に'libraries'を移動/クリアしているため、以降'libraries'に依存するすべての操作が失敗します。この状況により、ライブラリの整合性を前提とする特定のコントラクトが予期しない挙動を示すことになります。
脆弱性の検証(PoC検証)
以下のテストケースで本脆弱性を成功裏に再現しました:



重要なテスト変更の説明:
ローカルでライブラリ状態を容易に観察できるようにするため、NOP命令を変更し、強制的にライブラリエントリを登録するようにしました:

再現手順:
1)このテストケースをcrypto/test/vm.cppファイルに追加
2)test-vm実行可能プログラムを実行
3)XLOAD命令の実行時に空のライブラリにより発生する例外を確認
期待される動作:
NOP命令実行後:ライブラリに1つのエントリが含まれている
RUNVMX命令実行後:親仮想マシンが継続して実行されているにもかかわらず、ライブラリは空の状態になっている
XLOAD命令の実行に失敗し、例外が発生
これは、非アトミックな状態遷移とgas隔離機構が相互作用することで、実行コンテキストの整合性に反する不整合状態が生じることを十分に証明しています。
今回の発見は、BitsLab傘下TonBitがTONエコシステムのセキュリティ研究において持つ深い専門性を再確認させるものです。我々は直ちに技術的詳細および緩和策をTON財団に報告し、修正作業を支援しました。すべての開発者に対し、公式パッチ公開後に速やかに依存ライブラリを更新することを推奨します。また、自社開発のコントラクトにはより厳格なライブラリ整合性検証およびgas管理ロジックを導入し、同様の問題が悪用されないよう防止すべきです。BitsLabは今後も「責任ある開示」の原則を貫き、コミュニティとともにWeb3のセキュリティ基盤を強固にしていきます。
BitsLabについて
BitsLabは、新興Web3エコシステムの保護と構築に取り組むセキュリティ組織であり、業界およびユーザーから広く尊敬されるWeb3セキュリティ機関となることをビジョンとしています。傘下にはMoveBit、ScaleBit、TonBitの3つの子ブランドを有しています。
BitsLabは新興エコシステムのインフラ開発およびセキュリティ監査に注力しており、Sui、Aptos、TON、Linea、BNB Chain、Soneium、Starknet、Movement、Monad、Internet Computer、Solanaなどのエコシステムを対象としています。また、Circom、Halo2、Move、Cairo、Tact、FunC、Vyper、Solidityなど、複数のプログラミング言語の監査においても高い専門性を発揮しています。
BitsLabチームには複数のトップレベルの脆弱性研究専門家が集まっており、国際的なCTF大会で多数の賞を受賞した経験を持ち、TON、Aptos、Sui、Nervos、OKX、Cosmosなどの著名プロジェクトにおいてキーバルな脆弱性を発見してきました。
TonBitについて
TonBitはBitsLabのコア子ブランドとして、TONエコシステム内におけるセキュリティ専門機関および初期構築者の1つです。TONブロックチェーンの主要なセキュリティ保障プロバイダーとして、TactおよびFunC言語の監査を含む包括的なセキュリティ監査に注力し、TONベースのプロジェクトの完全性と堅牢性を確保しています。これまでにCatizen、Algebra、UTonicなど多数の著名プロジェクトの監査を成功させ、複数のキーバルな脆弱性を発見し、ブロックチェーンセキュリティ分野における卓越した能力を示してきました。また、TonBitは成功裏にTON CTF大会を開催し、多くの参加者を集め、広範な注目を得て、TONエコシステム内でのセキュリティ専門機関としての地位をさらに確固たるものにしました。今後もTonBitはブロックチェーンセキュリティの守護者として、技術およびエコシステムの持続的な発展を推進していきます。
TechFlow公式コミュニティへようこそ
Telegram購読グループ:https://t.me/TechFlowDaily
Twitter公式アカウント:https://x.com/TechFlowPost
Twitter英語アカウント:https://x.com/BlockFlow_News














