Move言語の整数オーバーフロー脆弱性の解明:バイトコード検証における危険性

robot
概要作成中

Move言語における整数オーバーフローの脆弱性の解析

Move言語の詳細な研究を行った結果、新しい整数オーバーフローの脆弱性が発見されました。この脆弱性は、Move言語のバイトコード検証プロセスの参照安全性チェック段階に現れます。本記事では、この脆弱性のトリガー過程を詳細に分析し、Move言語のいくつかのコア概念について探討します。

Move言語バイトコード検証プロセス

Move言語はバイトコードを実行する前にコード検証を行い、4つのステップに分かれています。今回の脆弱性はreference_safetyステップで発生しました。このステップは主に参照の安全性を検証する役割を担っており、空の参照が存在しないか、可変参照のアクセスが安全かどうかを確認します。

検証プロセスは、まずコード内の基本ブロックを識別します。基本ブロックとは、入口と出口を除いて分岐命令がないコードのシーケンスを指します。Moveはバイトコードを走査し、すべての分岐命令とループ命令を検索して基本ブロックを特定します。

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

Moveにおける参照の安全性

Moveは2種類の参照タイプをサポートしています: 不変参照(&)と可変参照(&mut)。参照安全モジュールは、関数内の各基本ブロックのバイトコード命令をスキャンし、すべての参照操作が合法であることを検証します。

検証プロセスは、状態を表すためにAbstractState構造体を使用し、借用グラフとローカルを含みます。検証時には、実行前後の状態を比較し、ブロック状態をマージして更新します。

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

脆弱性分析

バグはjoin_関数に存在します。この関数は、実行前後の状態をマージし、localsマップとborrowグラフを更新するために使用されます。問題は、localsイテレーターがu8型を返し、パラメータの長さとローカル変数の長さの合計が256を超えるとオーバーフローが発生することです。

Moveにはlocalsの数を検証するプロセスがありますが、ローカル変数の数のみを検証し、パラメータの長さは含まれていません。

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別のリスクの高い脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

エクスプロイト

このオーバーフローを利用すると、基本ブロックの状態を変更できます。ループコード内では、基本ブロックが実行されるたびに状態が変化します。再度実行する際に、命令がアクセスするインデックスが新しいローカルマップに存在しない場合、panicが発生し、DoS攻撃を実現します。

! Numen Cyberは、移動言語に別のリスクの高い脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

PoCデモ

特定のパラメータとローカル変数の数を設定することで、整数オーバーフローを引き起こし、プログラムがクラッシュする再現可能なPoCコードを提供しました。

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別のリスクの高い脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

まとめ

この脆弱性は再びコード監査の重要性を証明しました。Move言語に対しては、検証段階のチェックだけに依存せず、実行時により多くのセキュリティチェックを追加することをお勧めします。私たちはMove言語のセキュリティ問題について引き続き深く研究し、その発展に貢献していきます。

! Numen Cyberは、移動言語に別の高リスクの脆弱性を独占的に発見しました

原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 7
  • 共有
コメント
0/400
RektButStillHerevip
· 07-11 04:35
また溢れちゃったね、ちぇっちぇっ
原文表示返信0
consensus_failurevip
· 07-11 01:01
なんとこのバグがまだあるとは
原文表示返信0
SchrodingersPapervip
· 07-09 07:32
moveはまた送ったの? やっちゃったやっちゃった
原文表示返信0
DevChivevip
· 07-08 16:28
菜鳥が人をカモにされる
原文表示返信0
ProposalManiacvip
· 07-08 06:09
パラメータの検証は文書に書くだけではいけないと早くから言っていました。
原文表示返信0
DegenWhisperervip
· 07-08 06:07
オーバーフローはちょっと怖いですね
原文表示返信0
ApeWithAPlanvip
· 07-08 05:48
move寧はまた問題を起こした
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)