型混乱の脆弱性
型混乱の脆弱性 とは何ですか?
型混乱の脆弱性実際の確保型と矛盾する型を介してオブジェクトへアクセスしてしまうメモリ安全性のバグで、任意読み書きやコード実行に直結することが多い。
型混乱(Type Confusion)脆弱性は、宣言された型と実体の型が異なるポインタや参照を通じてメモリを読み書きしてしまうことで発生します。典型的な原因として、誤った下位キャスト、ポリモーフィズムの取り扱いミス、攻撃者が形状を変えられる前提で行われた JIT のスペキュレーション最適化などがあります。ランタイムが構造体を誤った型として扱うと、メソッド、vtable、長さフィールド、インラインデータの解釈がずれ、攻撃者は制御された任意の読み書きプリミティブを得て、しばしばコード実行に到達します。Chrome の V8、Safari の JSC などの JavaScript エンジンやブラウザのレンダラーが頻繁な標的で、Pwn2Own でもよく登場します。対策には、強い型システム、ランタイムチェック、サンドボックス化、メモリ安全な言語の採用があります。
● 例
- 01
CVE-2021-30551:V8 の型混乱を 0-day として Chrome に悪用。
- 02
本来 dynamic_cast が必要な箇所で static_cast を使い、無関係なオブジェクトへ書き込んでしまう C++ コード。
● よくある質問
型混乱の脆弱性 とは何ですか?
実際の確保型と矛盾する型を介してオブジェクトへアクセスしてしまうメモリ安全性のバグで、任意読み書きやコード実行に直結することが多い。 サイバーセキュリティの アプリケーションセキュリティ カテゴリに属します。
型混乱の脆弱性 とはどういう意味ですか?
実際の確保型と矛盾する型を介してオブジェクトへアクセスしてしまうメモリ安全性のバグで、任意読み書きやコード実行に直結することが多い。
型混乱の脆弱性 はどのように機能しますか?
型混乱(Type Confusion)脆弱性は、宣言された型と実体の型が異なるポインタや参照を通じてメモリを読み書きしてしまうことで発生します。典型的な原因として、誤った下位キャスト、ポリモーフィズムの取り扱いミス、攻撃者が形状を変えられる前提で行われた JIT のスペキュレーション最適化などがあります。ランタイムが構造体を誤った型として扱うと、メソッド、vtable、長さフィールド、インラインデータの解釈がずれ、攻撃者は制御された任意の読み書きプリミティブを得て、しばしばコード実行に到達します。Chrome の V8、Safari の JSC などの JavaScript エンジンやブラウザのレンダラーが頻繁な標的で、Pwn2Own でもよく登場します。対策には、強い型システム、ランタイムチェック、サンドボックス化、メモリ安全な言語の採用があります。
型混乱の脆弱性 からどのように防御しますか?
型混乱の脆弱性 に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。
型混乱の脆弱性 の別名は何ですか?
一般的な別名: 不正キャスト, 型不一致バグ。
● 関連用語
- vulnerabilities№ 1193
解放後使用(Use-After-Free)
free 済みのメモリをプログラムが使い続けるメモリ安全性のバグ。攻撃者にオブジェクト状態の操作と制御フロー奪取を許すことが多い。
- vulnerabilities№ 667
メモリ破壊
プログラムが意図したメモリ境界の外に書き込み、型安全性・制御フロー・データ整合性を損なうタイプの脆弱性を総称する用語。
- appsec№ 564
JIT スプレー
JIT コンパイラを悪用し、合法に生成された実行可能メモリページの中に攻撃者が選んだ実行可能バイト列を埋め込むエクスプロイト技法。
- appsec№ 129
ブラウザサンドボックス
OS レベルの分離層で、ブラウザのレンダラーやヘルパープロセスを閉じ込め、侵害された Web コードがファイルシステムや他アプリへアクセスできないようにする。
- appsec№ 1075
投機的実行サイドチャネル
本来実行されるべきでない経路で命令を投機的に実行した結果、CPU がキャッシュや予測器を介してデータを漏らしてしまうマイクロアーキテクチャ脆弱性の総称。
- vulnerabilities№ 399
エクスプロイト
脆弱性を悪用して、コード実行・権限昇格・情報漏えいなど意図しない動作を引き起こすコード、データ、または手法。