Solución de los resultados de Web Security Scanner

>

Interpreta, reproduce y corrige los hallazgos de Web Security Scanner.

Clases de vulnerabilidad

Web Security Scanner detecta las siguientes clases de vulnerabilidades:

  • Secuencia de comandos entre sitios (XSS)
  • Inyección Flash
  • Contenido mixto
  • Contraseñas en texto claro
  • Uso de bibliotecas JavaScript no seguras

Si se encuentra alguno de estos, el resultado se resaltará para que lo explores en detalle.

Impacto en los registros

Los registros de los análisis de Web Security Scanner aparecen en tus archivos de registro. Por ejemplo, Web Security Scanner genera solicitudes para strings inusuales como ~sfi9876 y /sfi9876. Esto permite que el análisis examine las páginas de error de tu aplicación. Estas solicitudes de página intencionalmente no válidas aparecerán en tus registros.

Solución de los resultados de Web Security Scanner

A continuación, se muestra información sobre cómo solucionar distintos tipos de resultados de los análisis de seguridad de la Web.

XSS

Las pruebas de inyección de la secuencia de comandos entre sitios (XSS) de Web Security Scanner simulan un ataque de inyección mediante la inserción de una string de prueba benigna en campos que el usuario puede editar y, luego, realizan diversas acciones del usuario. Los detectores personalizados observan el navegador y el DOM durante esta prueba para determinar si una inyección fue exitosa y evaluar su potencial de vulnerabilidad.

Si el JavaScript de la string de prueba se ejecuta correctamente, inicia el depurador de Chrome. Cuando una string de prueba se puede ejecutar, es posible inyectar y ejecutar JavaScript en la página. Si un atacante encontró este problema, podría ejecutar JavaScript de su elección como usuario (víctima) que hace clic en un vínculo malicioso.

En algunas circunstancias, la aplicación de prueba puede modificar la string de prueba antes de que el navegador la analice. Por ejemplo, la aplicación podría validar la entrada o limitar el tamaño de un campo. Cuando el navegador intenta ejecutar esta string de prueba modificada, es probable que falle y genere un error de ejecución de JavaScript. Este es un problema de inyección, pero tal vez no sea posible explotarlo.

Para abordar este problema, debes confirmar si el problema es una vulnerabilidad XSS. Para ello, la verificación manual si las modificaciones de la string de prueba se pueden derivar. Para obtener información detallada sobre cómo hacerlo, consulta Secuencia de comandos entre sitios.

Hay varias formas de solucionar este problema. La corrección recomendada es evitar todos los resultados y usar un sistema de plantillas que admita la evasión automática contextual.

XSS_ANGULAR_CALLBACK

Puede ocurrir una vulnerabilidad de la secuencia de comandos entre sitios (XSS) en los módulos AngularJS cuando Angular interpola una string proporcionada por el usuario. Inyectar valores proporcionados por el usuario en una interpolación AngularJS puede permitir los siguientes ataques:

  • Un atacante puede inyectar un código arbitrario en la página que procesan los navegadores.
  • Un atacante puede realizar acciones en nombre del navegador de la víctima en el origen de la página.

Para reproducir esta vulnerabilidad potencial, sigue el vínculo de la URL de reproducción en Google Cloud Console después de ejecutar el análisis. Este vínculo abrirá directamente un diálogo de alerta o inyectará la string XSSDETECTED para demostrar que el ataque puede ejecutar el código. En el caso de la inyección, puedes abrir las herramientas para desarrolladores de tu navegador y buscar XSSDETECTED para encontrar la posición exacta de la inyección.

XSS_ERROR

Un resultado de XSS_ERROR es un error potencial de XSS debido a una falla de JavaScript. En algunas circunstancias, la aplicación de prueba puede modificar la string de prueba antes de que el navegador la analice. Cuando el navegador intenta ejecutar esta string de prueba modificada, es probable que falle y genere un error de ejecución de JavaScript. Este es un problema de inyección, pero tal vez no sea posible explotarlo.

Para abordar este problema, debes confirmar si el problema es una vulnerabilidad XSS. Para ello, la verificación manual si las modificaciones de la string de prueba se pueden derivar. Para obtener información detallada sobre cómo hacerlo, consulta Secuencia de comandos entre sitios.

ROSETTA_FLASH

Web Security Scanner podría detectar que el valor de un parámetro de solicitud se refleja al inicio de una respuesta, por ejemplo, en las solicitudes que usan JSONP. Esto también se conoce como inyección Flash. En ciertas circunstancias, un atacante puede hacer que el navegador ejecute la respuesta como si fuera un archivo Flash proporcionado por la aplicación web vulnerable.

Para solucionar este problema, no incluyas datos que el usuario pueda controlar al inicio de una respuesta HTTP.

MIXED_CONTENT

Web Security Scanner analiza el tráfico HTTP de manera pasiva, y detecta cuando se realiza una solicitud de un archivo JavaScript o CSS mediante HTTP en el contexto de una página HTTPS. En esta situación, un atacante intermedio podría alterar el recurso HTTP y obtener acceso completo al sitio web que carga el recurso o supervisar las acciones del usuario.

Para solucionar esto, usa vínculos HTTP relativos; por ejemplo, reemplaza http:// por //.

OUTDATED_LIBRARY

