This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
V8エンジンのSentinel Value漏洩脆弱性:Chromeサンドボックスのバイパス分析
Chrome V8サンドボックスのバイパスを暴露: Sentinel Valueを利用して任意のコードを実行する
Sentinel値はアルゴリズムで終了条件として使用される特別な値であり、Chromeのソースコードに広く存在します。これまでの研究により、TheHoleオブジェクトを漏洩させることでChromeのサンドボックス内で任意のコードを実行できることが示されています。本稿では、修正されていない別のバイパス方法 - Uninitialized Oddballオブジェクトの漏洩について論じます。
この手法は、Project 0のメンバーが提出したIssue1352549に最初に登場し、現在でも最新のV8で使用可能です。類似のネイティブオブジェクトの漏洩問題は、CVE-2021-30551やCVE-2022-1486などの重要な脆弱性において以前にも何度も発生していることに注意が必要です。これは、この種の問題が一般的であり、V8エンジンを使用している複数のソフトウェアに影響を及ぼす可能性があることを示しています。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
V8の大部分のネイティブオブジェクトはv8/src/roots/roots.hファイルに定義されており、メモリ内で順番に配置されています。これらのJavaScriptに漏れてはいけないオブジェクトが漏れると、サンドボックスのエスケープが発生する可能性があります。この方法を検証するために、V8のネイティブ関数を変更することができます。例えば、%TheHole()関数を変更してUninitialized Oddballを返すことができます。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
この方法を利用することで、HardenType保護を回避し、相対的に任意のメモリの読み書きを実現できます。具体的な実装では、最適化されたJavaScriptコードが配列要素の型チェックをスキップし、オフセットを直接計算してメモリにアクセスします。この問題はx86およびx64アーキテクチャで若干異なりますが、いずれも悪用される可能性があります。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
この脆弱性は現在、V8エンジンを使用している一部のソフトウェア(、例えばSkype)では修正されておらず、潜在的なセキュリティリスクが存在します。ハッカーはこのPatchGapを利用して完全な脆弱性利用チェーンを実現する可能性があります。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
Uninitialized Oddballを除いて、V8には他にもSentinel valueが存在し、それらも同様のセキュリティ問題を引き起こす可能性があります。これは、Sentinel valueの漏洩によるセキュリティへの影響を再評価し、ファジングテストに関連変数を追加する必要があることを示唆しています。この種の問題が正式にセキュリティホールと見なされるかどうかにかかわらず、攻撃者が完全なエクスプロイトを実現するまでの時間を大幅に短縮する可能性があります。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value