## Sentinel valueのChrome V8における適用とそのセキュリティ影響Sentinel値はアルゴリズムにおける特別な値であり、ループや再帰アルゴリズムの終了条件によく使用されます。Chrome V8エンジンのソースコードでは、Sentinel値が広く使用されています。最近、セキュリティ研究者は特定のSentinel値オブジェクトを漏洩させることで、Chromeサンドボックス内で任意のコードを実行できることを発見しました。V8には、JavaScript環境に漏洩すべきではないさまざまなネイティブオブジェクトが存在します。以前に公開されたTheHoleオブジェクトに加えて、Uninitialized Oddballオブジェクトの漏洩も同様にセキュリティ問題を引き起こす可能性があります。この方法は、Issue1352549で最初に登場し、現在も最新のV8で利用可能であり、Googleはまだ修正していません。この方法は強い汎用性を持っています:1. Issue1216437(CVE-2021-30551)では、内部の初期化されていないオッドボールの漏洩に関するPOCが初めて示されました。2. UninitializedOddballオブジェクトは、Issue1314616(CVE-2022-1486)でも直接リークされています。3. Issue1352549(にはCVE)を利用した方法が完全に示されています。これらのケースは、Sentinel valueの漏洩が複数のソフトウェアバージョンに影響を与える可能性があることを示しています。V8のほとんどのネイティブオブジェクトはv8/src/roots/roots.hファイルで定義されており、メモリ内で隣接して配置されています。これらのオブジェクトがJavaScript環境に漏れると、サンドボックスの逸脱を実現する可能性があります。! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-263e5651876fc00c4e0af0cfcd350210)この方法を検証するために、V8のネイティブ関数%TheHole()を変更することで、初期化されていないOddballオブジェクトを漏洩させることができます。! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-26c26345e3ec4effeea2e3e6b7cd8772)この方法を利用することで、V8のHardenType保護を回避できます。重要なのは、最適化されたJavaScriptのread関数がオブジェクトのプロパティを十分にチェックしていないため、タイプ混乱を利用して任意の読み書きが実現できることです。! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-4c091ca0e153e953eb168e99762ff7cc)! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-1e3fda77c04bceafdcc40413824a5d37)! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-ed89289bebf59d4b27f5bffb5511a8c5)! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-0e52075003a8ee2ca492a5fc9f35c36b)! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-230537e420d579aabd89bdd168b20878)最適化された関数が配列要素を返す際の修正提案は、配列のmapをチェックして、オフセットを直接計算して数値を返すのを避けることです。! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-506159c94c9e0988552cbcbd13d971e1)注目すべきは、Skypeなどのソフトウェアにこのような脆弱性がまだ存在する可能性があるということです。x86プラットフォームでは、アドレス圧縮が欠如しているため、任意の読み書き範囲が広くなります。攻撃者はこの脆弱性を利用して完全なエクスプロイトチェーンを実現する可能性があります。Uninitialized Oddballを除いて、V8には他にもさまざまなSentinel valueが存在し、類似のリスクがある可能性があります。他のSentinel valueの漏洩によるセキュリティ問題についてさらに研究し、ファジングテストに関連シナリオを追加することを検討することをお勧めします。この種の問題が正式にセキュリティ脆弱性として分類されるかどうかにかかわらず、攻撃者が完全な利用を実現する周期を大幅に短縮する可能性があるため、十分に注意を払うべきです。! [独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value](https://img-cdn.gateio.im/social/moments-e9e2000fd501b69ee3ee643a459a26dd)
Chrome V8エンジンのSentinel値の漏洩がサンドボックスの脱出リスクを引き起こす
Sentinel valueのChrome V8における適用とそのセキュリティ影響
Sentinel値はアルゴリズムにおける特別な値であり、ループや再帰アルゴリズムの終了条件によく使用されます。Chrome V8エンジンのソースコードでは、Sentinel値が広く使用されています。最近、セキュリティ研究者は特定のSentinel値オブジェクトを漏洩させることで、Chromeサンドボックス内で任意のコードを実行できることを発見しました。
V8には、JavaScript環境に漏洩すべきではないさまざまなネイティブオブジェクトが存在します。以前に公開されたTheHoleオブジェクトに加えて、Uninitialized Oddballオブジェクトの漏洩も同様にセキュリティ問題を引き起こす可能性があります。この方法は、Issue1352549で最初に登場し、現在も最新のV8で利用可能であり、Googleはまだ修正していません。
この方法は強い汎用性を持っています:
Issue1216437(CVE-2021-30551)では、内部の初期化されていないオッドボールの漏洩に関するPOCが初めて示されました。
UninitializedOddballオブジェクトは、Issue1314616(CVE-2022-1486)でも直接リークされています。
Issue1352549(にはCVE)を利用した方法が完全に示されています。
これらのケースは、Sentinel valueの漏洩が複数のソフトウェアバージョンに影響を与える可能性があることを示しています。
V8のほとんどのネイティブオブジェクトはv8/src/roots/roots.hファイルで定義されており、メモリ内で隣接して配置されています。これらのオブジェクトがJavaScript環境に漏れると、サンドボックスの逸脱を実現する可能性があります。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
この方法を検証するために、V8のネイティブ関数%TheHole()を変更することで、初期化されていないOddballオブジェクトを漏洩させることができます。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
この方法を利用することで、V8のHardenType保護を回避できます。重要なのは、最適化されたJavaScriptのread関数がオブジェクトのプロパティを十分にチェックしていないため、タイプ混乱を利用して任意の読み書きが実現できることです。
! 独占公開バイパス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
最適化された関数が配列要素を返す際の修正提案は、配列のmapをチェックして、オフセットを直接計算して数値を返すのを避けることです。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value
注目すべきは、Skypeなどのソフトウェアにこのような脆弱性がまだ存在する可能性があるということです。x86プラットフォームでは、アドレス圧縮が欠如しているため、任意の読み書き範囲が広くなります。攻撃者はこの脆弱性を利用して完全なエクスプロイトチェーンを実現する可能性があります。
Uninitialized Oddballを除いて、V8には他にもさまざまなSentinel valueが存在し、類似のリスクがある可能性があります。他のSentinel valueの漏洩によるセキュリティ問題についてさらに研究し、ファジングテストに関連シナリオを追加することを検討することをお勧めします。
この種の問題が正式にセキュリティ脆弱性として分類されるかどうかにかかわらず、攻撃者が完全な利用を実現する周期を大幅に短縮する可能性があるため、十分に注意を払うべきです。
! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value