iOS
iOS01. 機微なデータ漏洩の防止
アプリケーションのライフサイクルで機微なデータを管理するために、次の方法を使用してください:
applicationWillResignActive:画面をクリアし、表示されている機微なデータを暗号化します。表示をクリアするには、次のコードを使用して表示コンテンツを非表示にできます:
UIApplication.shared.keyWindow.hidden = trueapplicationDidBecomeActive:機微なデータを表示および復号化するために使用します。UIScreenCapturedDidChangeNotification:画面録画を検出します。表示をクリアし、機微なデータを暗号化してください。
iOS02. Xcode出力からシンボルを削除する
アプリケーションは最終リリースのバイナリからすべてのシンボルを削除する必要があります。
デバッグ情報やその他のシンボルを削除するために、Xcodeプロジェクトで次の設定を行うことを推奨します:
DEPLOYMENT_POSTPROCESSING = YES
GCC_GENERATE_DEBUGGING_SYMBOLS = NO
STRIP_INSTALLED_PRODUCT = YES
STRIP_STYLE = all
COPY_PHASE_STRIP = YESiOS03. Swiftでの機微なデータ管理
アプリケーションは機微なデータが適切に管理されることを保証しなければなりません。Swiftでは、 Data は値型です。追加の参照を代入すると、割り当てられたバイトの新しいコピーが作成される可能性があります。
これらのパターンを最小限にして、割り当てられる機微なバイト数を減らしてください。
割り当てられたバイトを inout 引数として渡して参照渡しにし、使用後にワイプしてください。
以下のコードスニペットは、割り当てられたバイトを inout 引数として渡す方法を示しています:
次のコードスニペットは、 Data 変数をワイプする方法を示しています:
iOS04. 機微な入力に対する自動補正キャッシュを無効にする
アプリケーションは機微なデータを要求する入力に対して自動補正キャッシュを無効にする必要があります。これにより、デバイスにアクセスできる攻撃者がオートコンプリートの候補文字列を使って機微なテキスト入力データを閲覧することを防ぎます。
アプリケーションは自動補正キャッシュを無効にするために次のいずれかの操作を行うことができます:
次のフィールドを設定します:
secureTextEntryフィールドをtrue.次のフィールドを設定します:
autoCorrectionTypeフィールドをUITextAutocorrectionType.no.
iOS05. 機微なデータのコピー&ペーストを無効にする
アプリケーションは機微なデータに対するコピー/ペーストメニューを無効にする必要があります。これにより、デバイスにアクセスできる攻撃者がコピーされたデータをペーストして閲覧することを防ぎます。次のサンプルコードはコピー/ペーストメニューを無効にします:
iOS06. App Storeでのアプリバージョン管理
エンドユーザーは既に購入またはインストールした過去のアプリバージョンを再ダウンロードできます。これにより、現在のバージョンでサポートされなくなった古いデバイスでの利用が可能になります。これらのバージョンを利用可能にしたくない場合は、App Store ConnectのManage Your AppsモジュールのRights and Pricingセクションで過去のアプリバージョンの可用性を管理してください。
詳細は、次を参照してください: AppStore Connect.
セキュリティの観点から、攻撃対象面はできる限り小さく保ってください。古いバージョンを残すと到達範囲が広がります。また、既知の弱点を持つ古いファームウェアにソリューションをさらす可能性もあります。可能であれば一度に1つのバージョン(最新)だけを利用可能にすることを推奨します。ビルド設定を調整してより広い範囲のiOSバージョンをサポートすることでデバイス対応を拡張してください。
App Store Connectでアプリの「Apple Silicon Macの利用可能性」を無効にする
Mac M1上でiOSアプリケーションを実行することは、アプリケーションのバイナリとサンドボックスデータの両方にアクセスしやすくなるため、はるかに安全性が低くなります。
AppleシリコンMacへのインストールを防ぎリスクを軽減するために、App Store Connectでアプリの「Apple Silicon Macの利用可能性」を無効にしてください。
詳細については、次の Appleのドキュメント.
iOS07. アプリケーション改ざんの防止
アプリケーションコードへの悪意あるハッキングを防ぐために、実行時にアプリケーションのバイナリの整合性を検証することを推奨します。これは、__TEXTセグメントの__textセクションのチェックサムを計算することでアプリ内で実装できます。
実装の詳細については、次を参照してください: github link。チェックサムを計算するコードを保護するためには強力な難読化が必要です。
改ざん攻撃に関連するリスクについては、次を参照してください: OWASP.
iOS08. Xcodeコンパイラのセキュリティおよび難読化オプション
セキュリティを高め、逆アセンブルを複雑にするXcodeオプションを使用してください。
Xcodeプロジェクトで次の設定を行うことを推奨します:
最終更新
役に立ちましたか?