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 só oferece suporte a URLs e IPs públicos que não por trás de um firewall.
O Web Security Scanner oferece suporte ao ambiente padrão do App Engine e ambientes flexíveis do App Engine, 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 administrar centralmente detecção de vulnerabilidades nos 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 informações sobre como ativar o Web Security Scanner e verificações gerenciadas, consulte Configurar os serviços do Security Command Center.
As verificações gerenciadas são compatíveis apenas com aplicativos que usam a porta padrão, 80 para conexões HTTP e 443 para conexões HTTPS. Caso seu aplicativo use uma porta não 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 aceita as categorias do OWASP Top 10 (em inglês), um documento que classifica e fornece orientações de correção para os 10 aplicativos da Web mais críticos riscos de segurança, conforme determinado pelo Open Web Application Security Project (OWASP).
O mapeamento de conformidade está incluído para referência e não é fornecido ou revisado pela OWASP Foundation. Ela é destinada apenas para o monitoramento da conformidade de controles de segurança. Os mapeamentos não são fornecidos para uso como base como substituto da auditoria, certificação ou relatório de conformidade 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 relatar a conformidade de comparativos de mercado de segurança.
Tipos de descobertas
As verificações personalizadas e gerenciadas do Web Security Scanner identificam os seguintes tipos de descoberta. 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 atrás de um firewall.
Categoria | Descrição da descoberta | 10 principais OWASP de 2017 | 10 principais OWASP de 2021 |
---|---|---|---|
Accessible Git repository
Nome da categoria na API: |
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:padrão |
A5 | A01 |
Accessible SVN repository
Nome da categoria na API: |
Um repositório SVN é exposto publicamente. Para resolver isso, remova
o acesso não intencional público ao repositório SVN.
Nível de preços:padrão |
A5 | A01 |
Cacheable password input
Nome da categoria na API: |
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 |
A3 | A04 |
Clear text password
Nome da categoria na API: |
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:padrão |
A3 | A02 |
Insecure allow origin ends with validation
Nome da categoria na API: |
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,
inclua o ponto no domínio raiz, por exemplo, .endsWith(".google.com") .
Nível de preços: Premium |
A5 | A01 |
Insecure allow origin starts with validation
Nome da categoria na API: |
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 |
A5 | A01 |
Invalid content type
Nome da categoria na API: |
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:padrão |
A6 | A05 |
Invalid header
Nome da categoria na API: |
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:padrão |
A6 | A05 |
Mismatching security header values
Nome da categoria na API: |
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:padrão |
A6 | A05 |
Misspelled security header name
Nome da categoria na API: |
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:padrão |
A6 | A05 |
Mixed content
Nome da categoria na API: |
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:padrão |
A6 | A05 |
Outdated library
Nome da categoria na API: |
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:padrão |
A9 | A06 |
Server side request forgery
Nome da categoria na API: |
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 os endereços IP aos quais o aplicativo da Web podem fazer solicitações.
Nível de preços:padrão |
Não relevante | A10 |
Session ID leak
Nome da categoria na API: |
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 |
A2 | A07 |
SQL injection
Nome da categoria na API: |
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 |
A1 | A03 |
Struts insecure deserialization
Nome da categoria na API: |
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 |
A8 | A08 |
XSS
|
Um campo nesse aplicativo da Web é vulnerável a um ataque
de scripting em vários locais (XSS). Para resolver isso, valide e escape dados
não confiáveis fornecidos pelo usuário.
Nível de preços:padrão |
A7 | A03 |
XSS angular callback
|
Uma string fornecida pelo usuário não tem escape e o AngularJS pode intercalá-la. Para
resolver isso, valide e escape dados não confiáveis fornecidos pelo usuário
e manipulados pelo framework Angular.
Nível de preços:padrão |
A7 | A03 |
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:padrão |
A7 | A03 |
XXE reflected file leakage
|
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 |
A4 | A05 |
Prototype pollution
Nome da categoria na API: |
O aplicativo está vulnerável à poluição do protótipo. Essa vulnerabilidade surge quando as propriedades
do objeto Object.prototype podem receber valores controlados pelo invasor. Valores plantados nesses protótipos
Considera-se universalmente que isso se traduz em scripting em vários locais ou vulnerabilidades semelhantes no lado do cliente, bem como bugs lógicos.
Nível de preços:padrão |
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 Para 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. Aplicativos grandes com muitos URLs podem levar várias horas para serem concluídos.
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:
Compute Engine: Como reservar um endereço IP externo estático
GKE: Como configurar nomes de domínio com endereços IP estáticos
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 as redes sem servidor grupos de endpoints para reservar um endereço IP estático para seu balanceador de carga, que então direciona o tráfego para seu aplicativo. Para informações sobre preços, consulte Preços de endereços IP externos.
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 as credenciais de autenticação para garantir que as verificações estejam configuradas corretamente e possam registrar no 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:
- 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.
- 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.
- 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 usandoaddEventListener
ou configurando a propriedade do manipulador de eventos apropriado. - Faça backup dos dados. Faça um backup dos dados antes da verificação.
- URLs excluídos. Especifique os padrões de URL que não serão rastreados ou testados. Para obter informações sobre a sintaxe, consulte Exclusão de URLs.
Antes da verificação, audite cuidadosamente seu aplicativo para detectar qualquer recurso que possa afetam dados, usuários ou sistemas além do escopo da verificação.
A seguir
- Comece a usar o Web Security Scanner.