Skip to content

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

  1. Execute uma análise estática usando radare2 para iOS para detectar o uso de SecAccessControlCreateWithFlags com as flags kSecAccessControlUserPresence ou kSecAccessControlDevicePasscode.

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