mediumCWE-20M4:2024

Validación Insuficiente de Input/Output

Apps móviles que no validan input de usuario o sanitizan output son vulnerables a ataques de inyección, corrupción de datos y comportamiento inesperado.

Cómo Funciona

Las apps móviles reciben input de muchas fuentes: campos de texto, deep links, códigos QR, clipboard y comunicación entre apps. Sin validación, input malicioso puede causar SQL injection en bases de datos locales, XSS en WebViews, path traversal en operaciones de archivos o crashes por datos malformados. La validación de output es igual de importante — mostrar datos sin sanitizar en WebViews puede ejecutar JavaScript arbitrario.

Código Vulnerable
// Deep link handler without validation
Linking.addEventListener('url', ({ url }) => {
  const path = new URL(url).pathname;
  navigation.navigate(path);
});
Código Seguro
// Deep link handler with validation
const ALLOWED_ROUTES = ['/home', '/profile', '/settings'];
Linking.addEventListener('url', ({ url }) => {
  const path = new URL(url).pathname;
  if (ALLOWED_ROUTES.includes(path)) {
    navigation.navigate(path);
  }
});

Ejemplo Real

Una vulnerabilidad de 2021 en la app Android de TikTok permitía a atacantes crear deep links que robaban sesiones de usuario. La app no validaba parámetros de deep links, habilitando inyección de JavaScript a través de un componente WebView.

Cómo Prevenirlo

  • Valida todo input de deep links, códigos QR e intents
  • Sanitiza datos antes de mostrarlos en WebViews
  • Usa allowlists para rutas de navegación
  • Valida tipos de datos y rangos en todo input de usuario

Tecnologías Afectadas

MobileReact NativeFlutter

Data Hogo detecta esta vulnerabilidad automáticamente.

Escanea Tu Repo Gratis

Vulnerabilidades Relacionadas