lunes, 18 de junio de 2018

Ataques Web - Secuencia de comandos en sitios cruzados (XSS)

Las fallas XSS ocurren cada vez que una aplicación toma datos no confiables y los envía al navegador web sin una validación y codificación apropiada. XSS permite a los atacantes ejecutar secuencia de comandos en el navegador de la víctima los cuales pueden secuestrar las sesiones de usuario, destruir sitios web, o dirigir al usuario hacia un sitio malicioso.

Como detectarlo


Es vulnerable si no asegura que todas las entradas de datos ingresadas por los usuarios son codificadas adecuadamente; o si no se verifica en el momento de ingreso que los datos sean seguros antes de ser incluidos en la página de salida. Sin la codificación o validación debida, dicha entrada será tratada como contenido activo en el navegador. De utilizar una API de JavaScript insegura, se deben realizar la codificación o validación de las entradas.

Mediante el uso de herramientas automatizadas se pueden identificar ciertas vulnerabilidades de XSS. Sin embargo, cada aplicación construye las páginas de salida de forma diferente y utiliza distintos intérpretes en el navegador como JavaScript, ActiveX, Flash o Silverlight, dificultando la detección automática. Una cobertura completa requiere además de enfoques automáticos, una combinación de técnicas como la revisión manual de código y de pruebas de penetración.

Las tecnologías Web 2.0 como Ajax, hacen que XSS sea mucho más difícil de detectar mediante herramientas automatizadas.


Como prevenirlo


Prevenir XSS requiere mantener los datos no confiables separados del contenido activo del navegador.
  1. La opción preferida es codificar los datos no confiables basados en el contexto HTML (cuerpo, atributo, JavaScript, CSS, o URL) donde serán ubicados. 
  2. También se recomienda la validación de entradas positiva o de “lista blanca”, considerando que esta técnica no es una defensa completa ya que muchas aplicaciones requieren aceptar caracteres especiales como parte de las entradas válidas. Dicha validación debe, en la medida de lo posible, validar el largo, los caracteres, el formato y reglas de negocio que debe cumplir el dato antes de aceptarlo como entrada. 
  3. Para contenido en formato enriquecido, considere utilizar bibliotecas de auto sanitización como AntiSamy de OWASP o el proyecto sanitizador de HTML en Java. 
  4. Considere utilizar políticas de seguridad de contenido (CSP) para defender contra XSS la totalidad de su sitio.

No hay comentarios:

Publicar un comentario