Solución de los resultados de Web Security Scanner

>

Interpreta, reproduce y soluciona los resultados 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 detecta alguna de estas vulnerabilidades, el resultado se resaltará para que los explores en detalle.

Impacto en los registros

Los seguimientos 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. Este proceso permite que el análisis examine las páginas de error de la 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 para solucionar diferentes tipos de resultados de Web Security Scanner.

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 varias 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 puede ejecutarse, 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 sometida a prueba podría 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. El error indica un problema de inyección, pero tal vez no sea posible exponerlo.

Para abordar este problema, debes confirmar si el problema es una vulnerabilidad XSS mediante la verificación manual si las modificaciones de la string de prueba se pueden derivar. Para obtener información detallada sobre cómo verificar esta vulnerabilidad, 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 secuencia de comandos entre sitios (XSS) en los módulos AngularJS cuando Angular interpola una string que proporciona 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 posible vulnerabilidad, 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. Si se inyectó la string, puedes abrir las herramientas para desarrolladores de tu navegador y buscar XSSDETECTED a fin de encontrar la posición exacta de la inyección.

XSS_ERROR

Un resultado de XSS_ERROR es un posible error XSS debido a una falla de JavaScript. En algunas circunstancias, la aplicación sometida a 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 error indica un problema de inyección, pero tal vez no sea posible exponerlo.

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

ROSETTA_FLASH

Web Security Scanner puede detectar que el valor de un parámetro de solicitud se refleja al inicio de una respuesta, por ejemplo, en solicitudes con JSONP. Esta vulnerabilidad también se conoce como inyección Flash. En ciertas circunstancias, un atacante puede hacer que el navegador ejecute la respuesta como si fuese 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 observa de forma pasiva el tráfico HTTP y detecta cuándo se realiza una solicitud de un archivo JavaScript o CSS a través de HTTP mientras se encuentra en el contexto de una página HTTPS. En esta situación, un atacante ide ntermediario podría alterar el recurso HTTP y obtener acceso completo al sitio web que carga el recurso o supervisar las acciones de los usuarios.

Para solucionar este problema, 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. Web Security Scanner es un análisis 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, toma siempre 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 del tipo de contenido 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 valor incorrecto o no válido. Como resultado, el navegador ignora estos encabezados.

Se describen los encabezados válidos en las siguientes secciones.

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: inhabilita todos los marcos
  • SAMEORIGIN: permite enmarcar si la URL de nivel superior es del mismo origen.
  • ALLOW-FROM URL

Chrome no es compatible con ALLOW-FROM URL. No se permiten varias 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

Separa las opciones con punto y coma, por ejemplo 1; mode=block; report=URI. Asegúrese de no tener un punto y coma final.

MISSPELLED_SECURITY_HEADER_NAME

Web Security Scanner podría detectar 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 los encabezados que no coinciden.

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 su ubicación. En esta sección, se explica cómo usar los informes de búsqueda para reproducir y verificar las vulnerabilidades.

  1. Ve a la página Web Security Scanner en Cloud Console.
    Ir a la página de Web Security Scanner
  2. Selecciona un proyecto Aparecerá una página con una lista de los análisis administrados y personalizados.
  3. En Configuraciones de análisis, selecciona el análisis que contenga el resultado que deseas verificar. Se abrirá una página con los detalles del análisis.
  4. Navega a la pestaña Resultados, expande una categoría y selecciona un resultado para ver sus detalles.
  5. El método de verificación varía según la categoría de resultado. Usa un navegador de prueba y sigue las instrucciones que se indican a continuación.
    • Secuencia de comandos entre sitios: después de la URL de reproducción, se genera una ventana emergente vacía en el navegador, que indica que el análisis insertó el código correctamente a una secuencia de comandos.
    • Biblioteca desactualizada: después de la URL vulnerable, se muestra una página con el texto “Exploited”, que indica que el análisis se incorporó correctamente a una secuencia de comandos.
    • Contenido mixto: Después de la URL de la página HTTPS, se muestra una advertencia sobre una vulnerabilidad de contenido mixto. El informe de hallazgos identifica el recurso vulnerable en URL del recurso entregado a través de HTTP.
    • Inserción de Flash: Web Security Scanner puede mostrar los resultados en esta categoría, pero la mayoría de los navegadores modernos están protegidos contra la inyección de escritura. Es poco probable que estos hallazgos puedan explotarse.

La aplicación de la Política de Seguridad del 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 que se produjo.