Alura > Cursos de DevOps > Cursos de Segurança > Conteúdos de Segurança > Primeiras aulas do curso DAST: Segurança dinâmica em aplicações web e APIs

DAST: Segurança dinâmica em aplicações web e APIs

Fundamentos do DAST - Apresentação

Apresentação da Instrutora

Olá, estudante! Espero que esteja bem. Meu nome é Amanda Zavan Mendes e serei a instrutora durante toda a jornada de aprendizado no curso de Análise Dinâmica de Segurança (DAST), que faz parte da carreira de EPSEC na Alura.

Audiodescrição: Amanda é uma mulher branca, com olhos e cabelos castanhos. Ela está com os cabelos soltos, longos e levemente ondulados. Ao fundo, está o cenário do estúdio da Alura.

Introdução ao Curso de Análise Dinâmica de Segurança (DAST)

Vamos começar falando um pouco sobre o curso de Análise Dinâmica de Segurança (DAST), o que será vivenciado e aprendido, quais capacidades serão adquiridas ou refinadas.

Durante o curso de DAST, exploraremos o que é o DAST e como ele funciona. Utilizaremos ferramentas Open Source (código aberto), permitindo que todas as aulas sejam acompanhadas de maneira tranquila. Também será mostrado como fazer o setup (configuração), ajustando tudo corretamente e ajudando com alguns troubleshootings (soluções de problemas) que possam surgir ao longo do caminho.

Conteúdo do Curso

Explicaremos os conceitos de scan passivo e scan ativo, além de abordar a parte de autenticação e algumas ferramentas que o OWASP ZAP oferece. Configuraremos essas ferramentas de forma adequada e consistente para garantir assertividade nos testes.

Também será demonstrada a reprodução de uma vulnerabilidade que encontraremos em um dos scans. Além disso, explicaremos como funcionam e quais são as diferenças e implicações dos testes em aplicações web em comparação com APIs.

Conclusão e Integração de Ferramentas

No final do curso, vamos mostrar como gerar relatórios e explicar as diferentes vulnerabilidades que podemos encontrar. Além disso, demonstraremos como os testes se complementam, como o DAST, o SAST, o SCA, e como integramos o DAST na pipeline, utilizando os aplicativos Baseline Scan e Full Scan. Mostraremos as actions e todo o código, tornando este conteúdo bastante rico, tanto na parte de DevSecOps como um todo, mas principalmente na análise dinâmica de segurança.

Com este curso, conseguiremos adquirir mais essa habilidade e aprender a identificar vulnerabilidades e integrar essa ferramenta tão importante, que é o DAST, de maneira correta e sistêmica, além de entender as implicações que ele pode ter dentro de todo o ciclo de desenvolvimento de software.

Apresentação dos Instrutores e Experiência

Faremos também uma breve apresentação sobre nós. Somos especialistas em segurança de aplicações e atualmente trabalhamos em uma empresa de desenvolvimento de inteligência artificial voltada para o desenvolvimento de software. Temos algumas certificações relevantes na área de segurança, como a Ethical Hacker, a CASE focada em Java e DAST Consultant, além da Security Plus e CEH. Deixamos nosso LinkedIn disponível para quem quiser entrar em contato ou tirar dúvidas, estando sempre à disposição.

Temos um histórico significativo na área de Red Team, segurança ofensiva, Pentest, e já atuamos em projetos de segurança em nuvem, compliance, auditorias internas, e principalmente DevSecOps. Temos certeza de que será uma jornada muito enriquecedora, e aguardamos vocês nas próximas aulas. Será uma honra estar aqui durante todo esse processo.

Fundamentos do DAST - Fundamentos do DAST

Introdução ao Dynamic Application Security Testing (DAST)

Vamos iniciar nossa primeira aula, que abordará os fundamentos do Dynamic Application Security Testing (DAST). Para contextualizar, apresentaremos um cenário real comum, especialmente para profissionais de segurança de aplicações (APSEC), que frequentemente lidam com equipes reduzidas e precisam gerenciar múltiplas equipes de desenvolvimento simultaneamente, desenvolvendo diversas funcionalidades e aplicações. A pergunta recorrente quando se aproxima o momento de realizar o release para produção é: "Será que minha aplicação está segura? Em tempo de execução, minha aplicação resistiria a um ataque?"

Integração da Segurança no Ciclo de Desenvolvimento

Como podemos integrar essa camada de segurança de forma sistêmica ao ciclo de desenvolvimento de software? É aqui que entra o DAST, ou análise dinâmica de segurança. O DAST realiza uma varredura em um endpoint, para o qual fornecemos um URL de uma aplicação em execução. Essa aplicação recebe diversos payloads e requisições para testar vulnerabilidades, como injeções em campos de entrada de dados, parâmetros e endpoints expostos, que são mapeados por meio de um spider na própria aplicação. Ele testa cenários semelhantes aos que um atacante testaria com a aplicação em produção.

