Best Practices for Writing Secure iOS and Android Apps
by user
Comments
Transcript
Best Practices for Writing Secure iOS and Android Apps
ホワイトペーパー 安全な iOS/Android アプリ開発の ベストプラクティス Mobile Defense www.proofpoint.co.jp iOS および Android アプリの開発には、以下のガイドラインを使用すべきです。このガイドラインはセキュリティに対応 しており、標準的なコーディングのベストプラクティスと合わせて遵守しなければなりません。 1 OS 上のネイティブの SSL ライブラリを使用します。サードパーティのライブラリには、 介入者攻撃のために利用される可能性のある HeartBleed のような脆弱性を持ったもの もあります。 2 3 アプリの相互 SSL 認証を使用してサーバー接続の認証を行います。 アプリの通信はすべて暗号化します。iOS 9 では、これを無効化しないでください。 4 5 アプリが介入者ではなく想定したサーバーと確実に通信するよう、 暗号化通信と相互認証の証明書には PIN 認証を使用します。介入者攻撃に つながる可能性のある新しいルートの追加ができるため、OS に保管されて いるルート認証には依存しないでください。 行動が予測できないため、事前にコンパイルされたサードパーティライブラリの使用は 避けてください。これらは例えば、広告ライブラリ、暗号化ライブラリ、グラフィックス ライブラリなどです。信頼できない場所からのライブラリのダウンロードはしないでください。 6 使用中のアプリが通信する必要がある信頼できるアプリとのみ、 アプリ間通信の有効化を行ってください。 安全な iOS/Android アプリ開発のベストプラクティス | ホワイトペーパー 2 7 アプリ間の通信は必ず暗号化してください。 8 9 暗号化されていないファイルを保管しないでください。暗号化ライブラリを 完全に活用するようにしてください。 必要不可欠ではない場合、個人が特定できる情報をアプリに保管しないでください。 必要な時にサーバーからダウンロードすることをお勧めします。 10 11 デバイスにパスワードを保管しないでください。どうしても必要な 場合、パスワードのハッシュ値のみを保管します。ルートを追加する こともできますが、介入者攻撃につながる可能性があります。 iOS アプリでは、機密情報および認証情報は KeyChain に保管します。 この方法は KeyChain に備わっているセキュリティを活用します。 12 機密情報は、SMS または APNS のメッセージで送信しないで ください。電話がロックされている場合でも、電話へのアクセスを持 つユーザーならば誰でも閲覧することができます。 安全な iOS/Android アプリ開発のベストプラクティス | ホワイトペーパー 3 13 アプリで使用するプラグインに注意してください。セキュリティの脆弱性をアプリに もたらすベクトルとなることが数多くあります。 14 15 信頼できるベンダーからのコードと開発ツールのみを使用し、コア開発 ライブラリおよびツールのダウンロードは、Apple または Google の実際の ダウンロードサイトからのみ行ってください。非公式のサイトからの開発 ツールのダウンロードはしないでください。アプリが XcodeGhost などの マルウェアに感染する恐れがあります。 アプリのコンパイル時には、位置独立実行(Position Independent Execution、PIE) を有効化してください。PIE は、悪意のあるアプリやツールがアプリ内の既知の 記憶場所にアクセスできる可能性を狭めるうえで重要です。 16 17 アプリ内で使用する実際に必要な許可のみを宣言します。 一般的なアプリから許可リストをコピーすることは避けてください。 アプリに API キーを埋め込むことには十分に警戒してください。API はクラウド上の 機密データやアカウントにアクセスするために使われることがあります。API キーは既に コピーされているものとみなします(改造されている、あるいはルート化されている 電話からコピーされる可能性があるからです)。アクセスコントロールは必ず、 パスワードの追加、またはユーザー自身が入力し、かつすべてのアプリに共通したもの ではない他のユーザー認証情報によって実施するようにします。 安全な iOS/Android アプリ開発のベストプラクティス | ホワイトペーパー 4 18 金融サービスのアプリでは、改造されている、あるいはルート化されている電話を チェックするコードの追加を検討し、感染している電話からの取引は許可しないよ うにします。 19 20 チームメンバーまたは外部の関係者によるコードの見直しを行います。 アプリおよびサーバーがデータを扱う方法を正確に記述したプライバシーポリシーを 実装します。プライバシーポリシーは社内の法務担当者の審査を受けるものとします。 プライバシーポリシーは、必ずアプリとともに発行し、アプリストアのエントリーに リンクさせるようにします。 21 Proofpoint Mobile Defense ツールでアプリを分析し、リリース前に その動作を検証します。 安全な iOS/Android アプリ開発のベストプラクティス | ホワイトペーパー 5 PROOFPOINT について Proofpoint Inc.(NASDAQ:PFPT)は次世代のサイバーセキュリティ企業です。組織が高度な脅威とコンプライアンスのリスクか ら今日の業務のあり方を保護できるようサポートしています。Proofpoint は、サイバーセキュリティの専門家たちが、ユーザー をターゲットとする ( 電子メール、モバイルアプリ、ソーシャルメディア経由の ) 高度な攻撃から彼らを保護し、ユーザーが作成 する重要な情報を保護し、万一の場合に素早く対応するために必要な知識とツールをチームで活用するお手伝いをいたします。 フォーチュン 100 企業の 50 パーセント以上を含むあらゆる規模の一流の組織は、現在のモバイルおよびソーシャルメディアに 対応した IT 環境向けに構築され、クラウドの力とビッグデータを生かした分析プラットフォームを活用してより高度な脅威に 対抗できる Proofpoint ソリューションに依存しています。 www.proofpoint.co.jp ©Proofpoint, Inc. Proofpoint は、米国およびその他の国々における Proofpoint, Inc. の 商標です。本書に記載されたその他すべての商標は、それぞれの所有者に帰属します。