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におけるセンシティブデータの管理
アプリケーションはすべてのセンシティブデータが適切に管理されていることを保証する必要があります。値型である Data はSwiftであるため、データに割り当てられた追加のポインタは割り当てられたバイトの新しいコピーを生じさせます。
そのような操作は割り当てられるセンシティブなバイト数を軽減するために最小限にするべきです。
割り当てられたバイトは inout 引数として渡して参照渡しにし、使用が完了したら消去することができます。
次のコードスニペットは割り当てられたバイトを inout 引数として渡す方法を示します:
次のコードスニペットは変数を消去する方法を示します: Data variable:
IOS04. センシティブ入力の自動補正キャッシュを無効化
アプリケーションは、センシティブなデータを要求する入力について自動補正キャッシュを無効にする必要があります。これにより、デバイスにアクセスできる攻撃者がオートコンプリートで提案された文字列を使用してセンシティブなテキスト入力データを閲覧することを防ぎます。
アプリケーションは自動補正キャッシュを無効にするために次のいずれかの操作を実行できます:
次のプロパティを設定します:
secureTextEntryフィールドをtrue.次のプロパティを設定します:
autoCorrectionTypeフィールドをUITextAutocorrectionType.no.
IOS05. センシティブデータのコピー/貼り付けを無効化
アプリケーションはセンシティブデータのコピー/貼り付けメニューを無効にする必要があります。これにより、デバイスにアクセスできる攻撃者がコピーされたデータを貼り付けて閲覧することを防ぎます。次のサンプルコードはコピー/貼り付けメニューを無効にします:
IOS06. App Storeでのアプリバージョン管理
ユーザーは既に購入またはインストール済みの以前のアプリバージョンを再ダウンロードできるため、古いデバイスで現在のバージョンがサポートされなくなった場合でも顧客がアプリを使用できる可能性があります。これらのバージョンを利用可能にしたくない場合は、App Store Connectの「Manage Your Apps」モジュールの「Rights and Pricing」セクションでアプリの以前のバージョンの可用性を管理できます。
詳細については、次を参照してください: AppStore Connect.
セキュリティの観点からは、攻撃対象をできるだけ小さく保つことが推奨されます。古いバージョンを維持するとより広いユーザーに届きますが、既にセキュリティが破られている可能性のある古いファームウェアに晒されるリスクもあります。可能であれば、1つのバージョン(最新のもの)を公開し、代わりにビルド設定でより広いiOSバージョンをサポートするように構成するのが最良です。
デプロイメントターゲットでアプリの「Simulator」を無効にする
デプロイメントターゲットにはiOSデバイスのみを含めるべきです。
App Store Connectでアプリの「Apple Silicon Mac Availability」を無効にする
Mac M1上でiOSアプリを実行することは、アプリケーションのバイナリやサンドボックスデータにアクセスしやすいため、はるかに安全性が低くなります。
インストールをM1 Macで許可しないようにするために、リスクを低減するためにApp Store Connectでアプリの「Apple Silicon Mac Availability」を無効にしてください。
「Apple Silicon Mac Availability」を無効にする方法の詳細については、Appleの文書を参照してください: ここ
IOS07. アプリケーション改ざんの防止
アプリケーションコードへの悪意あるハッキングを防ぐために、実行時にアプリケーションのバイナリの整合性を検証することが推奨されます。これは、__TEXTセグメントの__textセクションのチェックサムを計算することでアプリケーション内に実装できます。
実装の詳細については、次を参照してください: github linkチェックサムを計算するコードを保護するためには強力な難読化が必要です。
改ざん攻撃に関するリスクについては、次のOWASPのリンクを確認してください: OWASP link.
IOS08. Xcodeコンパイラのセキュリティおよび難読化オプション
アプリケーションは逆アセンブルをより複雑にしてセキュリティを高め、難読化を提供するXcodeオプションを使用する必要があります。
Xcodeプロジェクトで次の設定を行うことが推奨されます:
最終更新
役に立ちましたか?