PS5 SpecterDev氏がハイパーバイザーexploit「Byepervisor」を発表

記事の方法を試す前や質問をするまえに必ず下記リンクを見てからにしてください!
このブログについて
http://yyoossk.blogspot.jp/1970/11/blog-post_24.html


このハイパーバイザーexploitは、ファームウェア2.50までで機能します

ハイパーバイザーとByepervisor エクスプロイト
ハイパーバイザーは、本体のファームウェア、特にカーネルを悪意のある攻撃から保護するために設計されたミドルウェアです。
特にハイパーバイザーは、カーネルに eXecute Only Memory (XOM) ルールを適用して、攻撃者がシステムの重要な部分を読み書きできないようにします。
ハイパーバイザーはPS5が最初に発売されて以来、何度かアップデートされていますが、初期バージョンはカーネルに直接統合されていたため、ハッカーがそれを調べ、最終的にハッキングすることができました。
新しいリビジョンはより安全であり、特にSpecterDev氏のexploitは、ファームウェア カーネルの外部に移動されたハイパーバイザーのバージョンでは利用できません。

プレゼンテーションの初期のスクリーンショットとレポートによると、保護されていないジャンプ テーブルを含むカーネル/ハイパーバイザーの 2 つのバグを利用してこれを回避したようです。
ハイパーバイザーをハッキングすることで、ハッキングコミュニティはXOMを無効化し、最終的にカーネルへの読み取り/書き込みアクセスが可能になります(現在、PS5カーネルでは、ジェイルブレイクされたPS5であっても任意の読み取り/書き込みはできません。Sleirsgoevyの「kstuff」、つまりリアルタイムでレジスタを変更するランタイムデバッガーのおかげで、これらの制限を回避できます)。

Byepervisor – 次は何?
Byepervisor自体は、PS5のハッキングにとって大きな進歩ではあるものの、エンドユーザーに直接役立つものではありません。
技術的には、既存の Jailbreakと Sleirsgoevy の kstuff で「必要な」ことはすでに達成されているため、Byepervisor が既存のツールに統合され、さらに多くの機能につながるまでにはしばらく時間がかかるでしょう。
しかし、短期的には、PS5のハッキングに関連するすべてのパフォーマンスが大幅に向上すると思います (デバッガーをリアルタイムで実行することは、パフォーマンスの観点からコンソールをハッキングする最良の方法ではないため)。
XOM を無効にすると、カーネルに何が含まれているかがようやくわかるようになるため、ファームウェアの復号化されたダンプが公開され、逆コンパイル作業がすぐに開始されると思います (最終的には、PS5 HEN やプラグインなどの改善につながる可能性が高いです)。

Byepervisor
2つの脆弱性とエクスプロイト チェーンが含まれていますが、これらは互いに独立しており、どちらでも使用できます。
1 つのエクスプロイトは主に保存目的で提供されており(/_old_jump_table_exploit)、プライマリ エクスプロイト チェーンのみを使用する必要があります (QAフラグexploit)。

ジャンプテーブルexploit
最初のexploitは、ハイパーバイザーのコード ジャンプ テーブルがゲスト カーネルと共有され、に含まれていた脆弱性を利用します。ハイパーコール/_old_jump_table_exploit/のジャンプ テーブル エントリをハイジャックすることでVMMCALL_HV_SET_CPUID_PS4、ハイパーバイザー内でのコード実行が可能になります。
Nested Paging (NPT) と Guest Mode Execute Trap (GMET) を無効にする ROP チェーンを実行します。
これにより、eXecute Only Memory (XOM)、つまりxotextカーネル内の Page Table Entries (PTE) を無効にしてダンプしたり、PTE への書き込みを有効にしてカーネルをフック/パッチしたりできるようになります。

この方法には、かなりの数のガジェットとオフセットが必要です。これが、このexploitが主要なexploitではない主な理由です。
また、現時点では、ROPチェーンが実行されるコア上のハイパーバイザーのみが破壊されますが、ハイパーバイザーは他のコア上ではアクティブのままであるため、無効にする必要があります。

QAフラグのexploit
主な推奨exploitは、システム品質保証 (QA) フラグがハイパーバイザーとゲスト カーネル間で共有されるという事実を利用します。
ハイパーバイザーが初期化されると、ネストされたページ テーブルを構築する init コードは、システム レベル (SL) デバッグ フラグの QA フラグをチェックします。
このフラグが設定されている場合、ネストされたページ テーブル エントリ (PTE) にxotextはカーネル .text ページのビットが設定されず、さらにカーネル .text ページの書き込みビットも設定されます。

これらのフラグは、スリープ モードからの再開時にセキュア ローダーによって再初期化されませんが、ハイパーバイザーは再初期化されます。
SLフラグを設定し、システムをスリープ状態にして再開すると、ゲスト カーネルのページ テーブルを編集してカーネル .text ページを読み取り/書き込み可能にし、カーネルとフック/パッチのダンプが可能になります。

重要な注意事項
現在、Homebrew Enabler (HEN) では2.50FWのみがサポートされており、他のファームウェア バージョンのサポートは後で追加される予定です。
エクスプロイト ペイロード (byepervisor.elf) は、システムをサスペンドする前と再開後に 1 回ずつ、2 回送信する必要があります。
システムを手動で休止モードにする必要があります
QA フラグ エクスプロイトからのカーネル ダンプには、現時点ではハイパーバイザーの .data 領域は含まれません。これが重要な場合は、移植後にジャンプ テーブル エクスプロイトを使用してダンプするか、最初にネストされたページングを無効にしてください (これは TODO です)
現在含まれている
カーネルダンプコード(コメントアウトされています。このコードを実行すると、マップされていないメモリに到達する前にできるだけ多くのダンプを試みるため、システムがパニックになります)

TCP 経由でシステム ライブラリ SELF を復号化するコード
2.50 ファームウェア (fself+fpkg) 用の Homebrewイネーブラー(HEN)

ビルドノート
このexploitペイロードは、PS5-Payload-Dev SDK を使用して構築されています。
また、のビルドは、hen/カーネル コード ケーブにコピーされるフラット バイナリにコンパイルされるため、少し特殊であることにも注意してください。 のコード全体は、hen/スーパーバイザー/カーネル モードで実行されます。

使い方
UMTXエクスプロイトチェーンをWebkitまたはBD-Jで実行し、ELFローダーを実行します。
byepervisor.elfファイルを送信
システムを休止モードにする
電源システムが復旧
再度送信しますbyepervisor.elf(John Tornblom ELF ローダーを使用する場合、ELF ローダーは再開後もペイロードを受け入れ続けるはずです。そうでない場合は、UMTX エクスプロイトを再度実行する必要があります)

今後の仕事
より多くのファームウェア(オフセット)をサポート
byepervisor.elf一度だけ送信すれば済むようにする
システムを自動的にサスペンドしますか?
QA フラグ付きのパッチ vmcbs でハイパーバイザー データをダンプするexploit

コメント