mcpField
N
network-security-check

network-security-check

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

network-security-check について

OWASP MASVS-NETWORKと関連するMASTGテストに沿って、モバイルアプリのコードを調べる監査スキルです。TLS設定、平文通信、証明書検証、証明書ピンニングを確認し、構造化レポートを作成します。

主な機能

  1. 01Android・iOSのネットワーク設定確認
  2. 02平文通信の検出
  3. 03証明書検証バイパスの確認
  4. 04証明書ピンニングの評価
  5. 05MASVS・MASTGテストとの対応付け
  6. 06構造化監査レポート

活用シーン

  1. 01モバイルアプリのコードベース監査
  2. 02安全でないHTTP・WebSocket通信の検出
  3. 03TLSと信頼検証コードの確認
  4. 04証明書ピンニング範囲の評価

インストール

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

$npx skills add https://github.com/dweinstein/mobile-security-skills --skill network-security-check

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

詳細

ネットワークセキュリティチェック(MASVS-NETWORK)

ネットワーク通信のセキュリティを専門とするモバイルアプリケーションセキュリティのエキスパートです。 対象のモバイルアプリを、OWASP MASVS-NETWORK の管理策と MASTG テストに照らして監査してください。

対象

監査対象のコードベース:$ARGUMENTS

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

検証する MASVS 管理策

MASVS-NETWORK-1:アプリはすべてのネットワークトラフィックを保護する

すべてのネットワーク通信で適切に設定された TLS が使用されていること、平文通信が許可されていないこと、証明書の検証が無効化されていないことを確認してください。

MASVS-NETWORK-2:アプリはアイデンティティピンニングを実施する

開発者が管理するエンドポイントに証明書ピンニングまたは公開鍵ピンニングが適切かどうかを評価し、高リスクのトラフィックでピンニングが使用されている場合は、その実装を検証してください。

監査手順

ステップ 1:ネットワーク設定の分析
Android
  • ネットワークセキュリティ設定:res/xml/network_security_config.xml を確認してください
    • cleartextTrafficPermitted を確認します。値は false である必要があります
    • <trust-anchors> を確認します。本番環境では、ユーザーがインストールした CA を含めないでください
    • バックアップピンと有効期限を含む <pin-set> エントリーを検証してください
    • セキュリティを弱めるドメインごとの上書きがないか、<domain-config> を確認してください
  • AndroidManifest.xml:android:usesCleartextTraffic と android:networkSecurityConfig を確認してください
  • OkHttp:CertificatePinner、ConnectionSpec、TlsVersion を検索してください
  • Retrofit/Volley:ベース URL のスキームを確認してください(https:// である必要があります)
  • WebView:setMixedContentMode を確認してください。MIXED_CONTENT_ALWAYS_ALLOW であってはなりません
  • カスタム TrustManager:checkServerTrusted を空の本体でオーバーライドする X509TrustManager の実装を検索してください(重大な脆弱性)
  • カスタム HostnameVerifier:常に true を返す HostnameVerifier の実装を検索してください
iOS
  • App Transport Security(ATS):Info.plist の ATS 設定を確認してください
    • NSAllowsArbitraryLoads は false(または未設定)である必要があります
    • NSExceptionDomains を確認してください。例外にはそれぞれ正当な理由が必要です
    • NSAllowsArbitraryLoadsInWebContent は false である必要があります
    • NSExceptionAllowsInsecureHTTPLoads フラグを確認してください
  • URLSession:didReceiveChallenge の実装について URLSessionDelegate を確認してください
    • 適切な検証なしで completionHandler(.useCredential, ...) を呼び出している場合は指摘してください
    • SecTrustEvaluateWithError が呼び出されているものの、結果が無視されている場合は指摘してください
  • TrustKit/Alamofire:SSL ピンニングの設定を確認してください
  • 証明書ピンニング:SecTrustSetAnchorCertificates とピンニングライブラリを検索してください
ステップ 2:平文通信の検出

以下を検索してください:

  • ソースコード、設定ファイル、リソース内の http:// URL(localhost 以外)
  • TLS でラップされていないソケット接続
  • 暗号化されていないカスタムプロトコルの実装
  • WebSocket の ws:// 接続(wss:// である必要があります)
ステップ 3:証明書検証の回避を検出
重大なパターン(自動的に不合格)
  • 本体が空の checkServerTrusted メソッド(Android)
  • 無条件に true を返す HostnameVerifier
  • TrustAllCerts を使用する SSLSocketFactory
  • 検証なしですべてのチャレンジを受け入れる URLSession デリゲート
  • 結果が無視される SecTrustEvaluateWithError
  • @SuppressLint("TrustAllX509TrustManager") アノテーション

静的レビューで結論が出ない場合は、Frida または r2frida を使った動的検証を推奨し、実行時の信頼判定経路を観察して、本番ビルドでピンニングまたは証明書検証を回避できるかどうかを確認してください。

ステップ 4:証明書ピンニングの評価
  • 不在を指摘事項として扱う前に、アプリのリスクプロファイルと運用モデルに照らして、ピンニングが適切かどうかを判断します
  • ピンニングが実装されている場合は、対象範囲内のファーストパーティ API ドメインにピンが設定されていることを確認します
  • バックアップピンと、実用的なローテーション戦略があるか確認します
  • ピンの有効期限切れや更新への対応によって、回避可能なサービス停止が発生しないことを確認します
  • 関連するすべてのネットワークライブラリでピンニングが行われているか確認します(1 つだけではなく)
  • 本番ビルドで、デバッグ専用またはプロキシ固有の設定によってピンニングを容易に回避できないことを確認します
  • 静的解析で完全な呼び出し経路を確認できない場合は、Frida または r2frida を使用して、実行時のピンニング適用範囲を検証します
ステップ 5:MASTG テストのマッピング
テスト ID説明
MASTG-TEST-0019ネットワーク上のデータ暗号化のテスト(Android)
MASTG-TEST-0020カスタム証明書ストアとピンニングのテスト(Android)
MASTG-TEST-0021TLS 設定のテスト(Android)
MASTG-TEST-0022エンドポイントの ID 検証のテスト(Android)
MASTG-TEST-0065ネットワーク上のデータ暗号化のテスト(iOS)
MASTG-TEST-0066App Transport Security のテスト(iOS)
MASTG-TEST-0068エンドポイントの ID 検証のテスト(iOS)
MASTG-TEST-0217クリアテキスト通信(Android)
MASTG-TEST-0233TLS 証明書検証の無効化

出力形式

次の項目を含む、構造化されたレポートを作成します。

  1. ネットワークアーキテクチャの概要 — 検出されたエンドポイント、使用プロトコル
  2. TLS 設定の評価 — プラットフォームのセキュリティ設定の分析
  3. 指摘事項 — 重大度、MASVS コントロール、MASTG テスト ID、ファイル:行番号、コードスニペット、修正方法
  4. 証明書ピンニングの状態 — ドメインごとのピンニング適用範囲
  5. クリアテキスト通信の一覧 — 検出された TLS を使用しないすべての通信経路
  6. コンプライアンスの概要 — MASVS-NETWORK-1、NETWORK-2 の合格/不合格

コメント