PlayStation 5(PS5)向けに新たな攻撃チェーン「Relapse」が公開されました。WebKitのブラウザ脆弱性と、カーネルレベルのuse-after-freeによるレースコンディションを組み合わせ、ファームウェアのバージョン7.00から13.60を搭載したPS5で、カーネルの読み書きアクセスを取得します。
攻撃に成功すると、署名のないELFペイロードを実行できます。内蔵のELFローダーはTCPポート9021で待ち受けます。
今回の公開が注目されるのは、複数のPS5ファームウェア系統を単一の公開攻撃チェーンでカバーしているためです。ソフトウェアのバージョンごとに別々の手法を用意する必要がありません。
プロジェクトが明記する対応範囲はファームウェア7.00から13.60で、この範囲外のシステムは対象としていません。Relapseは本体のブラウザ環境から始まり、WebKitが使用するJavaScriptエンジンであるJavaScriptCoreを標的とします。
Ntfargoによると、ブラウザ段階ではJavaScriptCoreの情報漏えいと、structured cloneのオブジェクトプールの不整合を組み合わせています。
この欠陥によって、連続したバイナリデータへの低レベルアクセスを提供するJavaScriptのオブジェクト型「TypedArray」が破壊されます。この破壊が、ブラウザ上でのコード実行から特権的なカーネル段階へ移行するために必要なプリミティブとなります。
チェーンの後半はPS5のカーネルを標的とします。アドレスリークと、非同期I/Oルーチンであるaio_multi_waitに関わるuse-after-free状態を組み合わせます。
use-after-freeは、基盤となるメモリが解放された後も、コードがそのメモリへの参照を使い続けると発生するバグです。今回のレースコンディションは、解放されたカーネルメモリを操作できる安定した時間枠を作り出し、最終的に任意のカーネル読み書きアクセスを確立することを狙っています。
カーネルの読み書きは、コンソールのセキュリティ研究において重要な権限の境界です。これを達成すれば、攻撃チェーンはブラウザのサンドボックス内にとどまらず、OSの保護されたメモリを操作できるようになります。
Relapseはその後、ポート9021でELFローダーを公開します。これにより、攻撃完了後に互換性のあるペイロードを送り込めます。既定のペイロードはpayloads/ディレクトリに格納されています。
開発者は、この攻撃が毎回安定して成功するとは限らないと注意を促しています。WebKit段階ではブラウザが停止した場合、ページの再読み込みが必要になることがあります。カーネル段階ではコンソールがハングしたりパニックを起こしたりすることもあり、再試行の前に再起動が必要です。
こうした制約は、レースコンディションを突く攻撃が本質的にタイミングに左右されることを示しています。カーネル環境でuse-after-freeのレースに勝つ場合は、特にその傾向が顕著です。
プロジェクトは、カーネルエクスプロイトをSonic_Iso、WebKitエクスプロイトとカーネルバグをJordy、エクスプロイト開発をntfargoとufm42、テストをDr. Yenyenの功績としています。そのほか、TheFlow、SlidyBat、Flatz、cow、nhk、bollarz、Sleirsgoevy、EchoStretch、EarthOnionにも謝辞を述べています。
Relapseのメンテナーは、このプロジェクトが教育目的および許可を得たセキュリティ研究のみを意図していると表明しています。海賊行為、不正アクセス、市販デバイスの悪用は明確に否定しています。一方で、使用すると動作の不安定化、データ消失、アカウント停止を招く可能性があると警告しています。
利用者は、自身が所有するか、評価を明示的に許可されたハードウェアに限ってテストし、適用される法律とプラットフォームの規約を順守する必要があります。
1万6,000以上のSOCチームがANY.RUNを活用し、脅威調査を効率化して手作業を削減しています。チームで試してみる
翻訳元: https://cyberpress.org/ps5-relapse-exploit-chains-webkit-and-kernel-flaws/