Gezine氏 Nintendo Switch 1/ Switch 2で有効なユーザーランドexploitを発表

Xで、Gezine氏がNintendo Switch 1/ Switch 2で動作するユーザーランドexploitを作成したことを公表していました。

Switch -2-Jailbreak

Gezine氏はPS5シーンで著名な開発者ですが、Switchシーンにも手を伸ばし、Nintendo Switch 1/ Switch 2で有効なユーザーランドexploitの情報を発表しました。

ユーザーランドexploitとは、PSP時代はユーザーモードと表現していましたが、OSの中でハードウェアやカーネル以外の部分で有効なexploitのことです。ユーザーランドではWebブラウザやライブラリなどのアプリケーションやコマンドを利用しシステムコールを通じてカーネルを動かすことはできますが、カーネルそのものの動きをコントロールすることはできません。コンソールハッキングシーンでは、ユーザーランドexploitで任意のコードを実行できる環境を得るために使っています。

ユーザーランドexploitを発見したときには、まず任意のコードを実行できることを実証するために、画面に簡単なテキストを表示するコードを実行させてみたりすること(いわゆる概念実証PoCのこと)が多いです。かつてそのためによく使われていたテキストが「Hello World」です。

Hello Worldには新しい世界ヘの扉が開いたと言うニュアンスがあるので、ハッキングシーンでは一時期好んで使われていました。「Hello Worldに成功した」なんていう言い方も流行りました。

一方カーネルexploitはカーネルの脆弱性を利用することで管理者権限を奪取するために利用します。Windows PCで例えると管理者権限がないとアプリケーションのインストールもアンインストールもできませんが、それをできるようにする権限を入手するために利用します。管理者権限ならOS上で大抵のことはできるようになります。

カーネルexploitを発動させるためにはコンソールでそのためのコードの実行が必要になりますが、ノーマルコンソールでは任意にコードを実行することはできません。その任意のコードを実行できるようにするために利用されるのがユーザーランドexploitです。

余談ですが、PS5の場合OSが仮想領域で動いていますのでカーネル自体の管理者権限があっても更にその上に仮想領域自体を管理する管理者がいるのでカーネルexploitだけでは本当の最高権限は得られません。その最高権限取得のためにハイパーバイザーexploitが必要になっています。

PS5は別として、一般的にコンソールハッキングではユーザーランドexploitで任意のコードを実行できる環境を作り、その後カーネルexploitを実行して管理者権限を奪取する方法が一般的です。

ユーザーランドexploitの実行にも何らかのコードの実行環境が必要ですので、ユーザーが書いたコードを読み込んでくれる仕組みがあるものを利用します。これまではゲームが読み込んでくれるセーブデータを利用したセーブデータexploitや、任意のURLアドレスにアクセスできるブラウザの仕様を利用してアクセス先にあるコードを読み込んでくれるウェブブラウザ(今のコンソールではWebkitというHTMLレンダリングエンジンが使われています)を利用したWebkit exploitのどちらかというのが主流でした。

今回Gezine氏が発見したユーザーランドexploitはNintendo Switch 1でもSwitch 2でも有効なexploitですが、セーブデータでもWebkitでもない別の方法を利用しているようです。

ユーザーランドexploitの詳細については語られていませんし、リリースについても言及されていません。
Gezine氏はセーブデータもWebkitも使わなかった理由について、次のように述べています。

「セーブデータexploitはNintendo Online Serviceを利用するしか転送する方法がないので常に最新ファームウェアが要求される。仮にカーネルexploitが見つかっても結局99%のユーザーがセーブデータexploitを利用できない。このexploitならとくに制限なく全てのファームウェアで利用できる」

「Switch 2のWebKitにはROP(Return-Oriented Programmingの略で、セキュリティが存在する中でコードを実行できるようにするプログラム)コードの実行を防ぐArm PAC(ARMアーキテクチャのセキュリティ機能で暗号化された認証コードを埋め込んで関数の戻りアドレスや関数ポインタの書き換えや改ざんを検知しメモリ破壊を防止する機能)があるため、使うのを回避してより簡単な方法があったのでそちらを選んだ」

Gezine氏はSwitch 2でユーザーランドexploitを動作させている動画だけを公開しました。Switch 2の画面上に「Hello from Switch 2!!」(いわゆるHello Worldですね)を表示させています。エラーコードの所にモザイクが入れてあるのは、エラーの内容を明かすと何を利用しているのかバレるからだと思います。

かつてPSPにTiff画像のライブラリの脆弱性を利用してコードを実行するTIFF exploitというものがありました。tiff画像を表示させることでコードを実行できてしまう脆弱性です。ブラウザでもセーブデータでもないのであれば、そういった類のexploitなのでしょう。

基本的にユーザーランドexploitはアップデートにより対策は可能なのでそのexploitが有効なファームウェアの維持は必要になりますが、カーネルexploitがあればSwitch1/2をハックできるようになります。

これまでSwitchシリーズではソフトウェアハックは主流ではなかったのでシーンにノウハウは少ないですが、もしカーネルexploitが見つかって実用化されればいずれSwitch 2にカスタムファームウェアへの道が開くかもしれません。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする