Como corrigir descobertas do Web Security Scanner

>

Interpretar, reproduzir e corrigir as descobertas do Web Security Scanner.

Classes de vulnerabilidade

O Web Security Scanner detecta as seguintes classes de vulnerabilidades:

  • Scripting em vários locais (XSS)
  • Injeção Flash
  • Conteúdo misto
  • Senha não criptografada
  • Uso de bibliotecas JavaScript inseguras

Se alguma vulnerabilidade for encontrada, o resultado será destacado para que você explore os detalhes.

Impacto nos registros

Traces de verificações do Web Security Scanner são exibidos nos seus arquivos de registros. Por exemplo, o Web Security Scanner gera solicitações para strings incomuns, como ~sfi9876 e /sfi9876. Esse processo permite que a verificação examine as páginas de erro do aplicativo. Essas solicitações de páginas intencionalmente inválidas aparecerão nos seus registros.

Como corrigir descobertas do Web Security Scanner

Veja a seguir informações sobre como corrigir diferentes tipos de descobertas do Web Security Scanner.

XSS

O teste de injeção de scripting em vários locais (XSS, na sigla em inglês) do Web Security Scanner simula um ataque de injeção por meio da inserção de uma string de teste benigna em campos editáveis pelo usuário, e a execução de várias ações dos usuários. Detectores personalizados observam o navegador e o DOM durante esse teste para determinar se uma injeção foi executada com sucesso e para avaliar o potencial de exploração.

Se o JavaScript contido na string de teste for executado corretamente, ele iniciará o depurador do Google Chrome. Quando uma string de teste é executada, é possível injetar e executar JavaScript na página. Se um invasor descobrisse esse problema, ele poderia executar qualquer JavaScript como um usuário (vítima) que clica em um link mal-intencionado.

Em algumas circunstâncias, o aplicativo testado pode modificar a string de teste antes que ela tenha sido analisada pelo navegador. Por exemplo, o aplicativo pode validar a entrada ou limitar o tamanho de um campo. Quando o navegador tenta executar essa string de teste modificada, é provável que ele falhe e gere um erro de execução do JavaScript. O erro indica um problema de injeção, mas talvez não seja possível realizá-lo.

Para resolver esse problema, você precisa confirmar se o problema é uma vulnerabilidade do XSS verificando manualmente se é possível remover as modificações da string de teste. Para informações detalhadas sobre como verificar essa vulnerabilidade, consulte Scripting em vários locais.

Existem várias maneiras de corrigir esse problema. A correção recomendada é aplicar o escape a todas as saídas e usar um sistema de modelos compatível com a adição automática de escapes.

XSS_ANGULAR_CALLBACK

Pode ocorrer uma vulnerabilidade de scripting em vários locais (XSS) nos módulos AngularJS quando o Angular interpola uma string fornecida pelo usuário. A injeção de valores fornecidos pelo usuário em uma interpolação do AngularJS pode permitir os seguintes tipos de ataques:

  • Um invasor pode injetar um código arbitrário na página renderizada pelos navegadores.
  • Um invasor pode executar ações em nome do navegador da vítima na origem da página.

Para reproduzir essa possível vulnerabilidade, siga o link do URL de reprodução no Console do Google Cloud depois de executar a verificação. Esse link abre diretamente uma caixa de diálogo de alerta ou injeta a string XSSDETECTED para provar que o ataque pode executar o código. Se a string for injetada, abra as ferramentas do desenvolvedor do seu navegador e pesquise por XSSDETECTED para encontrar a posição exata da injeção.

XSS_ERROR

Uma descoberta de XSS_ERROR é um possível bug de XSS devido ao rompimento de JavaScript. Em algumas circunstâncias, o aplicativo em teste pode modificar a string de teste antes de o navegador analisá-la. Quando o navegador tenta executar essa string de teste modificada, é provável que ele falhe e gere um erro de execução do JavaScript. Este erro indica um problema de injeção, mas talvez não seja possível analisá-lo.

Para resolver esse problema, você precisa confirmar se o problema é uma vulnerabilidade do XSS verificando manualmente se é possível remover as modificações da string de teste. Para informações detalhadas sobre como verificar essa vulnerabilidade, consulte Scripting em vários locais.

ROSETTA_FLASH

O Web Security Scanner pode descobrir que o valor de um parâmetro de solicitação é refletido no início de uma resposta, por exemplo, em solicitações que usam JSONP. Essa vulnerabilidade também é conhecida como injeção Flash. Em determinadas circunstâncias, um invasor pode fazer o navegador executar a resposta como se fosse um arquivo Flash fornecido pelo aplicativo vulnerável da Web.

Para corrigir esse erro, não inclua dados que podem ser controlados pelo usuário no início de uma resposta HTTP.

MIXED_CONTENT

O Web Security Scanner observa passivamente o tráfego HTTP e detecta quando uma solicitação de um arquivo JavaScript ou CSS é executada por HTTP no contexto de uma página HTTPS. Nesse cenário, um invasor "man-in-the-middle" pode adulterar o recurso HTTP para ter acesso total ao site que carrega o recurso ou para monitorar as ações realizadas pelo usuário.

Para corrigir esse problema, use links HTTP relativos. Por exemplo, substitua http:// por //.

OUTDATED_LIBRARY

O Web Security Scanner pode descobrir que a versão de uma biblioteca incluída pode conter um problema de segurança. O Web Security Scanner é um verificador baseado em assinatura que tenta identificar a versão da biblioteca em uso e a verifica em uma lista conhecida de bibliotecas vulneráveis. Você poderá ter falsos positivos se a detecção da versão falhar ou caso a biblioteca tenha recebido um patch manual.

Para corrigir esse erro, atualize para uma versão segura e conhecida da biblioteca incluída.

CLEAR_TEXT_PASSWORD

O Web Security Scanner pode descobrir que o aplicativo está transmitindo um campo de senha em texto não criptografado. Um invasor pode interceptar o tráfego de rede e descobrir o campo de senha.

Para proteger informações confidenciais que passam entre o cliente e o servidor, sempre tome as seguintes precauções:

  • Use certificados TLS/SSL.
  • Sempre use HTTPS em páginas que incluem campos de senha.
  • Verifique se os atributos de ação de formulário sempre apontam para um URL HTTPS.

INVALID_CONTENT_TYPE

O Web Security Scanner pode descobrir que um recurso foi carregado que não corresponde ao cabeçalho HTTP da resposta Content-Type. Nesse cenário, o aplicativo retorna conteúdo confidencial com um tipo de conteúdo inválido ou sem um cabeçalho X-Content-Type-Options: nosniff.

Para corrigir essa vulnerabilidade, verifique se as seguintes ações foram realizadas:

  • As respostas JSON são exibidas com o cabeçalho Content-Type application/json.
  • Outras respostas confidenciais são disponibilizadas com tipos MIME apropriados.
  • Exibir conteúdo com o cabeçalho HTTP X-Content-Type-Options: nosniff

INVALID_HEADER

O Web Security Scanner pode descobrir que um cabeçalho de segurança tem um erro de sintaxe, resultando em um cabeçalho de valor inválido ou malformado. Como resultado, o navegador ignora esses cabeçalhos.

Os cabeçalhos válidos são descritos nas seções a seguir.

Cabeçalho da política de referência

Uma política de referenciador válida contém um dos seguintes valores:

  • Uma string vazia
  • no-referrer
  • no-referrer-when-downgrade
  • same-origin
  • origin
  • strict-origin
  • origin-when-cross-origin
  • strict-origin-when-cross-origin
  • unsafe-url

Cabeçalho X-Frame-Options

Um cabeçalho X-Frame-Options válido só pode ter os seguintes valores:

  • DENY: não permite todo o enquadramento
  • SAMEORIGIN: permitir o enquadramento se o URL de nível superior for a mesma origem
  • ALLOW-FROM URL

O Chrome não é compatível com ALLOW-FROM URL. Vários X-Frame-Options não são permitidos.

Cabeçalho X-Content-Type-Options

Um cabeçalho X-Content-Type-Options válido só pode ter um valor: nosniff.

Cabeçalho X-XSS-Protection

Um cabeçalho X-XSS-Protection válido precisa começar com 0 ("desativar") ou 1 ("ativar"). Então, somente se você ativar a proteção, poderá adicionar até duas opções:

  • mode=block mostra uma página em branco em vez de filtrar o XSS
  • report=URL envia relatórios para URL

Separe as opções com ponto e vírgula. Por exemplo, 1; mode=block; report=URI. Verifique se você há um ponto e vírgula no final da linha.

MISSPELLED_SECURITY_HEADER_NAME

O Web Security Scanner pode encontrar um nome de cabeçalho de segurança incorreto. O cabeçalho de segurança é ineficaz quando escrito de maneira incorreta e precisa ser corrigido.

Para reproduzir essa vulnerabilidade, verifique o erro de ortografia na guia de rede das ferramentas para desenvolvedores do seu navegador.

MISMATCHING_SECURITY_HEADER_VALUES

O Web Security Scanner pode descobrir que a resposta tem cabeçalhos de resposta duplicados relacionados à segurança com valores conflitantes. Alguns cabeçalhos HTTP relacionados à segurança apresentam comportamento indefinido se declarados duas vezes na resposta com valores incompatíveis.

Para corrigir essa vulnerabilidade, mantenha apenas um desses cabeçalhos incompatíveis.

Repositório acessível

O Web Security Scanner pode encontrar um repositório GIT ou SVN no aplicativo. Esta condição pode levar a vazamentos de configuração e código-fonte.

Para reproduzir a vulnerabilidade, clique no URL de reprodução no relatório de descobertas.

Verificar o problema

Quando o Web Security Scanner relata um problema, você precisa verificar o local do problema. Esta seção explica como usar os relatórios de descoberta para reproduzir e verificar vulnerabilidades.

  1. Acesse a página do Web Security Scanner no Console do Cloud.
    Acessar a página do Web Security Scanner
  2. Selecione um projeto. Uma página é exibida com uma lista de verificações gerenciadas e personalizadas.
  3. Em Verificar configurações, selecione a que contém a descoberta que você quer verificar. Uma página é aberta com os detalhes da verificação.
  4. Navegue até a guia Resultados, expanda uma categoria e selecione uma descoberta para ver os detalhes.
  5. O método de verificação é diferente com base na categoria da descoberta. Use um navegador de teste e siga as instruções abaixo.
    • Scripting em vários locais: seguir o URL de reprodução gera um pop-up vazio no navegador, indicando que a verificação injetou código benigno em um script.
    • Biblioteca desatualizada: seguir o URL vulnerável retorna uma página com o texto "Explorado", indicando que a verificação injetou o código benigno em um script.
    • Conteúdo misto: seguir o URL da página HTTPS retorna um aviso sobre uma vulnerabilidade de conteúdo misto. O relatório de descobertas identifica o recurso vulnerável no URL do recurso disponibilizado por HTTP.
    • Injeção de Flash: o Web Security Scanner pode retornar descobertas nessa categoria, mas a maioria dos navegadores modernos está protegida contra injeção Flash. É improvável que essas descobertas possam ser exploradas.

A aplicação da política de segurança de conteúdo (CSP, na sigla em inglês) ainda pode impedir a execução do código JavaScript. Essa condição pode dificultar a reprodução do XSS. Se esse problema ocorrer, verifique o console de registros do navegador para ver detalhes sobre a violação da CSP.