Perspectiva Externa do DAST

Ao falar de DAST, é crucial considerar a perspectiva externa, ou Black Box. O DAST não possui contexto do código-fonte; ele conhece apenas o endereço fornecido para teste, ou seja, o endpoint. Mais adiante, discutiremos a importância do login, autenticação e renovação de sessão. Por ora, é fundamental lembrar que o DAST não tem contexto de código. Ele identifica possíveis vulnerabilidades com base em padrões de comportamento e assinaturas, analisando as respostas da aplicação aos payloads enviados.

Exemplos de Testes com DAST

Por exemplo, o DAST pode enviar uma aspa simples em um campo de formulário de login, como username ou password. Se a resposta da aplicação incluir informações de banco de dados, como um select, isso pode gerar um alerta de possível SQL injection. O padrão da resposta ao payload enviado pode corresponder a uma assinatura de comportamento que indica uma possível vulnerabilidade de SQL injection.

Integração do DAST com o Ciclo de Desenvolvimento

Falando sobre testes em todo o ciclo de desenvolvimento de software e como o DAST complementa e integra esses testes, vamos considerar o conceito de shift left, começando pela análise estática de código, o SAST. Que tipos de vulnerabilidades o SAST pode identificar? Vamos trazer alguns exemplos.

Exemplos de Vulnerabilidades Detectadas pelo SAST

Um exemplo são as hard-coded credentials, que são credenciais em texto plano. Isso ocorre quando uma senha ou um token está embutido diretamente no código. O SAST pode detectar esse tipo de vulnerabilidade. Outro exemplo é a falta de autorização. Isso acontece quando a pessoa desenvolvedora, ao criar uma API, chamar uma função ou realizar alguma ação, não valida se a pessoa que está fazendo a requisição realmente deveria ter acesso a determinado ativo, página, conteúdo ou informação, resultando em um problema de autorização.

Comparação entre SAST e DAST

O SAST também pode identificar cenários de injeção de SQL. Por exemplo, se no código a pessoa desenvolvedora estiver concatenando a entrada do usuário com uma query para o banco de dados sem parametrização ou validação, apenas concatenando e enviando diretamente, o SAST pode detectar essa vulnerabilidade. No entanto, o SAST trabalha com padrões e tende a gerar muitos falsos positivos, ao contrário do DAST, que tende a falsos negativos por não ter o contexto do código e ser totalmente black box. Isso significa que o DAST pode não reportar vulnerabilidades presentes. Por isso, é importante que um teste complemente o outro: algo que o SAST identificar pode ser confirmado pelo DAST mais adiante, ou algo que o DAST não detectar pode ter sido reportado pelo SAST.

Introdução ao Software Composition Analysis (SCA)

Onde o SCA entra nesse processo? O SCA é útil em três casos principais: bibliotecas vulneráveis, bibliotecas maliciosas e licenças. A diferença entre elas é que uma biblioteca vulnerável não necessariamente contém algo malicioso; ela pode ter sido criada com um propósito legítimo, mas conter um bug que gera uma vulnerabilidade. Um exemplo é a biblioteca do Log4j, que, devido a um bug, gerou uma vulnerabilidade, mas não foi criada com essa intenção.

Bibliotecas Maliciosas e Licenças

Por outro lado, uma biblioteca maliciosa é desenvolvida com o propósito de realizar ações prejudiciais, como extrair dados, roubar informações ou executar código indevido na aplicação. O terceiro caso envolve licenças, que não estão diretamente relacionadas a vulnerabilidades ou intenções maliciosas, mas sim à regulamentação. Dependendo da biblioteca ou componente que a pessoa desenvolvedora estiver usando, pode haver implicações regulatórias devido à licença do software ou componente de terceiros.

Fundamentos do DAST - Setup do OWASP ZAP

Introdução ao DAST e Contextualização

Na nossa última aula, discutimos o que é o DAST, como ele funciona, para que serve e as justificativas para sua implementação no processo de desenvolvimento de software, além das implicações envolvidas. Agora, vamos entender como realizar o setup inicial. Mostraremos a instalação e primeira execução, além de como funciona a interface de usuário do DAST e as configurações iniciais necessárias para rodá-lo pela primeira vez.

Para contextualizar, nesta primeira aula, focada em aplicações web, utilizaremos o OWASP Juice Shop, uma ferramenta famosa criada com o propósito de ser testada, pois contém várias vulnerabilidades por design. Isso nos ajudará a ilustrar como o DAST funciona, como ele identifica essas vulnerabilidades e, mais adiante, exploraremos uma vulnerabilidade juntos.

Estrutura do Curso e Ferramentas Utilizadas

Na segunda etapa, utilizaremos a CRAPI, que será abordada na aula de APIs. Mostraremos como configurar tudo corretamente. Usaremos o OWASP ZAP e, como aplicação vulnerável, o OWASP Juice Shop. Na terceira aula, voltada para APIs, utilizaremos a CRAPI e o OWASP ZAP. Na última aula, integraremos o OWASP ZAP na nossa pipeline utilizando GitHub Actions, e mostraremos um pouco do código. Continuaremos usando o OWASP Juice Shop.

