Detalhes do resultado da verificação

Veja nesta página os detalhes dos resultados da verificação do Cloud Security Scanner.

Classes de vulnerabilidade

O Cloud Security Scanner detecta as seguintes classes de vulnerabilidades: XSS, injeção Flash, conteúdo misto, senhas não criptografadas e uso de bibliotecas JavaScript inseguras. Caso alguma delas seja encontrada, o resultado é destacado para que você explore os detalhes.

Valores da string findingType

Na tabela abaixo, descrevemos os valores de string válidos para o campo findingType em um recurso Finding do Cloud Security Scanner. O recurso Finding representa uma instância de vulnerabilidade identificada durante um ScanRun, e o campo findingType mostra o tipo de vulnerabilidade.

Novos valores de findingType são introduzidos quando uma vulnerabilidade é adicionada pelo Google Cloud Platform. Essa atualização pode ocorrer sem que as APIs atuais sejam atualizadas. A página será atualizada sempre que um novo valor de findingType for introduzido. As alterações na lista de valores válidos sempre serão registradas na página Notas da versão.

String findingType Descrição
MIXED_CONTENT Uma página veiculada por HTTPS também tem recursos sobre HTTP. Um invasor intermediário pode adulterar o recurso HTTP e conseguir acesso total ao site que carrega o recurso ou monitorar as ações realizadas pelo usuário.
OUTDATED_LIBRARY A versão de uma biblioteca incluída pode conter um problema de segurança. O scanner verifica a versão da biblioteca em uso e compara com 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.
ROSETTA_FLASH Esse tipo de vulnerabilidade ocorre quando o valor de um parâmetro de solicitação é refletido no início da resposta, por exemplo, em solicitações que usam JSONP. Em certas circunstâncias, um invasor pode fornecer um arquivo Flash apenas alfanumérico no parâmetro vulnerável, fazendo com que o navegador execute o arquivo Flash como se ele se originasse do servidor vulnerável.
XSS_CALLBACK Um bug de scripting entre sites (XSS) é encontrado por meio do callback em JavaScript. Para ver explicações detalhadas sobre o XSS, visite https://www.google.com/about/appsecurity/learning/xss/.
XSS_ERROR Um possível bug de scripting entre sites (XSS) devido ao rompimento de JavaScript. Em algumas circunstâncias, o aplicativo testado pode modificar a string de teste antes de ele ser analisado pelo navegador. Quando o navegador tenta executar esta string de teste modificada, é provável que ele trave e exiba um erro de execução do JavaScript, o que ocasiona um erro de injeção. No entanto, isso pode não ser explorável. É necessária uma verificação manual para confirmar se as modificações da string de teste podem ser burladas e se o problema é, na verdade, uma vulnerabilidade XSS. Para ver explicações detalhadas sobre o XSS, visite https://www.google.com/about/appsecurity/learning/xss/.
CLEAR_TEXT_PASSWORD Parece 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.
INVALID_CONTENT_TYPE Um aplicativo retorna conteúdo sensível com um tipo de conteúdo inválido ou sem um cabeçalho "X-Content-Type-Options: nosniff".
XSS_ANGULAR_CALLBACK Uma vulnerabilidade de scripts entre sites (XSS) no módulo AngularJS que ocorre quando uma string fornecida pelo usuário é interpolada pelo Angular.
INVALID_HEADER Um cabeçalho com valor inválido ou incorreto.
MISSPELLED_SECURITY_HEADER_NAME Nome de cabeçalho de segurança escrito incorretamente.
MISMATCHING_SECURITY_HEADER_VALUES Valores não correspondentes em um cabeçalho de segurança duplicado.
ACCESSIBLE_GIT_REPOSITORY Um repositório do Git acessível foi encontrado pela verificação.
ACCESSIBLE_SVN_REPOSITORY Um repositório SVN acessível foi encontrado pela verificação.

Scripting entre sites

O teste de injeção de scripting em vários locais (XSS, na sigla em inglês) do Cloud Security Scanner simula um ataque de injeção por meio da inserção de uma string de teste benigno em campos editáveis pelo usuário, desempenhando, assim, várias ações como usuário. 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.

Veja a seguir um exemplo de alerta de XSS no parâmetro vulnerável q=:

Como a string de teste foi executada, agora sabemos que é possível injetar e executar o JavaScript nessa página. Se um invasor encontrasse esse problema, ele poderia executar qualquer JavaScript como se fosse o 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 de ser analisado pelo navegador. Por exemplo, o aplicativo pode validar a entrada ou limitar o tamanho de um campo. Quando o navegador tentar executar essa string de teste modificada, é provável que ele trave e exiba um erro de execução do JavaScript. Isso indica que há um problema de injeção ocorrendo. Contudo, ele pode não ser explorável. É necessário fazer uma verificação manual para confirmar se as modificações da string de teste podem ser burladas e se o problema é, na verdade, uma vulnerabilidade de XSS.

Veja a seguir um exemplo de alerta de falha de JavaScript que indica que o parâmetro q= pode ter um erro de injeção:

Existem várias maneiras de corrigir esse problema. O recomendado é inserir caracteres de escape em todas as saídas e usar um sistema de modelo compatível com a adição automática de escapes.

Script entre sites do Angular

