mcpField
A
android-security-best-practices

android-security-best-practices

github.com/krutikjainセキュリティ1486 回インストール31 週間前に更新
リポジトリ

android-security-best-practices について

Android アプリの公開範囲、シークレット、ストレージ、ネットワーク信頼を監査する開発者向けセキュリティスキルです。攻撃対象の棚卸しからリリース確認までの手順を示します。

主な機能

  1. 01エクスポートコンポーネントと入口の棚卸し
  2. 02シークレット、ストレージ、ログ、バックアップの確認
  3. 03ネットワーク信頼と平文通信設定の確認
  4. 04ファイル共有とPendingIntentの保護
  5. 05WebViewブリッジと権限の評価
  6. 06リリース確認と残存リスクの記録

活用シーン

  1. 01Androidマニフェストとエクスポートコンポーネントの監査
  2. 02シークレット管理とデータ漏えいリスクの確認
  3. 03リリース候補前のセキュリティ設定確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/krutikjain/android-agent-skills --skill android-security-best-practices

インストール後、Claude Code で/android-security-best-practicesを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
references/
official-links.md
patterns.md
scenarios.md
scripts/
run_examples.sh

詳細

Android セキュリティのベストプラクティス

使用する場面

  • 次の内容に関する依頼でこのスキルを使用します:Android のセキュリティレビュー、Android アプリでのシークレットの取り扱い、Android のエクスポートコンポーネントのセキュリティ。
  • 主な成果:シークレット、ストレージ、ネットワークの信頼性、エクスポートコンポーネント、最小権限に関する Android アプリのセキュリティガイダンスを適用します。
  • 攻撃対象領域のチェックリストや、ストレージ/ネットワーク/コンポーネントの判断マトリクスが必要な場合は、references/patterns.md を読みます。
  • マニフェスト、バックアップ、WebView、リリースの堅牢化に関するレビュー手順については、references/scenarios.md を読みます。
  • 対象範囲が広がる場合は、次のスキルに引き継ぎます:
  • android-modernization-upgrade
  • android-ci-cd-release-playstore

ワークフロー

  1. まず攻撃対象領域を洗い出します:エクスポートコンポーネント、インテント/ディープリンクの入口、ファイル共有、WebView の使用、ローカルストレージ、ログ、バックアップ、ネットワークの信頼性設定。
  2. 詳細な堅牢化に入る前に、回避可能なリスクを取り除きます:広範なアクセス権や長期間有効なシークレットをアプリに含めるのではなく、プラットフォームのピッカーと選択画面、内部ストレージ、サーバー発行の短期間有効なトークン、最小権限を優先します。
  3. 残る境界を android:exported、コンポーネント権限、FileProvider、networkSecurityConfig、デバッグ専用の信頼アンカー、不変の PendingIntent を使って明示的に保護します。
  4. Android アプリで問題が再発しやすい機微な領域をレビューします:WebView の JavaScript ブリッジ、バックアップ/データ抽出のルール、平文通信の例外、ログの秘匿化、同じ開発者による IPC という前提。
  5. 再現可能なチェックでリリース時のセキュリティ状態を検証し、残存リスクと、バックエンドによる強制適用または Play Integrity が参考情報かブロック条件かを記録します。

ガードレール

  • クライアント側のシークレットは攻撃者が復元できるものとして扱い、可能な限り信頼性の判断と特権 API へのアクセスをサーバー側に移します。
  • 実際に外部から呼び出す必要がある場合に限りコンポーネントをエクスポートします。契約が非公開の場合は、権限で保護するか署名で保護します。
  • 広範なマニフェスト設定を使うのではなく、ネットワークセキュリティ設定でデバッグ用の信頼アンカーや平文通信の例外を対象限定します。
  • ログを秘匿化し、バックアップを確認し、共有外部ストレージに機微なデータを保存しないことをデフォルトとします。

アンチパターン

  • API キーをリソース、NDK、難読化で隠し、それを安全だと見なすこと。
  • 起動可能なコンポーネントや IPC コンポーネントで、android:exported やインテントフィルターの指定を曖昧なままにすること。
  • FileProvider やシステム機能を使わず、生のファイルパスや過度に広範なストレージ権限でファイルを共有すること。
  • 運用上のローテーション手順やフォールバック計画なしに証明書をピン留めすること。

レビューの重点項目

  • エクスポートされたアクティビティ、サービス、レシーバー、プロバイダーの所有者と呼び出し元に関する期待が明確であること。
  • シークレット、トークン、バックエンドの信頼性に関する前提。
  • ネットワークの信頼性、デバッグ用の上書き設定、平文通信の使用、証明書の取り扱い。
  • ファイル共有、バックアップ、ログ、ユーザーデータの漏えい経路。
  • Play Integrity などの不正利用の兆候は多層防御の一部としてのみ使用し、唯一の認可モデルにしないこと。

例

通常のケース
  • シナリオ:マニフェストと共有機能を監査し、エクスポート、権限、FileProvider の使用が明示されていることを確認します。
  • コマンド:rg -n "android:exported|android:permission|FileProvider|grantUriPermissions" examples
エッジケース
  • シナリオ:リリース候補の公開前に、安全でないバックアップやネットワークのデフォルト設定を検出します。
  • コマンド:rg -n "networkSecurityConfig|usesCleartextTraffic|allowBackup|fullBackupContent|dataExtractionRules" examples
障害からの復旧
  • シナリオ:アプリの堅牢化と、モダナイゼーションまたはリリースパイプラインに関する依頼を切り分けます。
  • コマンド:python3 scripts/eval_triggers.py --skill android-security-best-practices

完了チェックリスト

  • 外部から到達可能なすべてのコンポーネントで、公開範囲と呼び出し元の制約が明示されています。
  • シークレット、トークン、信頼性の判断が、クライアントアプリ内での隠蔽に依存していません。
  • ネットワーク、バックアップ、ログ、共有の動作に、リリースに適した明示的なデフォルト設定があります。
  • 残存リスクとバックエンドへの依存関係が、明確な後続作業とともに記録されています。

Official References

コメント