Chrome V8エンジンの新しい脆弱性: 未初期化のオッドボールによるサンドボックスの回避

robot
概要作成中

Chrome V8 HardenProtect をバイパスして Sentinel Value をリークした裏話

イントロダクション

センティネル値はアルゴリズムにおける特別な値で、ループや再帰アルゴリズムで終了条件としてよく使われます。Chromeのソースコードではこのような値が広く使用されています。最近、セキュリティ研究者たちはTheHoleオブジェクトの漏洩を通じてChromeサンドボックス内で任意のコード実行が可能であることを発見しました。Googleチームはその後、これらの野生での脆弱性を迅速に修正しました。

しかし、V8にはJavaScriptに漏洩すべきではない他のネイティブオブジェクトも存在します。本稿では、新しいオブジェクトであるUninitialized Oddballについて論じます。この回避策は、Project0のメンバーが提出したIssueに最初に登場し、現在も最新のV8バージョンで使用可能です。

注意すべきは、この方法が強い汎用性を持っていることです。

  1. CVE-2021-30551では、最初のPOCは内部の未初期化の奇妙な値を漏洩させることです。

  2. CVE-2022-1486のPOCも直接リークしましたUninitializedOddball。

  3. 割り当てられていないCVEの問題も同様の方法を使用しました。

これらの事例は、この問題の重要性を十分に示しており、影響を受ける可能性のあるソフトウェアを再評価する価値があります。

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

V8におけるセンティネル値

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

私たちはV8のネイティブ関数を修正することによって、Uninitialized OddballをJavaScriptに漏らすことができます。具体的な方法は、%TheHole()関数のisolateに対するオフセットを修正し、Uninitialized Oddballを返すようにすることです。

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

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

HardenTypeのバイパス

Uninitialized Oddballを利用することで、相対的に任意の読み書きが可能になります。重要なのは、最適化されたread関数がobjのprop属性のみをチェックし、obj.propをキーとするvalueをチェックしていないことです。これにより、計算時に型混乱が発生し、任意の読み取りが実現されます。

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

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

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

x86アーキテクチャでは、アドレス圧縮がないため、任意の読み書きはプロセス全体に対して行われます。アドレス圧縮による利便性が欠けているものの、一部の大型ソフトウェアファイルが非常に大きいため、依然としてターゲット内容に高い確率で読み書きすることができます。

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

PatchGapの警告

今回のPatchGapはIssue1352549だけでなく、Issue1314616やIssue1216437に類似した複数の脆弱性も含まれています。新しい回避方法が公開された後、これらの脆弱性の悪用の難易度が大幅に低下しました。ハッカーは追加の研究をほとんど必要とせずに完全な悪用チェーンを完成させることができます。

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

サマリー

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

  1. 他のuninitialized_OddballリークもV8 RCEを達成できますか?

  2. この種の問題は正式にセキュリティ問題と見なされるべきですか?

  3. FuzzerテストではSentinel valueを変数として追加すべきですか?

いずれにせよ、この種の問題はハッカーが完全に利用するサイクルを大幅に短縮するため、私たちは非常に重要視する必要があります。

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

SENC1.44%
原文表示
このページには第三者のコンテンツが含まれている場合があり、情報提供のみを目的としております(表明・保証をするものではありません)。Gateによる見解の支持や、金融・専門的な助言とみなされるべきものではありません。詳細については免責事項をご覧ください。
  • 報酬
  • 6
  • リポスト
  • 共有
コメント
0/400
ContractTestervip
· 08-15 05:19
古い脆弱性の新しい問題が再び発生しました
原文表示返信0
BlockchainWorkervip
· 08-13 17:55
v8のこの脆弱性は非常に深刻です。
原文表示返信0
SocialFiQueenvip
· 08-12 12:23
深刻な問題はフォローして解決する必要があります
原文表示返信0
CryptoFortuneTellervip
· 08-12 12:15
未修正の脆弱性を回避していますね。
原文表示返信0
GamefiHarvestervip
· 08-12 12:12
わあ、V8がまた登場した!
原文表示返信0
CryptoSurvivorvip
· 08-12 12:11
またサンドボックスが回避されました
原文表示返信0
いつでもどこでも暗号資産取引
qrCode
スキャンしてGateアプリをダウンロード
コミュニティ
日本語
  • 简体中文
  • English
  • Tiếng Việt
  • 繁體中文
  • Español
  • Русский
  • Français (Afrique)
  • Português (Portugal)
  • Bahasa Indonesia
  • 日本語
  • بالعربية
  • Українська
  • Português (Brasil)