Chrome v8の脆弱性を利用する新しい方法: 初期化されていないOddballの実装によるサンドボックスの脱出

Chrome v8 HardenProtect をバイパスして Sentinel 値をリークする

イントロダクション

Sentinel valueはアルゴリズムの中で特別な値であり、通常はループや再帰アルゴリズムの終了条件として存在します。Chromeのソースコードには多くのSentinel valueがあります。以前の研究では、TheHoleオブジェクトの漏洩を通じてサンドボックス内で任意のコードを実行する方法が紹介されました。Googleチームはその後、関連する修正を迅速に更新しました。

TheHoleオブジェクトを除いて、v8にはJSに漏洩すべきでない多くの他のネイティブオブジェクトがあります。本記事では、現在の最新のV8でまだ使用可能なUninitialized Oddballオブジェクトについて説明します。この方法は、いくつかの脆弱性で見られたように、一定の汎用性を持っていることに注意が必要です。

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

V8のセンチネル値

v8の大部分のネイティブオブジェクトはv8/src/roots/roots.hファイルに定義されており、これらのオブジェクトはメモリ内で順に隣接して配置されています。一度、漏らしてはいけないネイティブオブジェクトがJavascriptに漏れ出すと、サンドボックス内で任意のコードを実行することが可能になります。

この方法を検証するために、v8のネイティブ関数を変更し、Uninitialized OddballをJavaScriptに漏らすことができます。具体的には、%TheHole()関数内のisolateに対するオフセットを変更できます。

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

HardenTypeのバイパス

Uninitialized Oddballを利用することで、相対的に任意の読み書きを実現できます。重要なのは、最適化されたJavaScriptのread関数では、objのprop属性が正しいかどうかだけをチェックしており、obj.propをキーとするValueをチェックしていないことです。そのため、JavaScriptの意味に従ってオフセットを直接計算し、配列の値を求めることになります。これが原因で、計算時に型の混乱が生じ、任意の読み取りが実現されます。

Uninitialized Oddballはv8メモリ内で優先的に配置され、より原始的であるため、TheHoleオブジェクトよりも偽造しやすく、TheHoleの修正回避を緩和するための優先手段です。

最適化された関数が配列要素を返すときに、配列のmapをチェックして、オフセットを直接計算して数値を返さないようにすることを提案します。

! 独占公開バイパス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

PatchGapリスク警告

歴史的な脆弱性に注目するだけでなく、ベンダーが基盤コンポーネントに静かに修正した脆弱性にも注意する必要があります。現在、Skypeはこの脆弱性を修正していません。x86とx64では利用方法がわずかに異なりますが、どちらも任意の読み書きを実現できます。

今回のPatchGapはIssue1352549だけでなく、新しい手法の公開により、類似の脆弱性の悪用が大幅に容易になりました。ハッカーはほとんど研究を行うことなく、過去のUninitialized Oddball脆弱性を完全に悪用することができます。

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

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

まとめ

v8には他にも多くのSentinel値があり、同様の問題が存在する可能性があります。これは私たちにいくつかの示唆を与えます:

  1. その他の未初期化のOddballの漏洩もv8 RCEを実現しやすいか。

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

  3. fuzzテスト時には、さまざまなSentinel値を変数として追加することを検討すべきかもしれません。

いずれにせよ、この種の問題はハッカーの完全な利用サイクルを大幅に短縮します。我々はこれに警戒を怠るべきではありません。

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

SENC0.43%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 6
  • 共有
コメント
0/400
MetaMaskVictimvip
· 20時間前
またv8の罠に苦しめられた
原文表示返信0
gas_fee_therapistvip
· 08-05 17:35
v8またやらかしたな 安全性がどんどんポンプになってきた
原文表示返信0
GreenCandleCollectorvip
· 08-05 17:34
この脆弱性はかなりハードコアですね
原文表示返信0
LightningPacketLossvip
· 08-05 17:32
このバグはまた修正されました。私たちのサーバールームは早急に修理しなければなりません。
原文表示返信0
ChainMelonWatchervip
· 08-05 17:32
ああ、これ...穴を掘る兄さんがまた新しい仕事を始めた。
原文表示返信0
ImpermanentLossFanvip
· 08-05 17:31
わお、v8にはこんな脆弱性があるとは!
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)