AIが自ら電源ボタンを押してSwitch 2を脱獄するまで:2週間の自動化ループ

Switch 2AIエージェントハードウェアリバースエンジニアリング脱獄

データソース:pepsipu ブログ ns2jb

2台の本体、2つのリモート操作ボックス、電源を押す物理スイッチ

2026年10月18日、開発者pepsipu氏が「ns2jb」を公開した。任天堂の最新携帯ゲーム機「Switch 2」(ファームウェア23.0.1)に対する、初の完全ソフトウェア脱獄(Jailbreak)である。分解もハンダ付けもModchipの装着も一切不要。起動から攻略完了に至るすべての工程がソフトウェア層だけで完結している。脱獄環境で実行されるコードはシステムモジュール権限を持ち、自作プログラムの起動、ゲームModの導入、セーブデータのバックアップ、周辺機器への直接アクセスが可能となる。

しかし業界関係者を最も驚かせたのは、その脆弱性発見の手法だった。リバースエンジニアリングの全工程を担ったのはOpenAIのCodexエージェントであり、その「手足」となったのは市販のコンシューマー向け機器で組まれた自動化ループだった。

リバースエンジニアリング実機のループ環境:並べられたSwitch 1とSwitch 2 写真:自動化リバースエンジニアリング環境。Switch 1とSwitch 2が並び、2台のJetKVMが映像の取り込みとコントローラー入力を中継。手前には改造されたBluetooth物理スイッチが配置されている。出典:pepsipu氏のブログ

フリーズしたら物理スイッチが電源ボタンを押す

この検証環境は特筆に値する。構成が驚くほど安価なのだ。用意されたのはSwitch 1とSwitch 2が各1台、USB入力とHDMI映像伝送をリモートで行う小型ボックス「JetKVM」が2台、そしてAmazonで購入したBluetooth対応の物理スイッチ改造パーツだけである。

Switch 2にはリバースエンジニアを悩ませる仕様があった。カーネルパニックやクラッシュが発生した際、本体が自動再起動せず、物理的に電源ボタンを押さなければ復帰しないのだ。従来の研究なら、人間が隣に張り付き、テストを走らせ、死んだらボタンを押し、起動を待つしかなかった。Bluetooth物理スイッチの導入によって、この作業は機械機構へと置き換えられた。アームが下降して電源ボタンを押し込み、押し切った後の反動トルクで自動的にアームが持ち上がる。決して疲れることのない機械の指の誕生である。

これによりパイプラインは完全に閉じた。Codexが映像フレームを認識し、キー入力を送り、挙動を試し、フリーズを検知するとスイッチをトリガーして再起動させ、探索を再開する。作者はこの装置の写真に「set a goal to jailbreak the switch 2. make no mistakes(Switch 2を脱獄せよ。ミスは許されない)」というキャプションを添えた。後にコメント欄で「あれは洒落で書いたキャプションで、実際には丸2週間の試行錯誤が詰まっている」と明かしている。ハードウェアが休むことなく繰り返し試行し、人間はただその循環ループを組み上げる役に徹した。

ブラウザの経路は現代的防御に阻まれた

Codexが最初に試したのは、最も手慣れた定石ルートだった。偽装Wi-Fiのキャプティブポータルを介し、Switch 2の内蔵ブラウザへWebKitの既知脆弱性(n-day)を流し込む手法だ。エージェントのログによると、ネイティブ制御フローの乗っ取りには成功しており、プログラムカウンタは攻撃者側の手中に落ちていた。

だが任天堂はSwitch 2に幾重もの最新防御機構を施していた。コード領域の書き込みや読み出しを拒否するXOM(実行専用メモリ)、ポインタ署名を行うPAC、間接ジャンプ先を縛るCFI。制御フローを奪えたとしても、そこから任意のシステムコール発行へ一般化することは不可能だった。Codexはこの探索ルートを途中で断念する。

Codexがネイティブ制御フロー奪取を報告したログ画面 写真:WebKitのn-day脆弱性を用いてネイティブ制御フローを奪取したCodexの報告画面。攻撃はこの段階で足止めを食らった。出典:pepsipu氏のブログ

