mediumCWE-926A01:2021

Hijacking de Deep Links

Los 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.

Cómo Funciona

Cuando registras un esquema de URL como myapp://, cualquier app puede reclamar ese esquema. Si tu flujo OAuth redirige a myapp://callback?token=xyz, una app maliciosa registrada con el mismo esquema lo intercepta primero y roba el token. Android e iOS ambos permiten que múltiples apps manejen el mismo esquema.

Código Vulnerable
// MAL: esquema custom sin verificación de host — interceptable por cualquier app
// app.json (Expo)
{
  "scheme": "myapp"  // cualquier app puede interceptar links myapp://
}
Código Seguro
// BIEN: usa universal links (HTTPS) que se verifican por dominio
// app.json (Expo)
{
  "scheme": "myapp",
  "intentFilters": [{
    "action": "VIEW",
    "data": [{ "scheme": "https", "host": "myapp.com" }]
    // iOS: requiere archivo apple-app-site-association en tu dominio
  }]
}

Ejemplo Real

CVE-2019-14801 demostró hijacking de deep links en múltiples apps populares de Android. Los atacantes publicaron apps con esquemas de URL coincidentes en Play Store, interceptando tokens OAuth de apps legítimas.

Cómo Prevenirlo

  • Usa Universal Links (iOS) y App Links (Android) con HTTPS en vez de esquemas URL personalizados para OAuth
  • Valida el URI de redirección en el servidor contra una whitelist de URIs permitidos
  • Usa PKCE (Proof Key for Code Exchange) en flujos OAuth para vincular tokens a la app que inicia el flujo
  • Nunca pases tokens ni datos sensibles en parámetros de URL — usa sesiones del lado del servidor

Tecnologías Afectadas

React Nativeiosandroid

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas