The nintendo switch 2 with a red screen
Photo by Kamil Switalski on Unsplash

Nintendo Switch 2で、ゲーム改造や自作ソフトの実行などを可能にするソフトウェア脱獄が確認されました。開発者のSammy Hajhamid氏によると、この手法は本体を起動するたびに操作が必要なテザー型で、初代Switchで見つかった修正困難なハードウェア脆弱性とは仕組みが異なります。

Switch 2で確認されたテザー型の脱獄

Hajhamid氏が公開した「ns2jb」は、Switch 2向けのソフトウェア脱獄です。同氏は、現行の最新ファームウェア23.0.1で動作すると説明しています。

この手法はテザー型で、本体を起動するたびに脱獄の手順を実行する必要があります。さらに、Switch 1用の特定のゲームを起動して既存の脆弱性を利用します。

実演では、Switch 2専用ソフト『マリオカート ワールド』のキャラクターを改造しています。Hajhamid氏は、Codexとともに脱獄の開発に取り組み、約2週間を要したとしています。

ゲーム内の実行からシステム機能へ

最初の足掛かりは「userland exploit(ユーザーランドの脆弱性)」です。ユーザーランドとは、ゲームやアプリなど通常のプログラムが動く領域で、この段階では特定のソフト内で外部コードを実行できます。

ただし、ゲーム内でコードを動かせるだけでは、ゲームの改造や自作ソフトの導入に必要な機能へ直接アクセスできません。通常のアプリは権限が限られており、OSのサービスやシステム全体を自由に操作できないためです。

ns2jbは、Switch 1用ゲーム「SmileBASIC」のインタープリターにある整数オーバーフローを利用し、メモリーの読み書きを可能にしました。その後、ファイルシステムを扱うシステムサービスの処理を足掛かりに、より強い権限の取得を試みたとHajhamid氏は記しています。

システムサービスの権限を利用

SwitchのOSは複数のシステムサービスが役割を分担する構造です。ns2jbは、ファイルシステムを扱う組み込みサービス「fs」の処理にあるバッファーオーバーフローを利用し、任意のメモリー読み書きを可能にしました。

Hajhamid氏によると、この読み書き機能で通常のプロセスからfsに対する権限を高め、内部ストレージや一般のシステムサービスのコードを取り出しました。次に、プログラムのロードに関わる処理を利用して、独自の実行コードを動かす段階へ進んだとしています。

こうした複数段階の利用により、ns2jbでは自作ソフトの実行、ゲームの改造、セーブデータのバックアップなどが可能になります。Hajhamid氏は、周辺機器にもアクセスできると説明しています。

初代Switchの脆弱性との違い

初代Switchでは、NVIDIA Tegra X1のUSBリカバリーモードにある脆弱性が2018年に公表されました。起動時のBoot ROMに存在する問題で、任意のコード実行につながり、発売済みの本体はソフトウェア更新だけでは修正できないと報じられました。

この方式では、起動のたびにUSB経由で脆弱性を利用する必要があります。一方、Switch 2の今回の手法は、Switch 1用ゲームを使ってソフトウェア上で段階的に権限を得る方式で、改造は本体の再起動後も維持されません。

Switch 2の手法では、起動のたびに操作が必要なうえ、利用するゲームも必要です。Kotakuは、利用対象のゲームが公になっており、任天堂が販売停止などの対応を取りやすいと伝えています。

オンライン利用と今後の対応

Kotakuは、今回の手法で任天堂のオンラインチェックを回避できると報じています。初代Switchでも、改造や不正なソフトの利用を検知した本体がオンラインサービスから停止された事例があり、改造がオンライン利用に影響する可能性があります。

現時点のns2jbは、再起動のたびに手順を踏む必要があるテザー型です。カスタムファームウェアの導入には至っておらず、任天堂がファームウェア更新で対抗策を検討する可能性も指摘されています。

Hajhamid氏は、Codexを使った開発には約2週間の試行錯誤が必要だったと述べています。実演されたゲーム改造は短期間で作られた一方、脱獄そのものとゲーム改造の作業は別のものとして説明されています。