Teste de segurança com Selenium: integração com o OWASP ZAP

Como testar possíveis vulnerabilidades de segurança de um site enquanto rodamos testes funcionais automatizados? O software é funcional se tiver um problema de segurança? Neste artigo, detalhamos como integrar o Selenium e o OWASP ZAP para fazer teste de segurança com Selenium de forma eficiente e com qualidade.

Teste de segurança com Selenium

Antes de entrar na integração para fazer teste de segurança com Selenium, vale parar um momento para falar da OWASP. E, em especial, do OWASP ZAP (Zed Attack Proxy).

O que é o OWASP ZAP e como ele ajuda no teste de segurança?

A OWASP é uma organização e comunidade de referência em segurança web e, agora, também segurança mobile. Propõe uma metodologia de código aberto e colaborativa para auditorias de segurança. Isso garante a revisão regular de um projeto para minimizar erros e riscos.

O trabalho da OWASP é crítico numa época em que fica cada vez mais urgente acertar a segurança de TI. Segundo o Relatório de Riscos Globais 2023, a tecnologia vai “agravar desigualdades”, enquanto “os riscos de cibersegurança vão continuar sendo uma preocupação constante” nos próximos 10 anos.

Riscos globais classificados por gravidade no curto e no longo prazo. Imagem: World Economic Forum

O teste de segurança com Selenium, graças à integração com o OWASP ZAP, é um grande passo para ganhar tempo, já que dá para aproveitar os testes funcionais automatizados na detecção de possíveis vulnerabilidades.

O OWASP ZAP é uma ferramenta de código aberto de teste de segurança de aplicações web, usada para identificar vulnerabilidades e entregar uma avaliação de segurança completa.

Teste de segurança com Selenium – recursos do OWASP ZAP:

✅Varredura automatizada de vulnerabilidades

Esse tipo de processo de teste automatizado ajuda a detectar problemas como injeção de SQL, XSS, vulnerabilidades de sessão, vulnerabilidades de autenticação e outros.

✅Suporte a vários protocolos

Oferece suporte a HTTP, HTTPS e TCP.

✅Interceptação por proxy

Atua como proxy entre o navegador e a aplicação web. Isso permite interceptar e modificar requisições e respostas.

✅Modo de navegação manual

Permite navegar manualmente pelas aplicações web. Esse modo é especialmente útil no teste funcional de funcionalidades específicas e personalizadas.

✅Relatórios detalhados

Entrega relatórios detalhados das vulnerabilidades detectadas. Isso inclui a gravidade da vulnerabilidade e sugestões de como corrigi-la.

✅Integração com outros sistemas

Pode se integrar a outros sistemas de teste de segurança e de automação de testes, como o Jenkins, o Selenium etc.

✅Suporte multiplataforma

É compatível com Windows, Linux e Mac OS X.

✅Personalização e extensibilidade

É altamente personalizável e extensível. Isso permite que os usuários adicionem os próprios scripts de teste e ajustem a ferramenta às necessidades específicas.

Integração do OWASP ZAP com o Selenium

Este projeto busca fazer teste de segurança com Selenium. Para combinar o ZAP com o Selenium, primeiro é preciso ter um projeto Selenium. É necessário configurar o proxy do ZAP nos scripts do projeto Selenium para que todas as requisições HTTP do site em teste passem pelo ZAP.

A seguir, compartilhamos um guia passo a passo de como fazer essa integração para alcançar o teste de segurança com Selenium:

1. Instale o OWASP ZAP (versão 2.10.0 ou superior)

O caminho mais fácil é instalar a GUI do ZAP, mas dá para subir o proxy com Docker.

2. Inicie o OWASP ZAP

Configure a porta e o endereço IP para o Selenium se conectar. Por padrão, o IP será localhost e a porta será 8080. Para obter a API KEY, abra a GUI, vá em Ferramentas > Opções > API e copie o texto do campo API Key.

3. Configure o Selenium para usar o proxy do ZAP

Parta de um projeto Selenium criado com as dependências configuradas corretamente e adicione o proxy com o código a seguir:

@BeforeMethod
public void setup(){ 
   String proxyServerUrl = ZAP_PROXY_ADDRESS + ":" + ZAP_PROXY_PORT; 
   Proxy proxy = new Proxy();
   proxy.setHttpProxy(proxyServerUrl); 
   proxy.setSslProxy(proxyServerUrl); 

   ChromeOptions co = new ChromeOptions(); 
   co.setAcceptInsecureCerts(true); 
   co.setProxy(proxy); 
   WebDriverManager.chromedriver().setup(); 
   driver = new ChromeDriver(co); 

   api = new ClientApi(ZAP_PROXY_ADDRESS, ZAP_PROXY_PORT, ZAP_API_KEY);
}

4. Gere um relatório

Depois de executar os testes, você pode gerar um relatório detalhado das vulnerabilidades detectadas pelo ZAP no método tearDown (ou como ele se chamar em cada caso).

@AfterMethod
public void tearDown() throws Exception{ 
   if (api != null) { 
      String title = "POC ZAP Selenium - Abstracta"; 
      String template = "traditional-html"; 
      String description = "This is a ZAP test report"; 
      String reportfilename = "abstracta-web-security-report.html"; 
      String targetFolder = System.getProperty("user.dir"); 
      try { 
         ApiResponse res = api.reports.generate(title, template, null, 
         description, null, null, null,null, null, reportfilename,null, 
         targetFolder,null); 
         System.out.println("ZAP report generated here: " + res.toString());
      } catch (ClientApiException ex) { 
         throw new Exception(ex);
      } 
   }
}

Para uma demonstração rápida do funcionamento e para testar a integração do ZAP com o Selenium (teste Selenium), compartilhamos uma prova de conceito no nosso GitHub. Não hesite em experimentar e fale conosco se tiver alguma dúvida!

Como levar a segurança dos seus aplicativos mobile ao próximo nível da OWASP? Não perca este artigo!

Precisa de ajuda com teste de segurança?
Somos parceiros de qualidade! Saiba mais sobre as nossas soluções aqui! Fale conosco para conversar sobre como podemos ajudar você a fazer o seu negócio crescer.

Fique conectado

com a Abstracta

Notícias, artigos e recursos para construir software melhor.

Este site é protegido por reCAPTCHA e se aplicam a Política de Privacidade e os Termos de Serviço do Google.

Leia sobre nossa política de privacidade.

Ilustração de duas pessoas conectadas por uma ponte, uma com um notebook e outra com um tablet, representando colaboração e comunicação. Fim do artigo sobre teste de segurança com selenium.