MASTG-TEST-0268 非生体認証へのフォールバックを許可する API への参照 (References to APIs Allowing Fallback to Non-Biometric Authentication)

概要

このテストでは、アプリが生体認証ではなくユーザーのパスコードに依存する認証メカニズムを使用しているか、または生体認証が失敗した場合にデバイスのパスコードへのフォールバックを許可する認証メカニズムを使用しているかをチェックします。具体的には、kSecAccessControlDevicePasscodearrow-up-right または kSecAccessControlUserPresencearrow-up-right の使用をチェックします。

kSecAccessControlUserPresence フラグは「現在の状況に応じて、システムにメカニズムを選択させる」ため、一般的に使用されるオプションとして Apple のドキュメントに記載されています。しかし、これは場合によっては (生体認証がまだ設定されていない場合など) パスコードへのフォールバックを可能にします。パスコードは (ショルダーサーフィンなどによる) 侵害の影響を受けやすいため、生体認証のみを要求する場合よりも脆弱であると考えられています。

注: このテストでは LocalAuthentication フローにおいて LAPolicy.deviceOwnerAuthenticationarrow-up-right を考慮していません。これは単独で使用すべきではないためです。イベントバウンド型生体認証用の API への参照 (References to APIs for Event-Bound Biometric Authentication) を参照してください。

手順

  1. radare2 for iOS で静的解析スキャンを実行し、kSecAccessControlUserPresence または kSecAccessControlDevicePasscode フラグを指定した SecAccessControlCreateWithFlags の使用を検出します。

結果

出力には関連する API が使用されている場所のリストを含む可能性があります。

評価

保護が必要な機密データリソースに対して、アプリが kSecAccessControlUserPresence または kSecAccessControlDevicePasscode フラグを指定した SecAccessControlCreateWithFlags を使用している場合、そのテストは不合格です。

アプリが kSecAccessControlBiometryAnyarrow-up-right, kSecAccessControlBiometryCurrentSetarrow-up-right などのより厳しいフラグを指定した SecAccessControlCreateWithFlags を使用して、保護が必要な機密データリソースに対するアクセスを生体認証のみに強制する場合にのみ、そのテストは合格です (kSecAccessControlBiometryCurrentSet が最も安全であると考えられています)。

注: kSecAccessControlUserPresencekSecAccessControlDevicePasscode の使用は本質的に脆弱性ではありませんが、高セキュリティアプリケーション (金融、行政、医療など) では、これらの使用は弱点や設定ミスとなり、意図したセキュリティ態勢を減らす可能性があります。したがって、この問題は重大な脆弱性ではなく、セキュリティの弱点または堅牢化の問題として分類する方が適切です。

Last updated

Was this helpful?