Visão geral do Web Security Scanner

O Web Security Scanner identifica vulnerabilidades de segurança nos aplicativos da Web do App Engine, Google Kubernetes Engine (GKE) e Compute Engine. Ele segue todos os links no escopo dos URLs iniciais para rastrear seu aplicativo e tenta acessar o máximo possível de entradas do usuário e manipuladores de eventos. O Web Security Scanner é compatível apenas com URLs e IPs públicos que não estão protegidos por firewall.

O Web Security Scanner é compatível com o ambiente padrão e flexível do App Engine, as instâncias do Compute Engine e os recursos do GKE.

O Web Security Scanner foi projetado para complementar seus processos de desenvolvimento e design seguros. Para que você não seja distraído com falsos positivos, o Web Security Scanner apresenta baixo desempenho na geração de relatórios e não exibe alertas de baixa confiança. Ele não substitui uma análise de segurança manual e não garante que seu aplicativo esteja livre de falhas de segurança.

Tipos de verificação

O Web Security Scanner fornece verificação de vulnerabilidade da Web gerenciada e personalizada para aplicativos da Web públicos do App Engine, GKE e do Compute Engine.

Verificações gerenciadas

As verificações gerenciadas do Web Security Scanner são configuradas e gerenciadas pelo Security Command Center. As verificações gerenciadas são executadas automaticamente uma vez por semana para detectar e verificar os endpoints da Web públicos. Essas verificações não usam autenticação e enviam solicitações somente GET para que não enviem formulários em sites ativos.

As verificações gerenciadas são executadas separadamente das verificações personalizadas.

Se o Security Command Center estiver ativado no nível da organização, é possível usar verificações gerenciadas para gerenciar de maneira centralizada a detecção de vulnerabilidades de aplicativos da Web básicos em projetos da organização, sem precisar envolver equipes de projeto individuais. Quando as descobertas são descobertas, trabalhe com essas equipes para configurar verificações personalizadas mais abrangentes.

Quando você ativa o Web Security Scanner como um serviço, as descobertas da verificação gerenciada são disponibilizadas automaticamente na guia vulnerabilidades do Security Command Center e nos relatórios relacionados. Para saber como ativar as verificações gerenciadas do Web Security Scanner, consulte Configurar os serviços do Security Command Center.

As verificações gerenciadas oferecem suporte apenas a aplicativos que usam a porta padrão, que é 80 para conexões HTTP e 443 para conexões HTTPS. Se o aplicativo usar uma porta que não seja padrão, faça uma verificação personalizada.

Verificações personalizadas

As verificações personalizadas do Web Security Scanner fornecem informações detalhadas sobre descobertas de vulnerabilidades de aplicativos, como bibliotecas desatualizadas, scripts entre sites ou uso de conteúdo misto.

As verificações personalizadas são definidas no nível do projeto.

As descobertas da verificação personalizada estão disponíveis no Security Command Center depois de concluir o guia para configurar verificações personalizadas do Web Security Scanner.

Descobertas de verificação

Nesta seção, descrevemos os tipos de descoberta do Web Security Scanner e os padrões de conformidade relevantes.

Detectores e compliance

O Web Security Scanner é compatível com as categorias do OWASP Top 10, um documento que classifica e fornece orientações de correção para os 10 riscos mais críticos de segurança de aplicativos da Web, conforme determinado pelo projeto de segurança de aplicativos Open Web (OWASP).

O mapeamento de conformidade está incluído para referência e não é fornecido ou revisado pela OWASP Foundation. Ela serve apenas para monitorar violações de controles de compliance. Os mapeamentos não são fornecidos para uso como base ou como substitutos para a auditoria, certificação ou relatório de conformidade dos seus produtos ou serviços com comparativos de mercado ou padrões regulatórios ou do setor.

Para mais informações sobre conformidade, consulte Avaliar e informar a conformidade com o comparativo de mercado de segurança.

Tipos de descobertas

As verificações personalizadas e gerenciadas do Web Security Scanner identificam os seguintes tipos de descobertas. No nível Standard, o Web Security Scanner é compatível com verificações personalizadas de aplicativos implantados com URLs e IPs públicos que não estão protegidos por firewall.

Categoria Descrição da descoberta 10 principais OWASP de 2017 10 principais OWASP de 2021

Accessible Git repository

Nome da categoria na API: ACCESSIBLE_GIT_REPOSITORY

