Saltar a contenido

Cordova Cross-Site Scripting (XSS)

Cross-Site Scripting (XSS) en Cordova

Descripción

Los ataques de Cross-Site Scripting (XSS) en dispositivos móviles son un tipo de inyección en el que se inyectan scripts maliciosos en contenido que, de otro modo, sería benigno y de confianza. Los ataques XSS ocurren cuando un atacante puede inyectar código malicioso a través de:

  • Entrada de comunicación entre procesos (IPC) que no es de confianza
  • Ataque Man-in-the-Middle
  • Contenido no confiable almacenado en la aplicación del servidor web
  • Entrada de archivo local no confiable

Script de ejemplo para probar la presencia de XSS

<script>alert("Ostorlab XSS!")</script>

<img src="http://ostorlab.co/js_xss2" onerror=alert(document.cookie)>

Las vulnerabilidades XSS para aplicaciones Cordova son críticas, ya que permiten acceder a la funcionalidad nativa en el teléfono objetivo y podrían provocar un acceso no autorizado a contactos, mensajes, cámaras, audio y ubicación.

Recomendación

La aplicación debe validar todas las entradas proporcionadas y usar una API de formato HTML segura. El enfoque recomendado es definir una lista de caracteres aceptables y permitir solo esos. Por ejemplo, los caracteres aceptables serían letras mayúsculas, letras minúsculas y números (es decir, a-z, A-Z y 0-9).

Los frameworks ofrecen métodos para validar la entrada y prevenir las vulnerabilidades XSS, y los frameworks modernos (Angular JS 2, React JS) escapan automáticamente la entrada del usuario:

Para escapar entradas usando Sencha Ext JS, se podrían usar los siguientes métodos:

  • Ext.util.Format.stripTags
  • Ext.util.Format.stripScripts
  • Ext.util.Format.htmlEncode/Decode

Enlaces

Estándares

  • OWASP_MASVS_L1:
    • MSTG_PLATFORM_2
  • OWASP_MASVS_L2:
    • MSTG_PLATFORM_2
  • CWE_TOP_25:
    • CWE_79
    • CWE_20
  • PCI_STANDARDS:
    • REQ_2_2
    • REQ_6_2
    • REQ_6_3
    • REQ_11_3
  • OWASP_MASVS_v2_1:
    • MASVS_CODE_4
  • SOC2_CONTROLS:
    • CC_2_1
    • CC_3_4
    • CC_4_1
    • CC_7_1
    • CC_7_2
    • CC_7_4
    • CC_7_5