Skip to content

MASTG-TEST-0266: Referências de APIs para Autenticação Biométrica Vinculada a Eventos

Visão Geral

Este teste verifica se o aplicativo acessa de forma insegura recursos sensíveis que deveriam ser protegidos por autenticação do usuário (ex: tokens, chaves), dependendo exclusivamente da API LocalAuthentication para controle de acesso, em vez de usar a API Keychain e exigir a presença do usuário.

A API LocalAuthentication (ex: LAContext) fornece autenticação do usuário (Touch ID, Face ID, senha do dispositivo), retornando apenas um resultado de sucesso ou falha. Entretanto, ela não armazena segredos de forma segura nem impõe qualquer segurança. Isso a torna suscetível a manipulação de lógica (ex: contornar uma verificação if authenticated { ... }).

Em contraste, a API Keychain armazena dados sensíveis com segurança e pode ser configurada com políticas de controle de acesso (ex: exigir presença do usuário como biometria) através de flags kSecAccessControl. Isso garante que a autenticação não seja apenas um booleano único, mas parte de um caminho seguro de recuperação de dados (fora do processo), tornando significativamente mais difícil contornar a autenticação.

Etapas

  1. Execute uma análise estática com radare2 para iOS para detectar o uso de LAContext.evaluatePolicy
  2. Execute uma análise estática com radare2 para iOS para detectar o uso de APIs Keychain, especialmente SecAccessControlCreateWithFlags (que deve vir acompanhada de outras APIs como SecItemAdd e SecItemCopyMatching).

Observação

A análise deve gerar como saída os locais onde LAContext.evaluatePolicy e as APIs Keychain são usadas na base de código (ou a falta de seu uso).

Avaliação

O teste falha se para cada recurso de dados sensível que mereça proteção:

  • LAContext.evaluatePolicy for usado explicitamente
  • Não houver chamadas para SecAccessControlCreateWithFlags exigindo presença do usuário com qualquer uma das flags possíveis

Demos

MASTG-DEMO-0041: Usos de LAContext.evaluatePolicy com r2 MASTG-DEMO-0047: Uso em Tempo de Execução do Keychain Sem Exigir a Presença do Usuário com Frida