Pode ocorrer uma vulnerabilidade de XSS nos módulos AngularJS quando uma string fornecida pelo usuário é interpolada pelo Angular. 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.

Veja a seguir um exemplo de um alerta de falha que mostra um problema de injeção de XSS do Angular:

Para reproduzir essa vulnerabilidade em potencial, siga o link do URL de reprodução no Console do Google Cloud Platform depois de executar a verificação. Esse link abrirá diretamente uma caixa de diálogo de alerta ou injetará a string "XSSDETECTED" para comprovar que o ataque pode executar o código. No caso da injeção, você pode abrir as ferramentas para desenvolvedores do seu navegador e procurar "XSSDETECTED" para encontrar a posição exata da injeção.

Injeção Flash

É possível que o Cloud Security Scanner encontre um parâmetro que seja refletido no início de uma resposta. Isso é conhecido também como Rosetta 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.

Veja a seguir um exemplo de alerta de injeção Flash no parâmetro callback=:

Para corrigir isso, não inclua dados controlados pelo usuário no início de uma resposta HTTP.

Conteúdo misto

O Cloud Security Scanner observa passivamente o tráfego HTTP e detecta quando uma solicitação de um arquivo CSS ou JavaScript é feita por HTTP no contexto de uma página HTTPS.

Veja a seguir um exemplo de alerta de conteúdo misto no attribute_script de uma página HTTPS, incluindo um recurso HTTP de http://irrelevant.google.com:

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

Biblioteca desatualizada

É possível que o Cloud Security Scanner descubra que a versão de uma biblioteca incluída pode conter um problema de segurança. Esse é um scanner baseado em assinatura que tenta identificar a versão da biblioteca em uso e a compara com 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.

Veja a seguir um exemplo de alerta de biblioteca desatualizada devido ao uso de jquery-1.8.1.js:

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

Senha não criptografada

O Cloud Security Scanner pode descobrir que o aplicativo está transmitindo um campo de senha em texto não criptografado.

Veja a seguir um exemplo de alerta de senha de texto não criptografado:

Para proteger informações confidenciais que passam entre o cliente e o servidor, 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.

Cabeçalho de Content-Type inválido

O Cloud Security Scanner pode descobrir que um recurso foi carregado e não corresponde ao cabeçalho HTTP da resposta Content-Type.

Veja a seguir um exemplo de um alerta de cabeçalho inválido de Content-Type:

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

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

Cabeçalho de segurança inválido

O Cloud Security Scanner pode descobrir que um cabeçalho de segurança tem um erro de sintaxe. Como resultado, o cabeçalho será ignorado pelos navegadores.

Veja a seguir um exemplo de uma descoberta de cabeçalho com segurança inválida.

Cabeçalho da política de referência

Uma política de referência válida (em inglês) contém um dos seguintes valores: string vazia, no-referrer, no-referrer-when-downgrade, same-origin, origin, strict-origin, origin-when-cross-origin, strict-origin-when-cross-origin ou unsafe-url.

Cabeçalho X-Frame-Options

Um cabeçalho X-Frame-Options válido só pode ter os valores DENY (não permitir todo o enquadramento), SAMEORIGIN (permitir o enquadramento se o URL de nível superior tiver a mesma origem) ou ALLOW-FROM URL. Observe que o ALLOW-FROM URL não é compatível com o Chrome, e X-Frame-Options múltiplos 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"). Assim, somente se você ativar a proteção poderá adicionar até duas opções: mode=block mostrará uma página em branco em vez de filtrar o XSS e report=URL enviará relatórios para o URL. As opções precisam ser separadas por ponto e vírgula, como neste exemplo: 1; mode=block; report=URI. Não deve haver ponto e vírgula à direita.

Valores de cabeçalho de segurança escritos incorretamente

O Cloud 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.

Veja a seguir um exemplo de uma descoberta de nome de cabeçalho de segurança com erros ortográficos:

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

Valores de cabeçalho de segurança não correspondentes

O Cloud 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.

Veja a seguir um exemplo de descoberta de valores de cabeçalho de segurança incompatíveis:

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

Repositório acessível

O Cloud Security Scanner pode encontrar um repositório Git ou SVN acessível no aplicativo. Isso pode levar a vazamentos do código-fonte ou da configuração.

Veja a seguir um exemplo de uma descoberta de repositório Git acessível:

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

Verificar o problema

Quando o Cloud Security Scanner relatar um problema, você precisará verificar sua localização. Faça isso com um navegador que tenha a proteção XSS desativada. É melhor usar uma instância de teste separada do Chrome, mas você pode usar a maioria dos navegadores modernos que permitem desabilitar a proteção XSS.

Para desativar a proteção XSS no Chrome:

  • Se você usa o Linux, chame o comando Linux Chrome desta maneira:

    chrome --user-data-dir=~/.chrometest --allow-running-insecure-content \ --disable-xss-auditor --disable-sync --bwsi

  • Se você usa Mac OSX, chame o comando Chrome desta maneira:

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

Observe que a aplicação da Política de segurança de conteúdo (CSP, na sigla em inglês) ainda pode evitar a execução do código JavaScript. Isso pode dificultar a reprodução do XSS. Caso esse erro ocorra, verifique o console de registros do navegador para ver mais detalhes sobre a violação da CSP.

Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Documentação do Cloud Security Scanner