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