Primeira Execução e Instalação do OWASP Juice Shop

Vamos iniciar com a primeira execução, que envolve a instalação. A ferramenta que utilizaremos é o OWASP Juice Shop. Usaremos a aplicação no Docker, faremos o download e veremos seu funcionamento inicial de forma superficial. Também introduziremos a parte de Scan passivo e Spidering.

Mostraremos o OWASP ZAP, faremos o download para a versão do Windows que estamos usando e instalaremos novamente para demonstração. Após finalizar, abriremos o executável, avançaremos sem mudar nenhuma configuração padrão. Como já estava instalado, apenas atualizaremos a versão. O processo de instalação é basicamente o mesmo.

Configuração do Container e Teste da Aplicação

Agora, configuraremos o container que conterá nossa aplicação, o OWASP Juice Shop. Para isso, utilizaremos o terminal de comando do CMD. Já instalamos o Docker Desktop. Rodamos o Hello World inicial para testar o funcionamento e verificamos a versão. Iniciaremos o processo de instalação da imagem. Primeiro, puxaremos a imagem e, em seguida, executaremos um docker run para rodar na porta 3000 a aplicação do OWASP Juice Shop. No console do Docker Desktop, veremos que a aplicação já está rodando no container.

Para testar, abriremos uma aba e veremos a aplicação em funcionamento. Mostraremos o OWASP ZAP e sua interface gráfica. A ferramenta DAST possui três menus na janela principal: o automated scan, voltado para scan ativo, e o manual explore, usado para scan passivo. Ao realizar qualquer scan, na aba de sites, veremos o endereço IP e a aplicação, juntamente com os endpoints ligados a ela. Tudo que o OWASP ZAP capturar de endpoint aparecerá na aba sites.

Configurações de Proxy e Certificado

No painel inferior, temos a parte de histórico, localização e alertas, onde aparecerão as vulnerabilidades reportadas durante os scans. Agora, mostraremos algumas configurações para melhorar a fluidez dos testes, como configurações de proxy e certificado.

A primeira ação que devemos realizar é acessar a seção de ferramentas, selecionar opções e, em seguida, o menu de opções. Diversas caixas de opções estarão disponíveis para seleção. Devemos expandir a opção chamada Network e, dentro dela, acessar a última opção denominada Server Certificates. Nesta aba, já existe um certificado gerado, mas vamos gerar um novo e salvá-lo em um local de fácil acesso, como em uma pasta específica.

Recomendamos também o download do Firefox, pois o DAST funciona melhor com a interface do OWASP ZAP, que se integra de forma mais eficiente com o Firefox. Vamos demonstrar as configurações necessárias no navegador para realizar os testes de maneira mais dinâmica.

Configuração do Firefox para Integração com OWASP ZAP

No Firefox, acessamos o menu, depois configurações, e na aba de configurações, importamos o certificado gerado. Dentro das configurações do Firefox, na seção de privacidade e segurança, importamos o certificado na opção certificados. Na aba autoridades, clicamos em importar e selecionamos o certificado, marcando a opção "confiar nesta CA para identificar sites". Confirmamos com "ok".

A segunda parte da configuração envolve o proxy. No OWASP ZAP, dentro de ferramentas, opções, local servers e proxies, o ZAP escuta por padrão na porta 8080. Configuramos o Firefox para que todo o tráfego seja direcionado para o OWASP ZAP. No Firefox, em geral, configurações de rede, configuramos a conexão manualmente. O proxy será HTTP, com endereço local host 127.0.0.1 na porta 8080. Devemos deixar a opção "sem proxy para" vazia para garantir a comunicação entre o navegador e o OWASP ZAP. Confirmamos com "ok" e testamos abrindo a aplicação OWASP Juice Shop, que roda na porta 3000, no Firefox.

Além da configuração de rede, é importante realizar uma alteração em About Config no Firefox. Aceitamos o risco e continuamos. Procuramos pela diretriz Network proxy allow hijacking local host e alteramos para True, pois por padrão está como False. Essa alteração permite que o Firefox confie no proxy e intercepte o tráfego local. Sem essa mudança, o Firefox não encaminhará o tráfego local para o proxy, mesmo que configurado.

Continuação com a Aula de Scan Passivo

Vamos prosseguir com a aula de Scan passivo.

Sobre o curso DAST: Segurança dinâmica em aplicações web e APIs

O curso DAST: Segurança dinâmica em aplicações web e APIs possui 173 minutos de vídeos, em um total de 52 atividades. Gostou? Conheça nossos outros cursos de Segurança em DevOps, ou leia nossos artigos de DevOps.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Aprenda Segurança acessando integralmente esse e outros cursos, comece hoje!

Conheça os Planos para Empresas