別のハードウェアであれば異なる結末を迎えたかもしれないが、それはまた別のマシンでの話だ。

脆弱性はBASICインタープリタの奥に潜んでいた

真の突破口となったのはSwitch 1側だった。Switch 1にはPAC保護が存在せず、トラストアンカー(Root of Trust)もコミュニティによって解析し尽くされているため、ゲームのバイナリを復号してじっくり精査できる。Codexが標的に選んだのは『プチコン(SmileBASIC)』——ユーザーがBASIC言語で自作ミニゲームを組める商用ソフトだった。

欠陥は配列要素を削除する処理の中に存在した。プログラムは position + count が配列長を超えていないか境界チェックを行うが、この32ビット符号付き整数の加算がオーバーフローして負の値へ回り込むケースを考慮していなかった。チェックをすり抜けた後のメモリ転送は (length - position) * 8 バイトで実行されるため、境界外のメモリコピーが成立してしまう。発売から何年も経過した商用タイトルの中に潜んでいた、教科書通りの整数オーバーフロー脆弱性である。

両世代のハードウェアは基礎的なアーキテクチャやシステム構造を多く共有している。Switch 1上で得た足がかりをSwitch 2上の実行権限へと引き上げることで、最後のパズルが完成した。

マリオカートのMod化は純粋な遊び心

脱獄成功後のデモンストレーションは痛快なものだった。CodexはSwitch 2専用タイトル『マリオカート ワールド』のバイナリに手を加え、サンリオのシナモロール、『チェンソーマン』のレゼ、『Minecraft』のスティーブ、『ブレイキング・バッド』のウォルター・ホワイト、そして初音ミクといった自作キャラクターモデルをレース場へと一挙に送り込んだ。

自作キャラクターを追加したマリオカート ワールドの表彰台画面 写真:自作キャラクターを導入したマリオカート ワールドのリザルト画面。ウォルター・ホワイトと初音ミクが同じサーキットで競い合っている。出典:pepsipu氏のブログ

作者は「マリオカートの改造は完全な感覚頼りのコーディング(vibe coding)で、半日ほどで仕上げた単なるお遊び。脱獄コードそのものは一切の妥協なく厳密に組んである」と補足している。コミュニティのコメント欄には似たような試みを披露する開発者が続出した。キャプチャカードとスマートプラグを使ってClaudeに古いDOSゲームを移植させた者、ESPマイコンとサーボモータでx86基板のリセットスイッチを連打させた者など様々だ。全員が一致した結論は一つ、「このループ最大の強みは、並列化が可能で24時間休まず稼働し続けられることだ」という点だった。

ボトルネックは知能ではなく試行スループットだった

電源ボタンを押し続けたBluetooth物理スイッチの話に戻ろう。ハードウェアのリバースエンジニアリングが長年停滞する要因は、往々にして「実行、クラッシュ、再起動、再試行」という果てしない単調作業にあった。カメラ、キャプチャ機器、リレー機構がその機械的作業を引き受けた瞬間、解析は属人的な「マンパワーの問題」から「試行スループットの問題」へと変貌する。人間がループを設計し、機械が試行を担うことで、かつて1人の技術者が数ヶ月費やしていた試行錯誤がわずか2週間に凝縮された。

任天堂側も手をこまねいてはいないだろう。作者は脚注で今後の対策を推測している。もし任天堂がゲームバイナリの復号をカーネル空間内に限定し、ユーザー空間から実行可能マッピングを完全に剥奪した場合、ローダーすら上位特権層にコードを要求しなければならなくなる。その代償として、ゲームが実行時に自らのコードを読み出す自由は失われる。近年の任天堂は動的コード実行機能を一貫して削減しており、その方向性と完全に一致する。

しかし、攻撃と防御のゲームにおける前提条件は既に塗り替えられた。これまでの防御策は「解析者の忍耐力が尽きるのを待つ」だけで十分だったが、いまやその忍耐力は機械リレーが肩代わりしている。次に23.0.1のような壁が現れたとき、電源ボタンを押すのはもう人間ではない。

参考リンク:

  • pepsipuブログ原文:ns2jb
  • Hacker Newsディスカッション (item?id=50192536)