一般
以下の一覧は、アプリケーションが従う必要のある一般的なセキュリティ要件を示しています。
公開アプリケーションには Thales SDK のリリースバリアントを使用すること
アプリケーションを iOS App Store や Google Play ストアに公開する前に、アプリケーションが SDK のリリースバリアントを使用するように構成されていることを確認してください。
本番アプリケーションでデバッグ用の SDK バリアントを使用すると重大なセキュリティ上の問題を引き起こし、エンドユーザーに関する機密データが露出する可能性があります。
デバッグシンボルの削除
アプリケーションにはいかなるデバッグシンボルも含めないでください。この対策はリバースエンジニアリングの難易度を高め、機密変数、構造、およびロジックの容易な特定を防ぎます。
機密データ漏洩の防止
バックグラウンド状態で機密データが漏洩しないよう、アプリケーションのライフサイクルを注意深く管理する必要があります。バックグラウンドに移行する前に UI に表示されている機密データを削除することが推奨されます。すべての機密データはアプリがフォアグラウンドに復帰するまで消去または暗号化しておくべきです。機密データのログ出力は避けてください。
コード難読化
アプリケーションのリバースエンジニアリングの難易度を高めるために:
Android アプリケーションでは、クラス名、関数名、および Thales SDK の公開 API を隠すために十分な難読化を行う必要があります。さらに、アプリ内で使用される機密文字列も難読化するべきです。
iOS アプリケーションでは、この分野のツールが成熟していないため難読化は推奨されますが必須ではありません。
ネットワーク通信
アプリケーションがサーバーとのすべてのネットワーク通信に HTTPS を使用することを強く推奨します。自己署名証明書は避けるべきです。以下は証明書ピンニングに関する推奨ガイドラインです:
ホスト名がリーフ証明書の Subject 名と一致していることを確認してください。
証明書チェーン内の各証明書が有効期限切れでないことを確認してください。
信頼チェーンが有効であり、証明書チェーンがシステムの信頼ストアで検証されることを確認してください。
ルート CA またはリーフ証明書の SHA256 ハッシュがアプリ内にハードコードされたハッシュと一致することを確認してください。
個人を特定できる情報(PII)を含む機密データの場合、TLS 経由で送信する際に追加の暗号化および認証メカニズムを適用します。
RASP 保護
アプリケーションで Runtime Application Self Protection を有効にするために商用ツールを利用することを強く推奨します RASP。これにより、root や jailbreak の検出、アプリへのフック試行、デバッグ、アプリ改ざん、エミュレータ検出などを検出するのに役立ちます。
ログ使用の制限
デバイス上のログを出力する際には注意が必要です。ログは攻撃者にとって有用な情報源になり得ます。PII やその他のユーザー機密情報など重要な情報をログに表示しないようにして、攻撃者に悪用されるのを防いでください。モバイルアプリからログを除去するには、難読化ツールの使用やビルドフラグで条件付きにログを囲み本番ビルドで除外するなどの方法があります。
Android ではログは共有リソースであり、 READ_LOGS 権限でアクセス可能であり、ユーザーの機密情報を不適切にログ出力すると他のアプリケーションへの意図しないデータ漏洩につながる可能性があります。
安全なコーディング手法の採用
入力検証、適切なメモリ管理、安全な C 関数の使用、機密データを格納するために不変コンテナを使用しないことなど、確立された安全なコーディング手法に従ってください。詳細については OWASP Secure Coding Practices Quick Reference Guide を参照することを推奨します。これらの手法は PMD や HP Fortify のような静的コード解析ツールを使用して強制することができます。
監査とペネトレーションテスト
アーキテクチャおよびソースコードの監査を実施してアプリケーションのセキュリティを詳細に評価してください。さらに、アプリケーションやデバイス、その他のシステム層に対する攻撃をシミュレートするためにペネトレーションテストを実施してください。これにより脆弱性の特定とアプリケーション全体のセキュリティ状況の評価に役立ちます。
アプリケーションセキュリティの耐性を評価する
OWASP モバイルアプリケーション セキュリティ検証基準 MASVS はモバイルアプリケーションのベースラインとなるセキュリティ要件を確立します。これを使用することを強く推奨します チェックリスト でアプリケーションのセキュリティ状況を評価してください。
最終更新
役に立ちましたか?