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.
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.
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.
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.
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.
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?"
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Vamos prosseguir com a aula de Scan passivo.
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:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Matricule-se no plano PLUS e garanta:
Jornada de estudos progressiva que te guia desde os fundamentos até a atuação prática. Você acompanha sua evolução, entende os próximos passos e se aprofunda nos conteúdos com quem é referência no mercado.
Mobile, Programação, Front-end, DevOps, UX & Design, Marketing Digital, Data Science, Inovação & Gestão, Inteligência Artificial
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você participa de eventos exclusivos, pode tirar dúvidas em estudos colaborativos e ainda conta com mentorias em grupo com especialistas de diversas áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Para estudantes ultra comprometidos atingirem seu objetivo mais rápido.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.
Conecte-se ao mercado com mentoria individual personalizada, vagas exclusivas e networking estratégico que impulsionam sua carreira tech para o próximo nível.