Um repositório GIT é exposto publicamente. Para resolver esse problema, remova o acesso público não intencional ao repositório do GIT.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A5 A01

Accessible SVN repository

Nome da categoria na API: ACCESSIBLE_SVN_REPOSITORY

Um repositório SVN é exposto publicamente. Para resolver esse problema, remova o acesso público não intencional ao repositório SVN.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A5 A01

Cacheable password input

Nome da categoria na API: CACHEABLE_PASSWORD_INPUT

As senhas inseridas no aplicativo da Web podem ser armazenadas em um cache normal do navegador, em vez de um armazenamento seguro de senhas.

Nível de preços: Premium

Corrigir essa descoberta

A3 A04

Clear text password

Nome da categoria na API: CLEAR_TEXT_PASSWORD

As senhas estão sendo transmitidas em texto não criptografado e podem ser interceptadas. Para resolver isso, criptografe a senha transmitida pela rede.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A3 A02

Insecure allow origin ends with validation

Nome da categoria na API: INSECURE_ALLOW_ORIGIN_ENDS_WITH_VALIDATION

Um endpoint HTTP ou HTTPS entre sites valida apenas um sufixo do cabeçalho de solicitação Origin antes de refleti-lo no cabeçalho de resposta Access-Control-Allow-Origin. Para resolver essa descoberta, valide se o domínio raiz esperado faz parte do valor do cabeçalho Origin antes de refleti-lo no cabeçalho de resposta Access-Control-Allow-Origin. Para caracteres curinga de subdomínio, adicione o ponto no domínio raiz ao início, por exemplo, .endsWith(".google.com").

Nível de preços: Premium

Corrigir essa descoberta

A5 A01

Insecure allow origin starts with validation

Nome da categoria na API: INSECURE_ALLOW_ORIGIN_STARTS_WITH_VALIDATION

Um endpoint HTTP ou HTTPS entre sites valida apenas um prefixo do cabeçalho de solicitação Origin antes de refleti-lo no cabeçalho de resposta Access-Control-Allow-Origin. Para resolver essa descoberta, valide se o domínio esperado corresponde totalmente ao valor do cabeçalho Origin antes de refleti-lo no cabeçalho de resposta Access-Control-Allow-Origin, por exemplo, .equals(".google.com").

Nível de preços: Premium

Corrigir essa descoberta

A5 A01

Invalid content type

Nome da categoria na API: INVALID_CONTENT_TYPE

Um recurso foi carregado e ele não corresponde ao cabeçalho HTTP da resposta Content-Type. Para resolver essa descoberta, defina o cabeçalho HTTP X-Content-Type-Options com o valor correto.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A6 A05

Invalid header

Nome da categoria na API: INVALID_HEADER

Um cabeçalho de segurança tem um erro de sintaxe e é ignorado pelos navegadores. Para resolver isso, defina os cabeçalhos de segurança HTTP corretamente.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A6 A05

Mismatching security header values

Nome da categoria na API: MISMATCHING_SECURITY_HEADER_VALUES

Um cabeçalho de segurança tem valores duplicados e incompatíveis, o que resulta em comportamento indefinido. Para resolver isso, defina os cabeçalhos de segurança HTTP corretamente.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A6 A05

Misspelled security header name

Nome da categoria na API: MISSPELLED_SECURITY_HEADER_NAME

Um cabeçalho de segurança está incorreto e foi ignorado. Para resolver isso, defina os cabeçalhos de segurança HTTP corretamente.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A6 A05

Mixed content

Nome da categoria na API: MIXED_CONTENT

Os recursos são exibidos por HTTP em uma página HTTPS. Para resolver essa descoberta, verifique se todos os recursos são exibidos por HTTPS.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A6 A05

Outdated library

Nome da categoria na API: OUTDATED_LIBRARY

Foi detectada uma biblioteca com vulnerabilidades conhecidas. Para resolver essa descoberta, faça upgrade das bibliotecas para uma versão mais recente.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A9 A06

Server side request forgery

Nome da categoria na API: SERVER_SIDE_REQUEST_FORGERY

Uma vulnerabilidade de falsificação de solicitação do lado do servidor (SSRF, na sigla em inglês) foi detectada. Para resolver essa descoberta, use uma lista de permissões para limitar os domínios e endereços IP aos quais o aplicativo da Web pode fazer solicitações.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

Não relevante A10

Session ID leak

Nome da categoria na API: SESSION_ID_LEAK

