Wii UのBluetooth exploitでカーネルアクセス bluubomb by GaryOderNichts

GBATempで、GaryOderNichts氏がNintendo Wii Uのbluetoothの脆弱性を利用しIOSUカーネルアクセスを可能にするexploit bluubombをリリースしていました。

Wii-U

bluubombはWii UがBluetoothでエミュレートされたWiiリモコンとペアリングさせることでIOSUコードの実行ができるというもので、通常エントリーポイントとして利用するブラウザなどは一切使用しません。ソフトウェア的にbrickしたWii Uにbluubombは有効だろうとしています。

Nintendo Switchの12.0.2でこっそり修正されたbluetoothのHIDデータパケットでのスタックバッファオーバーフローというのは、この脆弱性のことだったようです。今回この脆弱性を利用したのはSwitchではなくWii Uです。

[必要なもの]
Wiiリモコンとペアリング可能なWii U
Bluetoothに対応したPC
Linux標準のBluetoothプロトコルスタックBlueZのカスタムビルドが動作するLinux(Debian 10推奨。Ubuntu 20.04ではクラッシュするため)

[使い方]
1. 必要なものをインストールするため、以下を実行する
sudo apt install build-essential libbluetooth-dev libglib2.0-dev libdbus-1-dev

2. PCで実行するWiiリモコンエミュレータhttps://github.com/rnconrad/WiimoteEmulatorをクローンする
WiimoteEmulator

3. source ./build-custom.shを実行し、カスタムBlueZを実行する

4. udo systemctl disable --now bluetoothで既存のBluetoothデバイスを停止する

5. sudo ./bluez-4.101/dist/sbin/bluetoothd -d -nでカスタムビルドのbluetoothdを実行する

6. リリースページからbluubombのバイナリをダウンロードする

7. Wii Uの電源を投入しsyncボタンを押す

8.sudo ./bluubomb arm_kernel.binを実行し、ペアリングプロセスが完了するまで待つ(1分程度かかる)

9. ペアリングが完了するとBluetoothのアドレス([bdaddr])が表示されるので、PC側からsudo ./bluubomb arm_kernel.bin [bdaddr]のコマンドを実行し、ペアリングプロセスをスキップする

bluubombにはいくつか目的ごとにカーネルバイナリが用意されています。
arm_kernel_loadfile
次のアプリケーション起動時にSDカードのルートにあるlaunch.rpxを起動する
arm_kernel_fw_launcher
SDカードのルートにあるfw.imgを次回のOS再起動時に起動する
arm_kernel_region_free
リージョン制限を一時的に解除するIOSUパッチを適用する

今後様々な目的のカーネルバイナリがリリースされるかも知れません。

Switchでも12.0.1までであればJoy-Conエミュレータが用意されれば面白いことができるのかも知れません。

現時点での最新版はインテルのBluetoothチップでWii Uとのペアリングをサポートしたbluubomb v2です。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする