RabbitOSの脱獄:秘密ログとGPL違反を発見
Rabbit R1の概要
- Rabbit R1は多くの批判を受けており、ユーザーはこの製品を転売しようとしている。
- Rabbit Inc.は返品を受け付けているが、中古市場ではR1は定価よりはるかに安く販売されている。
動機
- RabbitOSはAndroid 13 AOSP上で動作するアプリである。
- APIをリバースエンジニアリングして、Pythonスクリプトで置き換えることができる。
- Rabbit Inc.がコードの難読化を始めたため、それを分析するためにR1を購入した。
R1のハードウェア
- MediaTek MT6765 SoC、4GB DRAM、128GB eMMCストレージを搭載。
- ブートローダーはデフォルトでロックされているが、mtkclientを使ってロック解除とカスタムROMの書き込みが可能。
ブートチェーン
- ブートプロセスはMediaTekが提供するブートROM(brom)から始まる。
- PreloaderがDRAMを初期化し、tee、gz、lkイメージを読み込む。
- LKはAndroid Verified Bootを実装し、dm-verityを通じてブロックデバイスの完全性を確認する。
信頼のチェーンを破る
- "kamakiri"ブートROMエクスプロイトにより、最初の段階で以降のすべての段階をサブバートできる。
- USBブートローダーモードを使って、署名されていないDAイメージを読み込んで実行できる。
脱獄方法
- カスタムAndroidブートイメージをUSB経由でDRAMに読み込む。
- Preloaderの最後の部分にフックを設置し、LKへジャンプする前にカスタムフックを導入する。
- カスタムカーネル/初期ramdiskが起動し、すべての完全性チェックを通過する。
研究プロセス
- UARTテストパッドを通じてデバッグ情報を収集。
- PreloaderとLinuxカーネルのコマンドラインフラグをパッチしてUARTログを収集。
発見事項
- RabbitOSは内部ストレージにすべてのログをテキストファイルとして保存する。
- ログにはGPS位置、WiFiネットワーク名、セルタワーID、IPアドレス、ユーザートークン、音声データなどが含まれる。
- 最新のRabbitOSアップデート(v0.8.112)でログの問題を修正し、工場出荷時リセットのオプションを追加した。
AOSPの「カスタマイズ」
- RabbitOSはAndroid 13上で動作するシングルアプリモードで、Androidの機能の大半を無効化している。
- システム設定アプリを削除してセキュリティを高めたと主張している。
一般ユーザーへの助言
- 脱獄されている疑いがある場合は、デバイスの電源を入れ直して確認すること。
- デバイスを売却または譲渡する前に、工場出荷時リセットを推奨。
結論
- Rabbit R1には特別なハードウェアはなく、カスタマイズの大半はシングルアプリモードを強化するためのものにすぎない。
- ブートチェーンのセキュリティは効果的ではなく、GPLライセンスにも違反している。
- 脱獄ツールを公開し、研究者がR1を分析できるよう支援している。
GN⁺のまとめ
- Rabbit R1のブートチェーンのセキュリティは脆弱で、ユーザーデータが過剰にログとして保存されていた。
- RabbitOSはAndroid 13上で動作するシングルアプリモードで、Androidの機能の大半を無効化している。
- 脱獄ツールにより、研究者がR1を分析できるよう支援している。
- Rabbit Inc.はGPLライセンスに違反しており、ユーザーデータのログ問題は修正された。
- 類似機能を持つ製品としては、Google Nest Hub、Amazon Echo Showなどがある。
1件のコメント
Hacker Newsの意見