Chrome V8エンジンのSentinel Value漏洩の調査とセキュリティリスク分析

Chrome V8エンジンにおけるSentinel Value漏洩によるセキュリティリスクの探求

イントロダクション

センチネル値はアルゴリズムにおける特別な値であり、通常はループまたは再帰アルゴリズムの終了条件として使用されます。Chromeのソースコードではこの特別な値が広く使用されています。最近、研究者たちはTheHoleオブジェクトの漏洩を通じてCVE-2021-38003およびCVE-2022-1364のサンドボックス内での任意コード実行を実現しました。Googleチームはその後、これら2つの脆弱性を迅速に修正しました。

しかし、TheHoleオブジェクトを除いて、V8にはJavaScriptに漏洩すべきではない他のネイティブオブジェクトも存在します。本稿では、Uninitialized Oddballオブジェクトに焦点を当て、V8のHardenProtectメカニズムを回避する方法について説明します。注意すべきは、この回避方法は現在の最新版V8にも適用可能であり、まだ修正されていないということです。

V8のセンチネル値

V8のほとんどのネイティブオブジェクトはv8/src/roots/roots.hファイルで定義されており、これらのオブジェクトはメモリ内で順次隣接して配置されています。これらのネイティブオブジェクトがJavaScriptに漏洩すべきでない場合、それが漏洩するとサンドボックス内で任意のコードが実行される可能性があります。

これを検証するために、V8のネイティブ関数を変更して、Uninitialized OddballをJavaScriptに漏洩させることができます。具体的には、%TheHole()関数におけるisolateに対するオフセットを変更して、Uninitialized Oddballを返すようにします。

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

HardenType保護のバイパス

Uninitialized Oddballオブジェクトを利用することで、相対的な任意の読み書きが実現できます。最適化されたJavaScriptコードでは、read関数はobj.propをキーとしたValueをチェックせず、JavaScriptのセマンティクスに従ってオフセットを直接計算し、配列の値を取得します。これにより、計算時に型の混乱が発生し、任意の読み取りが実現されます。

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

任意の書き込み操作については、Issue1352549に記載されている構造方法を参照して分析できます。推奨される修正案は、最適化された関数が配列要素を返す際に、配列のマッピングをチェックし、オフセットを直接計算して配列の値を返すのを避けることです。

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

PatchGapの警告

Issue1352549を分析したところ、一部のソフトウェアにPatchGapの問題が存在する可能性があることがわかりました。注目すべきは、現時点でSkypeはまだこの脆弱性を修正していないことです。x86環境では、任意の読み書きの実装が異なる場合があります。なぜなら、アドレス圧縮がないため、プロセス全体に対して直接操作できるからです。

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

今回のPatchGapの問題は、Issue1352549だけでなく、新しい回避策の公開により、Issue1314616やIssue1216437などの脆弱性を利用する難易度が大幅に低下しました。ハッカーはほとんど研究コストをかけずに、以前のuninitialized_oddball脆弱性の完全な利用を達成することができます。

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

まとめ

この記事では、Sentinel value内のuninitialized_Oddballを漏洩させることで任意の読み取り原子操作を実現する方法について簡単に説明します。V8には他にも多くのSentinel valueが存在し、同様のセキュリティ問題を引き起こす可能性があります。これから私たちが得られる示唆は次の通りです:

  1. 他のuninitialized_Oddballリークは、V8でリモートコード実行を簡単に実装できますか?

  2. この種の問題が正式なセキュリティ問題と見なされるべきかどうかは、依然として議論の余地があります。

  3. ファザーに %TheHole/uninitialized_Oddball などの Sentinel 値を変数として追加して、他のエクスプロイト プリミティブをマイニングすることを検討してください。

この種の問題が正式にセキュリティ問題と見なされるかどうかにかかわらず、それらはハッカーが完全な利用を実現するサイクルを大幅に短縮する。

! 独占公開バイパスChrome v8 HardenProtect by Leaking Sentinel Value

SENC7.34%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 6
  • 共有
コメント
0/400
FUD_Vaccinatedvip
· 07-26 03:20
また黒いGoogle ここの穴は頻繁すぎる8
原文表示返信0
MetaverseLandlordvip
· 07-24 11:22
くそ、他の人のブラウザの脆弱性はこんなに高度なんだ
原文表示返信0
SerNgmivip
· 07-23 05:34
真v8が頭を痛くさせる...
原文表示返信0
GateUser-a606bf0cvip
· 07-23 05:34
ん? またChromeが何かやらかしたの?
原文表示返信0
StablecoinAnxietyvip
· 07-23 05:15
ブラウザのセキュリティホールは刺激的です!
原文表示返信0
PonziDetectorvip
· 07-23 05:11
えっ、V8のこの脆弱性はかなり大きいですね。
原文表示返信0
  • ピン
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)