MASTG-TEST-0268: Referências a APIs que Permitem Retorno para Autenticação Não Biométrica
Visão Geral¶
Este teste verifica se o aplicativo utiliza mecanismos de autenticação que dependem do código de acesso do usuário em vez de biometria, ou se permite o fallback para o código de acesso do dispositivo quando a autenticação biométrica falha. Especificamente, verifica o uso de kSecAccessControlDevicePasscode ou kSecAccessControlUserPresence.
A flag kSecAccessControlUserPresence é descrita na documentação da Apple como a opção normalmente utilizada, pois "permite que o sistema escolha um mecanismo, dependendo da situação atual". No entanto, isso permite o fallback para o código de acesso em alguns casos (por exemplo, quando a biometria ainda não está configurada), o que é considerado mais fraco do que exigir apenas biometria, porque os códigos de acesso são mais suscetíveis a comprometimento (por exemplo, através de shoulder surfing).
Nota: Este teste não considera LAPolicy.deviceOwnerAuthentication para fluxos de LocalAuthentication, pois isso não deve ser usado isoladamente. Consulte Referências de APIs para Autenticação Biométrica Vinculada a Eventos.
Passos¶
- Execute uma análise estática usando radare2 para iOS para detectar o uso de
SecAccessControlCreateWithFlagscom as flagskSecAccessControlUserPresenceoukSecAccessControlDevicePasscode.
Observação¶
A saída deve conter uma lista de locais onde as APIs relevantes são utilizadas.
Avaliação¶
O teste falha se o aplicativo usar SecAccessControlCreateWithFlags com as flags kSecAccessControlUserPresence ou kSecAccessControlDevicePasscode para qualquer recurso de dados sensíveis que necessite de proteção.
O teste passa apenas se o aplicativo usar SecAccessControlCreateWithFlags com flags mais rigorosas, como kSecAccessControlBiometryAny ou kSecAccessControlBiometryCurrentSet para impor acesso exclusivamente biométrico para qualquer recurso de dados sensíveis que necessite de proteção (sendo kSecAccessControlBiometryCurrentSet considerado o mais seguro).
Nota: O uso de kSecAccessControlUserPresence ou kSecAccessControlDevicePasscode não é inerentemente uma vulnerabilidade, mas em aplicações de alta segurança (por exemplo, finanças, governo, saúde), seu uso pode representar uma fraqueza ou má configuração que reduz a postura de segurança pretendida. Portanto, esse problema é melhor categorizado como uma fraqueza de segurança ou questão de hardening, não como uma vulnerabilidade crítica.
Demos¶
MASTG-DEMO-0043: Usos do kSecAccessControlUserPresence com r2