Hello there, ('ω')ノ
そもそもAndroidアプリは何をしている?
- 表向きはスマホアプリ
- 裏ではWebサーバーやAPIサーバーと通信中
つまり、中身はほぼWebアプリと同じ。 違いは「URLやデータが隠れて見えにくい」という点です。
見逃されやすい脆弱性パターン
✅ APIエンドポイントURLがアプリ内にハードコードされている
✅ デバッグ用のテストデータが残っている
✅ Webビュー(アプリ内ブラウザ)でXSSやクリックジャッキングのリスク
✅ ログイン認証が甘いAPIが裏で動いている
これらがそのまま公開されてしまっていることがよくあります。
チェック方法① 通信内容を観察する
- Android端末とPCを同じWi-Fiにつなぐ
- プロキシツール(Burp SuiteやOWASP ZAP)をPCで起動
- AndroidのWi-Fiプロキシ設定をPC側に切り替え
- アプリ操作 → Networkタブで通信内容を確認
Chromeの開発者ツールで見られるWebとは違い、アプリ側はこうした手順が必要です。
※テスト環境専用端末で行うのが基本です。
チェック方法② APKファイルを解析する
APK=Androidアプリのパッケージファイル
- apkファイルを入手
- apktoolやjadx-guiなどのツールを使って解析
- 中に含まれるURLや認証情報を探す
✅ 見つかることが多いもの:
- APIサーバーのURL
- 秘密鍵やトークン(やってはいけない!)
- デバッグメッセージ
チェックポイント一覧
- [ ] ハードコードされたURLや認証情報がないか?
- [ ] 通信内容に平文のパスワードや個人情報が含まれていないか?
- [ ] Webビュー機能が適切に制御されているか?
- [ ] 認証なしでAPIが呼び出せてしまわないか?
具体的な社内向け例
社内で使っている経費申請アプリがある場合:
- プロキシ経由で通信を観察 → API URLを控える
- そのURLをPCブラウザから直接開いてみる → 認証なしでアクセスできないか?
- apk解析 → 社内APIの秘密情報がハードコードされていないか?
まとめ:Androidアプリでも見るべきポイント
- 通信内容はWebと同じ感覚で観察
- apkファイル解析で裏側を確認
- ハードコードされた情報・デバッグ情報に注意
Best regards, (^^ゞ