2008年に任天堂から発売された携帯型ゲーム機「ニンテンドーDSi」には、ブラウザーのOperaを開発するOpera Softwareと共同開発した「ニンテンドーDSiブラウザー」が搭載されており、インターネットに接続することでウェブページを閲覧することができます。エンジニアのネイサン・ファーロウ氏が、このニンテンドーDSiブラウザーをハッキングして任意のコードを実行するエクスプロイトを発表しました。

Hacking the Nintendo DSi Browser | farlow.dev

https://farlow.dev/2023/03/02/hacking-the-nintendo-dsi-browser

stylehax: DSi browser exploit - YouTube

ニンテンドーDSiブラウザーを起動。



Favorirtes(お気に入り)を開きます。



登録している「stylehax」にアクセス。



「エクスプロイト中……30秒以上このままだったら、再起動してもう一度試してください」というメッセージが表示されるので、しばらく待ちます。



すると、画面が一瞬点滅して消えます。



再起動後、明らかにニンテンドーDSiのものではない画面が表示されました。



ファーロウ氏は、最初はmelonDSというニンテンドーDSのエミュレーターでエクスプロイトを探そうとしたそうですが、うまくいかなかったとのこと。そこで、Opera 9.50のWindowsビルドを探し出してWineで実行し、ヒープ領域を利用したデバッグ機能を有効にした上でWebKitのレイアウトテストを行ったそうです。その上で、使用済みオブジェクトを見つけて破損したものを操作し、制御可能なアドレスにジャンプさせ、任意のコードを実行する方法を発見したとのこと。このやり方がmelonDSエミュレーターでうまくいったため、実物のニンテンドーDSiで検証したのが上記のムービーというわけです。

なお、ファーロウ氏は一連のコードをGitHubで公開しています。

GitHub - nathanfarlow/stylehax: Nintendo DSi browser exploit

https://github.com/nathanfarlow/stylehax