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 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 |
---|---|---|---|
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: Premium ou padrão |
A5 | A01 |
Nome da categoria na API: |
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 |
A5 | A01 |
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 |
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: Premium ou padrão |
A3 | A02 |
Nome da categoria na API: |
Um endpoint HTTP ou HTTPS entre sites valida apenas um sufixo do cabeçalho de solicitação Nível de preços: Premium |
A5 | A01 |
Nome da categoria na API: |
Um endpoint HTTP ou HTTPS entre sites valida apenas um prefixo do cabeçalho de solicitação Nível de preços: Premium |
A5 | A01 |
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 Nível de preços: Premium ou Standard |
A6 | A05 |
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: Premium ou padrão |
A6 | A05 |
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: Premium ou padrão |
A6 | A05 |
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: Premium ou padrão |
A6 | A05 |
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: Premium ou padrão |
A6 | A05 |
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: Premium ou padrão |
A9 | A06 |
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 endereços IP aos quais o aplicativo da Web pode fazer solicitações. Nível de preços: Premium ou padrão |
Não relevante | A10 |
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 Nível de preços: Premium |
A2 | A07 |
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 |
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 |
Nome da categoria na API: |
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 Standard |
A7 | A03 |
|
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 |
A7 | A03 |
Nome da categoria na API: |
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 |
A7 | A03 |
|
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 |
Nome da categoria na API: |
O aplicativo é vulnerável à poluição de protótipo. Essa vulnerabilidade surge quando
propriedades do objeto Nível de preços: Premium ou 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 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:
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 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:
- 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 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
- Comece a usar o Web Security Scanner.