Hello there, ('ω')ノ
💡 Androidのバックアップ機能とは?
Androidには、ユーザーのアプリデータを自動的に保存・復元する仕組みがあります。 開発者が特に何も指定しなければ、アプリのデータは端末にローカル保存された後、Googleアカウントと同期されます。
この動作を制御するのが、AndroidManifest.xml の中にある以下の設定です:
android:allowBackup="true"
これが「true」になっていると、アプリの内部ストレージに保存されたデータ(通常アクセスできない領域)が、root権限なしでもバックアップ可能になることがあります。
⚠️ どんな問題が起こるのか?
たとえば次のようなケースです:
- アプリが内部ストレージにログイン情報や設定ファイルを保存していた
allowBackup="true"だったため、ADBコマンドを使って誰でもバックアップが取得可能に- 復元すると、パスワードやトークンがそのまま読み取れてしまった
つまり「セキュアなはずの内部ストレージ」が、簡単な設定ミスひとつで筒抜け状態になるのです。
🛠 実際に診断してみよう(非root端末でも可能)
✅ ① allowBackup の設定確認
まずはAPKToolやMobSFを使って、マニフェストファイルの設定を確認しましょう。
<application android:allowBackup="true" android:label="@string/app_name" ... >
この値が true または指定がない場合、バックアップ可能と判断します。
✅ ② ADBでバックアップを取得(テスト環境で実施)
adb backup -apk -shared -all -f backup.ab
または特定アプリだけを指定するには:
adb backup -f sample.ab com.example.vulnerableapp
コマンド実行後、端末上に「この端末のデータをバックアップしてもよろしいですか?」というダイアログが表示されます。
→ ユーザーがOKを押せば、アプリの内部データがPCに保存されます。
✅ ③ バックアップファイルを解析する
.ab ファイルは特殊な形式なので、変換ツールで .tar に変換します。
dd if=sample.ab bs=1 skip=24 | openssl zlib -d > sample.tar tar -xvf sample.tar
中には以下のようなファイルが入っていることがあります:
apps/com.example.vulnerableapp/f/userdata.xml apps/com.example.vulnerableapp/db/user.db
→ この中にユーザー名、トークン、設定情報などが含まれていたら危険です!
🧠 診断の観点:どこをどう見る?
| 診断項目 | 内容 |
|---|---|
| allowBackup の設定 | マニフェストで true または未指定か? |
| バックアップで取得できるファイル | 機密情報(DB、設定、ログ)を含んでいないか? |
| ファイルの暗号化有無 | 保存されたデータが暗号化されているか? |
✅ セキュリティ上の対策は?
開発者やセキュリティ担当者が取るべき対応策は明確です:
✅ マニフェストで明示的に無効化する
android:allowBackup="false"
これにより、ADBバックアップは完全に無効になります。
✅ 機密データは暗号化+KeyStore利用を徹底
たとえバックアップされたとしても、中身が見られなければ実害は減らせます。
✅ まとめ
- Androidのバックアップ機能は便利だが、設定次第で機密データが抜き取られるリスクがある
allowBackup="true"が設定されていると、ユーザー操作のみでデータ抽出可能- MobSFやAPKToolを使えば、マニフェストの設定を簡単に確認できる
- 診断では、実際にバックアップを取得し、中身にどんなデータが含まれているかをチェックしよう
Best regards, (^^ゞ