MASTG-TEST-0214 ファイル内にハードコードされた暗号鍵 (Hardcoded Cryptographic Keys in Files)

概要

暗号鍵は設定ファイルや鍵ファイル、証明書ファイル、アプリにバンドルされたその他のリソースファイルなどの埋め込みファイルに存在することがあり、アプリのリソースを抽出できる人であれば誰でもアクセスできます。実際のケースでは、これらのファイル内に API キー、SSL/TLS 秘密鍵、暗号鍵を保存することがあり、アプリがリバースエンジニアされた場合、深刻なセキュリティ脆弱性につながる可能性があります。

  • ファイル拡張子で特定: .key, .pem, .crt, .p12, .cer, .der などの拡張子を持つファイルは、多くの場合、暗号鍵や証明書を含みます。

  • PEM マーカーで特定: ファイル内の -----BEGIN PRIVATE KEY-----, -----BEGIN CERTIFICATE----- などの文字列、またはバイトシーケンス 0x2d 0x2d 0x2d 0x2d 0x2d (ASCII では ----- を表す) は PEM エンコードされた鍵や証明書の存在を示します。

  • 共通バイトパターンで特定: 0x30 0x82 (DER エンコードされた構造の開始を示す) など、既知の DER や PKCS#12 フォーマットに一致する特定のバイトシーケンスを含むバイナリファイルは、暗号マテリアルの存在を示している可能性があります。

  • プロパティリストや JSON ファイルに埋め込み: 鍵は .plist.json 設定ファイル内に保存されている可能性があり、多くの場合 Base64 文字列としてエンコードされています。

  • 特定の文字列で特定: ファイルや変数名内の privateKey, key, secret などのキーワードは、埋め込まれた鍵や機密データを示している可能性があります。

手順

  1. radare2 for iOS などの静的解析ツールをアプリバイナリに対して実行して、上記のような文字列やバイトシーケンスを探します。

結果

出力にはアプリケーションのソースコードやバイナリ内にハードコードされている可能性のある暗号鍵が見つかったインスタンスを含む可能性があります。

評価

ハードコードされた暗号鍵がソースコードまたはバイナリ内に見つかった場合、そのテストは不合格です。

特定された鍵が本当にセキュリティ関連の目的で使用される暗号鍵であることを確認します。鍵の使用コンテキストを検証して誤検知を回避します (たとえば、構成設定やセキュリティに関連しない定数が暗号鍵として誤って特定されるかもしれません)。

Last updated

Was this helpful?