Certificate Pinning Faltante
Sin certificate pinning, los atacantes en la misma red pueden interceptar el tráfico HTTPS de tu app con una autoridad de certificación falsa.
Cómo Funciona
TLS normalmente confía en cualquier certificado firmado por una CA confiable del sistema. En una red corporativa o pública, un proxy con un cert de CA personalizado puede interceptar todo el tráfico HTTPS. El certificate pinning hace que tu app acepte solo tu certificado específico o clave pública, bloqueando cualquier proxy MITM independientemente de su CA.
// MAL: fetch estándar — confía en cualquier certificado del sistema
const response = await fetch('https://api.myapp.com/usuario', {
headers: { Authorization: `Bearer ${token}` }
// sin pinning — interceptable por proxies corporativos o APs maliciosos
});// BIEN: usa react-native-ssl-pinning para certificate pinning
import { fetch } from 'react-native-ssl-pinning';
const response = await fetch('https://api.myapp.com/usuario', {
method: 'GET',
sslPinning: { certs: ['fingerprint_sha256_del_cert'] }, // rechaza otros certs
headers: { Authorization: `Bearer ${token}` }
});Ejemplo Real
Los pen testers rutinariamente eluden la seguridad de apps móviles configurando un proxy Burp Suite en una red WiFi compartida. Las apps sin certificate pinning exponen todas sus llamadas a la API, tokens y datos de usuario a este ataque.
Cómo Prevenirlo
- Implementa certificate pinning usando react-native-ssl-pinning (RN) o TrustKit (iOS/Android nativo)
- Pínea la clave pública (SPKI) en vez del certificado completo para sobrevivir renovaciones de cert
- Siempre provee al menos un pin de respaldo en caso de que necesites rotar tu certificado principal
- Prueba el certificate pinning con una herramienta proxy (Charles, Burp Suite) para verificar que funciona antes del lanzamiento
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.
Detección de Root/Jailbreak Faltante
mediumEjecutar una app financiera o de salud en un dispositivo rooteado o con jailbreak significa que todos los controles de seguridad pueden ser eludidos por el dueño del dispositivo.