MrNbaYoh氏が、Old Nintendo 3DSのリカバリーファームウェア(SAFE_FIRM)に存在する脆弱性を利用したARM9/ARM11のカーネルexploit safecerthaxをリリースしていました。
safecerthaxはオリジナルの旧3DS(Old3DS)専用で、new3DSでは動作しません。safecerthaxでは3DSのSSLシステムモジュールのSSL/TLS証明書の認証をバイパスすることができてしまう脆弱性を利用しています。sighaxでboot9strapなどがインストールできるようになります。
NATIVE_FIRM(通常の起動時にブートROMから起動する、NANDに保存されているファームウェア)では最新バージョンである11.14.0-46で対策されてしまいましたが、リカバリーファームウェア(SAFE_FIRM)には同じ脆弱性が残っており、それを利用したものになっています。11.14はBrowserhax対策だけではなかったことが明らかになりました。
11.14で対策されたのには理由があります。MrNbaYoh氏のツイートでそれが分かりました。
Before firmware version 11.14, multiple issues combined with SSLoth allowed to get RCE in the 3DS eShop application:https://t.co/CB6b0i8OhRhttps://t.co/zVgb2HPsAY
— nba::yoh (@MrNbaYoh) December 18, 2020
11.14より前のファームウェアではSSLothともろもろの組み合わせで3DSのeショップアプリでリモートコード実行が可能でした。
リンクが掲載されていますが、HackerOneでした。3,200ドル(日本円で約33万円)の報奨金が出された11.13に存在した脆弱性で、2020年12月18日にHackerOneで情報が公表されました。
11.14で対策されたのはこれが原因で、HackerOneで公表されたためにMrNbaYoh氏が情報の守秘義務がなくなり、脆弱性が残っているリカバリーファームウェア(SAFE_FIRM)を使うsafecerthaxを公開したことになります。時系列的に確信犯的に準備してたのだと思います。
SAFE_FIRMについて念のため説明しておきます。
3DSでは本体の更新を行う際、エラーが出て更新できないときに備えて強制的に本体更新を行うための、いわゆるリカバリーモードが用意されています。
このリカバリーモードはSAFE_MODEと呼ばれます。「L+R+A+十字ボタン上」をすべて押しながら電源を投入すると本体更新の画面が表示され、「OK」をタッチすると本体更新が可能になるというものです。Old3DSではSAFE_MODEのベースがファームウェア1.0のときのものと同じですが、New3DSでは8.0の時のものになっていますのでsafecerthaxが機能しなくなっています。
[使い方]
1) SafeB9SInstallerをダウンロードして解凍し、SafeB9SInstaller.binをSDカードのルートコピーする。
2) 3DSのインターネット接続設定でDNSを以下に設定する。
プライマリDNS: 54.38.133.70
セカンダリDNS: 54.38.133.70
3) 接続テストを行い問題なければ3DSの電源をシャットダウンする。
4) 起動時にL+R+A+十字ボタン上を押してリマバリーモードで3DSを起動する。
5) 「インターネットに接続して本体を更新します。よろしいですか?」と聞かれるのでOKをタップするとフェイクアップデートが始まる。
6) アップデートに失敗し、エラーメッセージが出るので、エラーメッセージを消すとexploitが発動してSafeB9SInstallerが起動する。
現時点でsafecerthaxの成功率は100%ではないようですので、フリーズしたりブラックアウトしたら最初からやり直して下さい。