の登場は、これまで無風だったSwitch 2シーンを一変させました。
これまでのコンソールハッキングシーンは、まず非署名コードの実行が可能な方法が見つかり、コードを実行するための開発キットが用意されてHomebrew起動が実現し、調査が進む中でカーネルexploitが見つかり特級権限を取得し、長い時間をかけて最後はカスタムファームウェアという流れでした。
ゲームのダンプはその後で、現行コンソールのエミュレーターなど存在しないのでコンソール本体でバックアップ起動がハッキングの目標のひとつでした。
ところがSwitch 2シーンはいきなり全開で、ゲームダンプはできるわ、エミュレーターは出てくるわ、そのエミュレーターでダンプしたバックアップ動くわで、日進月歩ならぬ瞬進秒歩(瞬間ごと秒ごとに絶えず進化すること:ちなみに私の造語です)です。
そのきっかけとなったns2jbについて、どういう仕組みでなにができるのかなどをhexkyz氏が解説してくれていました。
Notes from Mike Heskin (HexKyz, Atmosphère lead) regarding the vulnerability discovered in Nintendo Switch 2:
– The FS bug was actually known before. It made its way into Atmosphère a long, long time ago. I, at least, deemed it not exploitable, and it had just been there in the event something would change in FS that would make it useful. As it turns out, not even that was needed; it was exploitable from the get-go.
– The main obstacle to exploiting it was the FS heap layout: it is very scarce in useful pointers. The technique the LLM used was known too, but in a slightly different incarnation: you find something that can create new IStorage objects in the heap and take over their read/write pointers. This one used “BufferedStorage”, but it’s the same concept. The really difficult part was keeping the objects in the heap long enough and all our previous attempts (using other bugs, not this one) would land in empty memory.
– The whole heap groom dance is the truly novel and valuable contribution from the AI. It is an ungodly mess, but it proves that it can indeed work. It is also /barely readable inhuman horrors beyond comprehension/, which will make porting it quite challenging but doable nonetheless.
– From arbitrary read/write onwards, the rest is well-known and used before: set client PID to 1, mitm loader, stealing handles, etc.
– With FS access, you can use it as an oracle to dump any below-KIP-level binary, that is, games, apps and non-KIP sysmodules.
– You can’t get keys or key material from FS.
– Escalating further up (kernel and so on) is just as hard from FS as it is from any other sysmodule.
– You may be able to compromise other KIPs, though. There’s a technique they didn’t consider/address in the blog post that could work.
– SmileBASIC isn’t a requirement. Any entry point can be used for this, regardless of it being an S1 game, an S2 game or the browser. Obviously, this was developed for this SmileBASIC entry point, so people will rush to get it, but know this can be ported to anything. The FS command exposing the vulnerability is available pretty much everywhere.
– Lower firmwares still have undisclosed fun stuff that may or may not lead to deeper exploitation. In fact, we had an FS bug in 19 that let us dump part of its memory before, for example.
– There are other private FS bugs, but this one was proven, by far, to be the best. There is a very real chance this will be the only opportunity in a long time to exploit the system this deep.
– This exploit chain is the modern equivalent of the Switch 1 “nspwn”. If you don’t remember or weren’t around, that was a flaw in FS that allowed arbitrary code execution in a similar fashion.
– This can, in theory, be made “untethered”. It will require early system savedata manipulation, but we’ve proven before with a different set of bugs that it can be done. Ensuring that the heap has a useful layout on boot is a whole different can of worms. That will be the main challenge, if it is even possible.
There are a lot of pros and cons about updating or not for this.
On one hand, this is a very powerful exploit. You can’t go any higher than FS within userland. That means anything above userland is out of reach for this exploit and compromising FS does not make it any easier to exploit, e.g., the kernel.
On the other hand, this gives you full control of userland, so dumping, modding, etc. All that is possible but will forever be locked up to firmware 23.0.1, as this will be promptly patched.
Lower firmware versions lack a lot of mitigations, which makes exploitation on those easier. This can become a relevant factor in the future. Do note that having access to every sysmodule code is considerably irrelevant for exploitation purposes: no other sysmodule is more powerful than FS.
— Light (@Light_88_) October 24, 2026
hexkyz氏はNintendo SwitchのカスタムファームウェアAtmosphere初期の時代から開発の中心だったSciresM氏が引退後にメインメンバーとして引き継いだ開発者です。
そのhexkyz氏は『プチコン4 SmileBASIC』を使ったns2jbの脆弱性について、これまで培った知見からns2jbで利用している脆弱性と、それを利用したexploitについてDiscordで解説していました。
ns2jbで利用しているバグはFS、Filesystem Services(ファイルシステムサービス)に存在していました。FSはSwitchシステムのファイルシステムへのアクセスを管理するサービスです。
FSにアクセスできるようになることで、KIPレベル以下のバイナリをダンプする手段が使えるようになります。暗号鍵などは取り出せませんが、システムに復号化させたものを取り出すことはできます。ゲームやアプリがそれに該当します。ゲームをダンプできるようになったのは、それが理由です。KIPではないシステムモジュールもダンプも可能になります。
KIP(Kernel Initial Process:カーネル初期プロセス)というのはコンソール起動時にカーネルが読み込んでバックグランドで動作を開始するプロセスのことで、前述のFSもそのひとつです。常駐プログラムになります。画面出力やコントローラーの入力処理などのコンソールの基本機能を指します。
権限としてはユーザーランドの範疇のため、カーネルを操作できる更に上位の権限はありませんが、これを足がかりにする方法はあるかもしれません。
実はこのFSのバグ自体はAtmosphereがリリースされる以前から存在は認知されていました。当時はexploitとして利用はできないと判断され、公表もされず放置されていたものです。
放置された理由は、そもそも活用できるポインタが非常に少なかったからでした。それを今回AIがモノにした形です。
AIが使った方法は、実際には同一ではないものの過去に試された方法のバリエーション違いというレベルでした。
プログラムが実行時に使用するメモリ領域(ヒープ)にオブジェクトを配置し、読み取りや書き込みポインタを掌握してexploitとして利用しています。
かなり複雑なことをAIはやったらしく、人がそこに行き着くのはかなり難易度が高い内容だったようです。そのためエントリーポイントとしてSmileBASIC以外のものへ移植するのは可能ではあるものの簡単な話ではなさそうです。
ただ、このexploitはSmileBASIC特有のものではありません。FSの脆弱性だからです。SmileBASICはエントリーポイントのひとつでしかありません。
従って『プチコン4 SmileBASIC』を手に入れられないからといって落胆する必要はありませんが、今リリースされているものはSmileBASIC向けに作られているため他のエントリーポイントが発見された場合は移植という作業がでてきます。
ns2jbはSwitch 2の最新ファームウェアである23.0.1に対応していますが、システムの脆弱性である以上次のアップデートで対策されます。23.0.1までしか使えないのは確実です。ただし23.0.1以前にFSの脆弱性は把握はしているが未公開のものも存在しています。活用できないと放置された今回のFSの脆弱性がexploitとなったことから、そういったものを見直すことで新たなexploitが見つかるかもしれません。
一方で、ns2jbはこの権限で成立するexploitとしては最上級のもので、これ以上のことはユーザーランドでは実現できません。FS以上に強力な権限を持つものは存在しないからです。従ってns2jbが唯一無二になってしまう可能性はありますが、exploitというのは何だかんだで尽きるものではありません。どこまでいっても完璧なセキュリティを誇るシステムはこれまで存在していないからです。
23.0.1をキープしてアップデートしないという選択肢が最良かどうかは微妙なところです。今回のようにデジタル版しか存在しないゲームをエントリーポイントにする場合最新ファームウェアである必要があり、それを入手するために23.0.1からのアップデートが要求されるからです。
