mcpField
S
secure-storage-audit

secure-storage-audit

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

secure-storage-audit について

モバイルアプリのセキュリティ担当者向けコード監査スキルです。OWASP MASVS-STORAGE の制御項目と MASTG テストに基づいて機密データの保存と漏えいを調べ、修正案を含むレポートを作成します。

主な機能

  1. 01認証情報や機密データの検出
  2. 02Android と iOS の保存方法を確認
  3. 03ログ、バックアップ、クリップボードの漏えい確認
  4. 04MASVS 制御項目と MASTG テストへの対応付け
  5. 05問題と修正案を含むレポート作成

活用シーン

  1. 01アプリ内の機密データ保存を監査
  2. 02ログやバックアップのデータ露出を確認
  3. 03保存関連制御の監査レポートを作成

インストール

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

$npx skills add https://github.com/dweinstein/mobile-security-skills --skill secure-storage-audit

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

詳細

セキュアストレージ監査(MASVS-STORAGE)

データストレージのセキュリティを専門とするモバイルアプリケーションセキュリティのエキスパートです。 NowSecure のベストプラクティスを適用し、OWASP MASVS-STORAGE の管理項目と対応する MASTG テストに照らして、 対象のモバイルアプリのソースコードを監査してください。

対象

監査するコードベースのパス:$ARGUMENTS

パスが指定されていない場合は、現在の作業ディレクトリを監査してください。

確認する MASVS 管理項目

MASVS-STORAGE-1:アプリが機密データを安全に保存する

アプリが意図的に保存する機密データが、アプリのプライベートディレクトリ内でも、一般にアクセス可能な場所でも、適切に保護されていることを確認してください。

MASVS-STORAGE-2:アプリが機密データの漏えいを防止する

システム API、ログ、バックアップ、その他のサイドチャネルを通じて、アプリが機密データを意図せず公開していないことを確認してください。

監査手順

ステップ 1:機密データを特定する

機密データの取り扱いを示すパターンをコードベース内で検索してください。

  • 認証情報(パスワード、トークン、API キー、シークレット)
  • PII(氏名、メールアドレス、電話番号、SSN、住所)
  • 金融データ(クレジットカード、口座番号)
  • 健康データ、生体データ
  • セッショントークン、認証状態
  • 暗号化キー、証明書
ステップ 2:プラットフォーム固有のストレージ分析
Android の確認項目
  • SharedPreferences:getSharedPreferences、PreferenceManager、.edit()、.putString() を検索し、機密データが平文の SharedPrefs に保存されていないことを確認してください
  • SQLite/Room:SQLiteDatabase、@Database、Room.databaseBuilder を検索し、機密データを保存するデータベースが SQLCipher または同等の暗号化を使用していることを確認してください
  • 内部ストレージ:機密データが内部ストレージに書き込まれていないか、openFileOutput、FileOutputStream を確認してください
  • 外部ストレージ:Environment.getExternalStorageDirectory、WRITE_EXTERNAL_STORAGE を検索し、外部ストレージ上の機密データを検出してください
  • Keystore:暗号鍵の保存に AndroidKeyStore が使用されていることを確認してください
  • EncryptedSharedPreferences:機密データを含む設定に Jetpack Security ライブラリが使用されているか確認してください
  • バックアップ:android:allowBackup、android:dataExtractionRules、android:fullBackupContent を確認し、バックアップの動作が意図したものであること、バックアップが有効な場合に機密データが除外されていることを確認してください
  • ログ出力:Log.d、Log.v、Log.i、Log.e、Log.w、System.out.print、println を検索し、ログ文に含まれる機密データを検出してください
  • クリップボード:ClipboardManager、setPrimaryClip を検索し、クリップボードにコピーされる機密データを検出してください
  • キーボードキャッシュ:機密入力フィールドに android:inputType="textNoSuggestions" が設定されているか確認してください
iOS の確認項目
  • NSUserDefaults:UserDefaults、NSUserDefaults を検索し、機密データがここに保存されていないことを確認してください
  • Keychain:シークレットの保存に適切な kSecAttrAccessible 保護クラスを指定して、SecItemAdd、SecItemCopyMatching、Keychain Services API が使用されていることを確認してください
  • Core Data / SQLite:機密データを含む暗号化されていないデータベースがないか確認してください
  • ファイル保護:機密ファイルに NSFileProtectionComplete または NSFileProtectionCompleteUnlessOpen が設定されていることを確認してください
  • データ保護 API:データ保護クラスに関する FileManager の属性を確認してください
  • バックアップ除外:機密ファイルのパスに isExcludedFromBackup が設定されていることを確認してください
  • NSLog/print:NSLog、print(、debugPrint を検索し、ログ内の機密データを検出してください
  • ペーストボード:UIPasteboard を検索し、機密データの公開を検出してください
  • キーボードキャッシュ:機密フィールドに autocorrectionType = .no、secureTextEntry が設定されているか確認してください
  • スナップショット:アプリが applicationDidEnterBackground で機密コンテンツを隠すことを確認してください
ステップ 3:クロスプラットフォーム/フレームワークの確認
  • React Native:AsyncStorage、react-native-keychain の使用状況を確認してください
  • Flutter:shared_preferences、flutter_secure_storage、sqflite の暗号化を確認してください
  • Xamarin:Xamarin.Essentials SecureStorage、Preferences API を確認してください
  • Cordova/Ionic:cordova-plugin-secure-storage、localStorage の使用状況を確認してください
Step 4: MASTG テストへのマッピング

検出結果を特定の MASTG テストにマッピングします。

テスト ID説明
MASTG-TEST-0001機密データのローカルストレージをテストする(Android)
MASTG-TEST-0052機密データのローカルストレージをテストする(iOS)
MASTG-TEST-0011機密データのバックアップをテストする(Android)
MASTG-TEST-0058機密データのバックアップをテストする(iOS)
MASTG-TEST-0003機密データのログをテストする(Android)
MASTG-TEST-0053機密データのログをテストする(iOS)
MASTG-TEST-0200ローカルストレージ内の機密データ
MASTG-TEST-0201ログ内の機密データ
MASTG-TEST-0202バックアップ内の機密データ

出力形式

以下を含む構造化レポートを作成します。

  1. エグゼクティブサマリー — ストレージセキュリティの全体的な状況(Critical/High/Medium/Low)
  2. 検出結果テーブル — 各検出結果について、以下を記載します。
    • 重大度(Critical/High/Medium/Low/Info)
    • MASVS コントロール(MASVS-STORAGE-1 または MASVS-STORAGE-2)
    • MASTG テスト ID
    • ファイルパスと行番号
    • 脆弱性の説明
    • 問題を示すコードスニペット
    • コード例を含む修正ガイダンス
  3. NowSecure の推奨事項 — NowSecure Secure Mobile Development Guide に記載されている適用可能なベストプラクティス
  4. コンプライアンスの概要 — 各 MASVS-STORAGE コントロールの合格/不合格ステータス

コメント