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.stripTagsExt.util.Format.stripScriptsExt.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