Fierce Waffleで、fierce waffle氏らのチームがニンテンドー3DSのRAMをダンプすることができるユーティリティ3DS Toolkit v0.0.0.2をリリースしていました。
3DS ToolkitはGateway 3DSと同じDS Profile exploitを利用しているため動作環境は4.1.x – 4.5.xとなっています。
3DS Toolkitは当初”ROP Loader”の開発プロジェクトとしてスタートしました。ROPとはReturn-Oriented Programmingの略で、既に組み込まれているプログラムのコードを利用するexploit技術の一つです。
3DSがシステムの設定に利用しているSYS:/Launcher.datというファイルがあり、3DSのメモリー上にある”SYS:/Launcher.dat”という文字列から最初の文字である”S”を取り除き、更にSDカードを”YS:/”としてマウントさせることでLauncher.datがROPとして機能するという仕組みです。
ただ、それだけではユーザーランドexploit(DS Profile exploit)だけですので、そこから先に行くためにはまずカーネルexploitを探す必要がありました。fierce waffle氏らそのためにはまずRAMをダンプしなければならないため、その方法を探ったそうです。
そこで考えたのが、IOpen_Fileのパーミッションの変更です。これが上手く行ったためSDカードへの書き込みが可能になりました。しかしIOpen_Fileコマンドを使うことによる制限など多くの問題を順に解決しつつ、RAMをダンプするツールの開発に成功しました。
[使い方]
- 1. ニンテンドー3DSに対応したFlashcartに”ROPLoader.nds”ファイルをコピーする。
2. Flashcartを3DSに入れ、’game’ にある”ROPLoader”を開く。
3. 読み込みが終わり、Aボタンを押すとROPのペイロードインストールプロセスが開始される。
4. インストール後の検証に失敗した場合は2.から3.を繰り返す。Aボタンで3DSのホームメニューに戻ることができる。
5. Launcher.datを3DSで使用するSDカードのルートディレクトリにコピーしたら3DSに挿入しておく。
6. 3DSのメニューから本体設定 -> その他の設定 -> ユーザー 情報 -> DSソフト用設定を選択する。
今回はRAMをダンプするだけのものですので単体での実用性はありませんが、今後開発していく上でRAMのダンプができるようになったというのは非常に大きな意味を持ちます。ゲーム機のハッキングではRAMなどのメモリーダンプは必要不可欠ですから、今後の3DSシーンの進展には期待が持てそうです。
そんな攻撃方法が使われたということは、アドレスのランダム化は行われていないわけですね。
それ以外に制約がないとすれば、PSPと同じように簡単にゲームの脆弱性を突くことができるということになりますね。
しかもメモリダンプもできて、バックアップ起動もできる=ゲームとExploitされたコードの同時動作ができるとなると、脆弱性を探すことも容易になります。
PS Vitaもこうだったらよかったんですけどね。