Web Security Scanner puede detectar que la versión de una biblioteca incluida contiene un problema de seguridad. Este es un analizador basado en firmas que intenta identificar la versión de la biblioteca en uso y la compara con una lista conocida de bibliotecas vulnerables. Los falsos positivos son posibles si falla la detección de la versión o si la biblioteca se parcheó manualmente.

Soluciona este problema mediante la actualización a una versión segura conocida de la biblioteca incluida.

CLEAR_TEXT_PASSWORD

Web Security Scanner puede detectar que la aplicación podría estar transmitiendo un campo de contraseña en texto no encriptado. Un atacante puede escuchar el tráfico de red y detectar el campo de contraseña.

Para proteger la información sensible que pasa entre el cliente y el servidor, siempre toma las siguientes precauciones:

  • Usa certificados TLS/SSL.
  • Siempre usa HTTPS en páginas que incluyan campos de contraseña.
  • Asegúrate de que los atributos de acción de formulario siempre apunten a una URL HTTPS.

INVALID_CONTENT_TYPE

Web Security Scanner podría detectar que se cargó un recurso que no coincide con el encabezado HTTP de Content-Type de la respuesta. En esta situación, la aplicación muestra contenido sensible con un tipo de contenido no válido o sin un encabezado X-Content-Type-Options: nosniff.

Para corregir esta vulnerabilidad, asegúrate de lo siguiente:

  • Las respuestas JSON se entregan con el encabezado Content-Type application/json.
  • Otras respuestas sensibles se envían con los tipos MIME adecuados
  • Entrega contenido con el encabezado HTTP X-Content-Type-Options: nosniff

INVALID_HEADER

Web Security Scanner podría detectar que un encabezado de seguridad tiene un error de sintaxis, lo que da como resultado un encabezado con formato incorrecto o no válido. Como resultado, los navegadores ignoran el encabezado.

En las siguientes secciones, se describen los encabezados válidos.

Encabezado Referrer-Policy

Una política de referencia válida contiene uno de los siguientes valores:

  • Una string vacía
  • no-referrer
  • no-referrer-when-downgrade
  • same-origin
  • origin
  • strict-origin
  • origin-when-cross-origin
  • strict-origin-when-cross-origin
  • unsafe-url

Encabezado X-Frame-Options

Un encabezado X-Frame-Options válido solo puede tener los siguientes valores:

  • DENY: no permitir todos los marcos
  • SAMEORIGIN: permite enmarcar si la URL de nivel superior es del mismo origen.
  • ALLOW-FROM URL

ALLOW-FROM URL no es compatible con Chrome. No se permiten múltiples X-Frame-Options.

Encabezado X-Content-Type-Options

Un encabezado X-Content-Type-Options válido solo puede tener un valor: nosniff.

Encabezado X-XSS-Protection

Un encabezado X-XSS-Protection válido debe comenzar con 0 ("inhabilitar") o 1 ("habilitar"). Luego, solo si habilitas la protección, puedes agregar hasta dos opciones:

  • mode=block mostrará una página en blanco en lugar de filtrar la XSS
  • report=URL enviará informes a URL

Las opciones deben estar separadas por punto y coma, por ejemplo 1; mode=block; report=URI. Asegúrese de no tener punto y coma al final.

MISSPELLED_SECURITY_HEADER_NAME

Es posible que Web Security Scanner detecte un nombre de encabezado de seguridad mal escrito. En su forma mal escrita, el encabezado de seguridad es ineficaz y debe corregirse.

Para reproducir esta vulnerabilidad, comprueba si hay errores ortográficos en la pestaña de red de las herramientas de desarrollo de tu navegador.

MISMATCHING_SECURITY_HEADER_VALUES

Web Security Scanner podría detectar que la respuesta tiene encabezados de respuesta relacionados con la seguridad duplicados y con valores conflictivos. Algunos encabezados HTTP relacionados con la seguridad tienen una conducta indefinida si se los declara dos veces en la respuesta, con valores que no coinciden.

Para corregir esta vulnerabilidad, mantén solo uno de estos encabezados que no coincidan.

Repositorio accesible

Web Security Scanner podría encontrar un repositorio de GIT o SVN accesible en la aplicación. Esto puede generar fugas de configuración y de código fuente.

Para reproducir la vulnerabilidad, haz clic en la URL de reproducción en el informe de resultados.

Verifica el problema

Cuando Web Security Scanner informa un problema, debes verificar la ubicación del problema. Haz esto con un navegador que tenga desactivada la protección XSS. Se recomienda usar una instancia de prueba separada de Chrome, pero puedes usar la mayoría de los navegadores modernos que te permiten inhabilitar la protección XSS.

Para inhabilitar la protección XSS en Chrome, haz lo siguiente:

  • Si usas Linux, invoca el comando de Linux Chrome de la siguiente manera:

    chrome --user-data-dir=~/.chrometest --allow-running-insecure-content \
      --disable-xss-auditor --disable-sync --bwsi
    
  • Si usas macOS, invoca el comando de Chrome de la siguiente manera:

    open -n /Applications/Google\ Chrome.app/ --args --disable-xss-auditor \
      --user-data-dir=/tmp/xssrepro
    

La aplicación de la Política de seguridad de contenido (CSP) podría impedir que se ejecute el código JavaScript. Esto puede dificultar más la reproducción de XSS. Si experimentas este problema, revisa la consola de registros del navegador para obtener detalles sobre el incumplimiento de CSP.