Bypass Biométrico
La autenticación biométrica que solo corre del lado del cliente puede ser eludida parcheando el binario de la app — el servidor debe validar la sesión de forma independiente.
Cómo Funciona
Si la autenticación biométrica solo activa un booleano en tu app y el servidor confía en cualquier request con un token guardado, un atacante puede hookear la función biométrica con Frida para que siempre retorne 'éxito'. El servidor nunca verifica que la autenticación biométrica realmente ocurrió.
// MAL: resultado biométrico confiado solo del lado del cliente
const result = await LocalAuthentication.authenticateAsync();
if (result.success) {
setIsAuthenticated(true); // el atacante hookea esto para que siempre sea true
navigateToDashboard();
}// BIEN: el éxito biométrico intercambia por un token de sesión fresco del servidor
const result = await LocalAuthentication.authenticateAsync();
if (result.success) {
// obtén un token de sesión fresco — el servidor verifica el challenge biométrico
const session = await api.post('/auth/biometrico', { challengeResponse });
storeSecureToken(session.token);
}Ejemplo Real
Investigadores de WithSecure demostraron bypass biométrico en múltiples apps bancarias usando Frida para hookear el callback biométrico y retornar éxito sin ninguna huella. Las apps que solo verificaban el resultado del lado del cliente fueron completamente comprometidas.
Cómo Prevenirlo
- Usa un challenge-response del lado del servidor para auth biométrica — el éxito biométrico debe intercambiar por un token de sesión fresco
- Guarda los tokens de autenticación en el Secure Enclave (iOS) o Android Keystore, vinculados a la verificación biométrica
- Nunca tomes decisiones de autorización basadas puramente en resultados biométricos del lado del cliente
- Usa el CryptoObject de la API BiometricPrompt para vincular operaciones criptográficas a la autenticación biométrica exitosa
Tecnologías Afectadas
Data Hogo detecta esta vulnerabilidad automáticamente.
Escanea Tu Repo GratisVulnerabilidades Relacionadas
Hijacking de Deep Links
mediumLos esquemas de URL personalizados sin verificación de host permiten que apps maliciosas intercepten los deep links de tu app y roben tokens OAuth o parámetros sensibles.
Exposición del Portapapeles
lowLos datos sensibles copiados al portapapeles (contraseñas, tokens, números de tarjeta) persisten ahí indefinidamente y pueden ser leídos por cualquier app.
Capturas de Pantalla No Prevenidas
lowLas pantallas bancarias y de pago sin protección contra capturas permiten que datos sensibles sean capturados por malware o aparezcan en la pantalla de apps recientes de Android.
Certificate Pinning Faltante
highSin certificate pinning, los atacantes en la misma red pueden interceptar el tráfico HTTPS de tu app con una autoridad de certificación falsa.