跳过内容

MASTG-TEST-0268: 引用允许回退到非生物识别认证的 API

概述

此测试检查应用程序是否使用了依赖于用户密码而不是生物识别的身份验证机制,或者在生物识别身份验证失败时允许回退到设备密码。 具体来说,它检查是否使用了 kSecAccessControlDevicePasscodekSecAccessControlUserPresence

Apple 文档中将 kSecAccessControlUserPresence 标志描述为通常使用的选项,因为它“让系统根据当前情况选择一种机制”。 但是,在某些情况下(例如,尚未配置生物识别时),这允许回退到密码,这被认为比单独需要生物识别更弱,因为密码更容易受到损害(例如,通过肩窥)。

注意:此测试不考虑 LocalAuthentication 流程的 LAPolicy.deviceOwnerAuthentication,因为不应单独使用它。 请参阅 引用用于事件绑定的生物识别认证的 API

步骤

  1. 使用 radare2 for iOS 运行静态分析扫描,以检测使用带有 kSecAccessControlUserPresencekSecAccessControlDevicePasscode 标志的 SecAccessControlCreateWithFlags

观察

输出应包含使用相关 API 的位置列表。

评估

如果应用程序将 SecAccessControlCreateWithFlags 与需要保护的任何敏感数据资源的 kSecAccessControlUserPresencekSecAccessControlDevicePasscode 标志一起使用,则测试失败。

只有当应用程序将 SecAccessControlCreateWithFlags 与更严格的标志(例如 kSecAccessControlBiometryAnykSecAccessControlBiometryCurrentSet)一起使用时,测试才能通过,以强制对任何需要保护的敏感数据资源进行仅生物识别访问(其中 kSecAccessControlBiometryCurrentSet 被认为是最安全的)。

注意:使用 kSecAccessControlUserPresencekSecAccessControlDevicePasscode 本身不是漏洞,但在高安全性的应用程序中(例如,金融、政府、医疗保健),它们的使用可能代表一种弱点或错误配置,从而降低了预期的安全态势。 因此,此问题最好归类为安全弱点或加固问题,而不是关键漏洞。

演示

MASTG-DEMO-0043:r2 中 kSecAccessControlUserPresence 的用法