Ao fazer uma solicitação entre domínios, o aplicativo da Web inclui o identificador de sessão do usuário no cabeçalho da solicitação Referer. Essa vulnerabilidade dá ao domínio de recebimento acesso ao identificador da sessão, que pode ser usado para personificar ou identificar o usuário de maneira exclusiva.

Nível de preços: Premium

Corrigir essa descoberta

A2 A07

SQL injection

Nome da categoria na API: SQL_INJECTION

Foi detectada uma possível vulnerabilidade de injeção de SQL. Para resolver essa descoberta, use consultas parametrizadas para evitar que as entradas do usuário influenciem a estrutura da consulta SQL.

Nível de preços: Premium

Corrigir essa descoberta

A1 A03

Struts insecure deserialization

Nome da categoria na API: STRUTS_INSECURE_DESERIALIZATION

Foi detectado o uso de uma versão vulnerável do Apache Struts. Para resolver essa descoberta, faça upgrade do Apache Struts para a versão mais recente.

Nível de preços: Premium

Corrigir essa descoberta

A8 A08

XSS

Nome da categoria na API: XSS

Um campo nesse aplicativo da Web é vulnerável a um ataque de script entre sites (XSS). Para resolver isso, valide e escape dados não confiáveis fornecidos pelo usuário.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A7 A03

XSS angular callback

XSS_ANGULAR_CALLBACKNome da categoria na API:

Uma string fornecida pelo usuário não tem escape e o AngularJS pode intercalá-la. Para resolver essa descoberta, valide e escape dados não confiáveis fornecidos pelo usuário e processados pelo framework Angular.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A7 A03

XSS error

Nome da categoria na API: XSS_ERROR

Um campo neste aplicativo da Web é vulnerável a um ataque de scripting em vários locais. Para resolver isso, valide e escape dados não confiáveis fornecidos pelo usuário.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A7 A03

XXE reflected file leakage

XXE_REFLECTED_FILE_LEAKAGENome da categoria na API:

Uma vulnerabilidade de entidade externa de XML (XXE) foi detectada. Isso pode fazer o aplicativo da Web vazar um arquivo no host. Para resolver essa descoberta, configure seus analisadores de XML para proibir entidades externas.

Nível de preços: Premium

Corrigir essa descoberta

A4 A05

Prototype pollution

Nome da categoria na API: PROTOTYPE_POLLUTION

O aplicativo é vulnerável à poluição de protótipo. Essa vulnerabilidade surge quando propriedades do objeto Object.prototype podem receber valores controláveis pelo invasor. Considera-se universalmente que os valores plantados nesses protótipos são traduzidos para scripting em vários locais ou vulnerabilidades semelhantes no lado do cliente, além de bugs lógicos.

Nível de preços: Premium ou padrão

Corrigir essa descoberta

A1 A03

Avisos de uso

Os papéis do IAM para o Security Command Center podem ser concedidos no nível da organização, da pasta ou do projeto. A capacidade de ver, editar, criar ou atualizar descobertas, recursos e fontes de segurança depende do nível a que você tem acesso. Para saber mais sobre os papéis do Security Command Center, consulte Controle de acesso.

Outras ressalvas importantes ao usar o Web Security Scanner:

  • Por causa das constantes atualizações, uma verificação futura pode relatar problemas que não são relatados pela atual.
  • Alguns recursos ou seções do seu aplicativo podem não ser testados.
  • O Web Security Scanner tenta ativar todos os controles e entradas que encontra.
  • Se você expuser as ações de alteração de estado para as quais sua conta de teste tem permissão, é provável que elas sejam ativadas pelo Web Security Scanner. Isso pode levar a resultados indesejáveis.
  • O Web Security Scanner tem um limite de 15 verificações por projeto. Como as verificações são executadas simultaneamente, recomendamos que os usuários que atinjam esse limite adicionem vários URLs iniciais por verificação ou para adicionar verificações a projetos diferentes que ainda não atingiram o limite.

Quem pode executar uma verificação de segurança?

Para mais informações sobre os papéis do Identity and Access Management (IAM) disponíveis para o Web Security Scanner, consulte Controle de acesso.

Quanto tempo uma verificação de segurança leva para ser feita?

A verificação de segurança não é executada imediatamente. Ela fica na fila e é executada mais tarde, possivelmente horas depois, dependendo da carga do sistema. Assim que a verificação é iniciada, o tempo necessário dependerá do tamanho do seu aplicativo. A verificação de um aplicativo grande com muitos URLs pode levar várias horas ou até dias. Se uma verificação não for concluída em 20 dias, ela será interrompida automaticamente, e todos os resultados e descobertas do rastreamento encontrados durante a verificação vão aparecer como o resultado da verificação.

