Hello there, ('ω')ノ
🎯 今回の目標
- MobSFにAPKをアップロード
- レポートの各項目を見て、セキュリティ的に怪しいポイントを発見
- 診断の「気づき力」を鍛える
📦 検証用のAPKファイルを準備しよう
✅ 使用例(社内用・テスト用のアプリを想定)
例として、以下のような設定を持つ仮想アプリを使います:
- アプリ名:SampleApp
- パッケージ名:
com.example.sampleapp
- 通信機能あり、ログイン機能あり
- テスト用APIキーがハードコードされている
このようなアプリを想定して、MobSFに読み込ませてみましょう。
🖥 MobSFでAPKを解析する手順
- ブラウザで
http://127.0.0.1:8000
を開く(MobSF起動済みであること) - APKファイルを「ドラッグ&ドロップ」または「ファイル選択」でアップロード
- 自動的に解析が始まり、1分以内にレポートが表示される
🔍 MobSFレポートで注目するポイント
ここからは実際に表示される項目の中から、診断の視点で要チェックな部分を見ていきましょう。
① Dangerous Permissions(危険な権限)
MobSFはアプリが要求している全パーミッションを分類して表示してくれます。
例:
android.permission.READ_SMS(高リスク) android.permission.WRITE_EXTERNAL_STORAGE(中リスク) android.permission.INTERNET(低リスク)
診断のポイント:
- 実際に必要な機能以上の権限を要求していないか?
- ユーザーに気づかれず、機密情報にアクセスできてしまわないか?
② AndroidManifest.xmlの解析
アプリの「設計図」ともいえるマニフェストファイルの内容が一覧で表示されます。
要チェック項目:
exported=true
が付いている Activity / Service / Receiverintent-filter
で外部から呼び出し可能になっているものandroid:allowBackup=true
(バックアップ許可)の設定
例:
<activity android:name=".DebugActivity" android:exported="true" android:label="Test Debug">
→ テスト用のActivityが本番でも外部に公開されていた、という実例もあります。
③ Hardcoded Secrets(ハードコードされた秘密情報)
MobSFは、APKの中にAPIキーやパスワードらしき文字列が埋め込まれていないか自動的に検索してくれます。
検出例:
Possible API Key detected: "AIzaSyDgxxxxx" in res/values/strings.xml
診断のポイント:
- 公開アプリにAPIキーやトークンがそのまま入っていると、第三者が不正利用可能
- とくにGoogle Maps APIやFirebaseキーなどは誤用されやすい
④ URLs & Endpoints(通信先情報)
MobSFはアプリ内のすべてのURLやドメインを抽出してくれます。
出力例:
http://api.dev.example.com/login https://prod.api.example.com/user/data
チェックポイント:
- 通信がhttp(暗号化なし)になっていないか?
- テスト用の開発サーバーに通信していないか?
- 外部の危険なドメインと通信していないか?
⑤ Code Analysis(コード中のリスク)
MobSFはコード内で使われている危険な関数や命令も自動で検出してくれます。
例:
Runtime.exec()
:シェルコマンドの実行WebView.loadUrl("javascript:...")
:任意コードの実行System.loadLibrary()
:ネイティブコードの使用
診断の視点:
- ユーザー操作に依存して外部入力を取り込んでいる場合、任意コード実行のリスクが生じる可能性あり
📄 レポートをダウンロードしよう
MobSFでは、診断レポートをPDF形式でエクスポート可能です。
- 社内レビュー資料として共有
- 診断記録として保管
- 開発者への改善指示として利用
など、実務でも非常に役立ちます。
✅ まとめ
- MobSFは、APKファイルをアップロードするだけで多数の診断項目を自動チェックできる超便利ツール
- パーミッション、マニフェスト、通信先、コード中の命令など、広範囲にわたる分析が可能
- レポートを元に「何が問題か?」「どこが弱いか?」をピンポイントで把握できる
- 静的解析の第一歩として、自社アプリの状態を“見える化”するのに最適!
Best regards, (^^ゞ