Voltar ao catalogoFE-05
Logout nao limpa credenciais biometricas do SecureStorage
HighAchado ConfirmadoFrontendRodada 4
Evidencia
`angular/src/app/logout/logout-service.service.ts` — o fluxo de logout limpa localStorage e sessionStorage mas nao limpa o SecureStorage do Capacitor.
Impacto Tecnico
Apos logout, o refresh token permanece no armazenamento seguro do dispositivo. Se o login biometrico for reativado ou o dispositivo for compartilhado, o token antigo pode ser reutilizado.
Impacto de Negocio
Dispositivos compartilhados ou roubados mantem capacidade de login biometrico mesmo apos logout explicito do usuario.
Recomendacao
Adicionar chamada a SecureStoragePlugin.remove('biometric_refresh_token') no fluxo de logout.
Arquivos Afetados
angular/src/app/logout/logout-service.service.ts
Acoes Relacionadas
{
"id": "FE-05",
"title": "Logout nao limpa credenciais biometricas do SecureStorage",
"severity": "High",
"type": "achado confirmado",
"category": "frontend",
"description": "O metodo de logout chama `localStorage.clear()` e `sessionStorage.clear()` mas NAO chama `SecureStorage.remove()` para limpar o refresh token armazenado no Keychain/EncryptedSharedPreferences.",
"evidence": "`angular/src/app/logout/logout-service.service.ts` — o fluxo de logout limpa localStorage e sessionStorage mas nao limpa o SecureStorage do Capacitor.",
"technicalImpact": "Apos logout, o refresh token permanece no armazenamento seguro do dispositivo. Se o login biometrico for reativado ou o dispositivo for compartilhado, o token antigo pode ser reutilizado.",
"businessImpact": "Dispositivos compartilhados ou roubados mantem capacidade de login biometrico mesmo apos logout explicito do usuario.",
"recommendation": "Adicionar chamada a `SecureStoragePlugin.remove('biometric_refresh_token')` no fluxo de logout.",
"files": [
"angular/src/app/logout/logout-service.service.ts"
],
"pass": 4,
"relatedActions": [
"ACT-7.2.1"
]
}
Descricao
O metodo de logout chama
localStorage.clear()esessionStorage.clear()mas NAO chamaSecureStorage.remove()para limpar o refresh token armazenado no Keychain/EncryptedSharedPreferences.