Restrições de segmentação

O Web Security Scanner tem filtros que restringem os destinos de verificação à instância específica do App Engine para a qual a verificação é criada. A inserção de URLs para um projeto diferente do App Engine ou para um domínio externo gera uma mensagem de erro.

As verificações do Compute Engine e do GKE são restritas a domínios mapeados para endereços IP externos estáticos reservados para o mesmo projeto e endereços IP externos estáticos que pertencem ao mesmo projeto. Para instruções sobre como reservar endereços IP para projetos, consulte os seguintes links:

O App Engine não fornece uma maneira de mapear endereços IP estáticos para um aplicativo. No entanto, é possível usar o Cloud Load Balancing e os grupos de endpoints de rede sem servidor para reservar um endereço IP estático para o balanceador de carga, que direciona o tráfego para o aplicativo. Para mais informações sobre preços, consulte Preços do endereço IP externo.

No seu projeto, o Web Security Scanner tenta automaticamente evitar URLs de saída e outros locais genéricos que possam afetar negativamente uma verificação. Para ter certeza, use as configurações de verificação para excluir URLs manualmente.

Validação

As configurações de verificação são validadas quando são criadas e antes de cada verificação. O Web Security Scanner verifica as configurações do Security Command Center e as credenciais de autenticação do seu aplicativo para garantir que as verificações estejam configuradas corretamente e possam fazer login no seu aplicativo. Os parâmetros de configuração, incluindo a velocidade máxima de verificação, também são verificados para garantir que estejam dentro de intervalos compatíveis.

É preciso resolver os erros antes de criar ou atualizar uma verificação. Os aplicativos que são alterados após a configuração inicial podem produzir erros durante as verificações. Por exemplo, se um domínio não apontar mais para um endereço IP de propriedade do projeto, o recurso não será verificado e será exibido um erro na página de configuração de verificação.

Práticas recomendadas

Como o Web Security Scanner preenche campos, aperta botões, clica em links e realiza outras ações do usuário, use-o com cuidado, especialmente se estiver verificando recursos de produção. É possível, inclusive, que o Web Security Scanner ative recursos que alterem o estado dos dados ou do sistema, gerando resultados indesejáveis.

Exemplo:

  • Em um aplicativo de blog que permite comentários públicos, o Web Security Scanner pode postar strings de teste como comentários em todos os artigos do seu blog.
  • Em uma página de inscrição de e-mail, o Web Security Scanner pode gerar um grande número de e-mails de teste.

Veja a seguir algumas técnicas que você pode usar, separadamente ou em combinação, para evitar resultados indesejados:

  1. Execute as verificações em um ambiente de teste. Para criar um ambiente de teste, crie um projeto separado do App Engine e, neste local, carregue seu aplicativo e seus dados. Se você usar a Google Cloud CLI, poderá especificar o projeto de destino como uma opção de linha de comando ao fazer upload do app.
  2. Use uma conta de teste. Crie uma conta de usuário que não tenha acesso a dados confidenciais ou operações perigosas para usar ao verificar seu app. Vários aplicativos apresentam um fluxo de trabalho especial durante o primeiro login do usuário, com aceitar termos e criar um perfil. Por causa do diferente fluxo de trabalho, uma conta de teste para um usuário inicial pode ter resultados de verificação diferentes da conta de usuário estabelecida. É recomendado que a verificação seja feita com uma conta com estado norma de usuário, depois que o fluxo inicial já tenha sido concluído.
  3. Bloqueie elementos individuais da interface do usuário que você não quer ativar aplicando a classe CSS inq-no-click. Os manipuladores de evento conectados a este elemento não são ativados durante o rastreamento e teste, independentemente de eles serem JavaScript inline ou anexados usando addEventListener ou configurando a propriedade do manipulador de eventos apropriado.
  4. Faça backup dos dados. Faça um backup dos dados antes da verificação.
  5. URLs excluídos. Especifique os padrões de URL que não serão rastreados ou testados. Para saber informações sobre a sintaxe, consulte Como excluir URLs.

Antes da verificação, faça uma auditoria minuciosa do seu aplicativo para detectar qualquer recurso que possa afetar os dados, usuários ou sistemas além do escopo da verificação.

A seguir