Alura > Cursos de DevOps > Cursos de Segurança > Conteúdos de Segurança > Primeiras aulas do curso Segurança em Desenvolvimento: práticas de SAST e integração em CI/CD

Segurança em Desenvolvimento: práticas de SAST e integração em CI/CD

Fundamentos da análise estática - Apresentação

Apresentando o instrutor e o curso

Olá! Meu nome é Rodrigo da Silva Ferreira Caneppele e estou aqui para começarmos nosso curso sobre SAST, que é Análise Estática de Segurança de Software. Vamos explorar algumas ferramentas open source (código aberto) e explicar a diferença em relação às ferramentas enterprise (empresariais), além de como podemos validar o código dentro de uma ferramenta de segurança, que neste caso é o SAST.

Possuo formação em Engenharia de Computação, com mestrado na área de Engenharia Biomédica, em Cibersegurança e em Cloud (nuvem).

Audiodescrição: Rodrigo é um homem branco, com cabelo castanho claro e comprido. Ele veste uma blusa azul e está em um ambiente de escritório, com uma parede branca ao fundo e uma estante com livros à sua direita.

Explorando DevSecOps e Application Security

Olá! Vamos explorar a área de DevSecOps e Application Security, com o objetivo de ajudar as pessoas desenvolvedoras a construir aplicações cada vez mais seguras. Uma das etapas importantes que abordaremos nesta disciplina é a adesão do SAST.

Um ponto interessante que sempre gostamos de destacar é a questão da cultura maker. Para aqueles que têm alguma dificuldade em programar, conhecer um pouco sobre Arduino e microcontroladores pode ser bastante útil. Essa prática pode ajudar a visualizar a programação de forma mais concreta, assim como nos ajudou.

Iniciando o curso

Durante o curso, comentaremos alguns trechos de código que podem ser de interesse. Acreditamos que vale muito a pena conferir. Vamos começar o nosso curso. Obrigado! [♪]

Fundamentos da análise estática - O que é SAST?

Introduzindo o curso sobre SAST

Olá, pessoal. Nós somos responsáveis pelo novo curso sobre SAST. E o que é SAST? É a Análise Estática de Segurança de Software, onde vamos entender sobre ferramentas tanto Enterprise quanto Open Source. Vamos configurar ferramentas Open Source, como o SonarQube, para identificar vulnerabilidades relacionadas à segurança no código de uma aplicação.

Para começarmos nossa primeira aula, vamos aos fundamentos da análise estática, mais conhecida como SAST. O que seria então o SAST? É a forma que temos para analisar um código em uma aplicação e, assim, encontrar vulnerabilidades, principalmente em padrões voltados para o OWASP, que é a principal diretriz que temos para identificar vulnerabilidades em aplicações, principalmente web. Ela é utilizada para analisar o código de forma estática, ou seja, sem executar o código, para identificar vulnerabilidades práticas e fraquezas de segurança.

Exemplificando vulnerabilidades comuns

Por exemplo, podemos procurar por senhas que podem estar hardcoded, ou seja, senhas que estão dentro do código da aplicação. Podemos encontrar problemas relacionados à autenticação e autorização dentro da aplicação, como não identificar que a pessoa usuária está realmente registrada e que pode acessar uma tela específica em uma aplicação web. Utilizamos essa análise antes de colocar a aplicação em produção.

Veremos mais adiante que podemos usar um pipeline antes de fazer o deploy, ou seja, levar a aplicação para a produção. Teremos um processo de esteira para passar o código por uma dessas ferramentas, como o SonarQube, e verificar se existe algum tipo de vulnerabilidade específica no código, sem executar a aplicação.

Destacando a importância do SAST

Por que o SAST é importante? Porque conseguimos, desde o que entendemos sobre SSDLC, que é o ciclo de desenvolvimento de software seguro, identificar vulnerabilidades logo no início do ciclo de desenvolvimento do software. Detectamos falhas e vulnerabilidades de forma precoce, reduzindo o risco de levar a aplicação com vulnerabilidades para o futuro, evitando a necessidade de corrigir o código quando estiver em produção, de forma mais rápida. Assim, não temos esse custo e conseguimos resolver esses pontos antes de fazer o deploy.

Reduzimos o custo e ajudamos a educar as pessoas desenvolvedoras, pois temos ferramentas que podem ser integradas na esteira, com um processo que pode bloquear o pipeline. Se houver alguma vulnerabilidade, a pessoa desenvolvedora precisa corrigir. Ao mesmo tempo, conseguimos integrar na IDE, como o Visual Studio Code ou outras ferramentas, para ver essas vulnerabilidades enquanto desenvolvemos a aplicação. O código é escaneado, e as vulnerabilidades são apresentadas no output da IDE. Vamos explorar mais sobre isso também, permitindo que a pessoa desenvolvedora corrija antes mesmo de passar pelo processo de pipeline.

Explorando exemplos de vulnerabilidades específicas

Conseguimos ter exemplos voltados para o ASP, como a questão de SQL Injection, Cross-Site Scripting, e também validações de entrada da aplicação. Muitas vezes, podemos ter o Path Traversal, que é uma forma de inserir arquivos em um upload dentro de uma aplicação. Se não estivermos com a extensão correta e o metadata (dados da aplicação) de forma adequada, a aplicação pode estar vulnerável, caso não tenhamos as validações esperadas para sua execução.

Além disso, temos a questão de hardcoded secrets, que se refere a deixar senhas fixadas dentro do código, o que também gera vulnerabilidades. Isso é muito comum, e já vimos vários casos de senhas expostas no GitHub, um site de versionamento de código, onde qualquer pessoa poderia ver e explorar a aplicação.

Concluindo sobre a importância do SAST

Entendemos que o SAST é um pilar de segurança, pois ajuda a pessoa desenvolvedora a compreender melhor o código e corrigi-lo de forma proativa. Assim, conseguimos aumentar a maturidade da aplicação, promovendo uma cultura de desenvolvimento seguro. Espero que isso esclareça a importância do SAST no ciclo de desenvolvimento de software, complementando outras técnicas utilizadas, como a parte de SCA, para analisar as dependências das aplicações, tanto diretas quanto indiretas, que podem vir de repositórios como o npm ou pip do Python. Também há a questão do DAST, que envolve executar a aplicação e encontrar falhas de segurança.

O resumo é que o SAST não é apenas uma ferramenta, mas um processo contínuo no código. Temos uma imagem que mostra um código com vulnerabilidade de parametrização, como o XSS, onde não há pré-validação de entrada. A aplicação em questão é uma ferramenta paga chamada Snyk, que destaca esse ponto para nós.

Utilizando ferramentas e IA para SAST

Se você tiver o Visual Studio Code ou Cursor, pode buscar pela extensão Snyk, instalá-la, e, após autenticar-se, rodar seu código. É possível clicar em RISC-E para encontrar vulnerabilidades na aplicação. A ferramenta mostra a correção e exemplos de como corrigir, permitindo que você aceite a correção.

Hoje em dia, com a IA, também conseguimos fazer isso através de prompts que podemos adicionar. A ideia aqui é explicar um pouco sobre o SAST e como ele funciona no ciclo de desenvolvimento de software, o que veremos de forma mais aprofundada no curso.

Espero que tenham gostado da aula. Obrigado!

Fundamentos da análise estática - SAST, SCA e DAST

Introduzindo o tema da aula

Olá, pessoal. Vamos continuar nossa aula sobre SAST. Na aula anterior, explicamos os fundamentos do SAST, que é a análise estática de código. Isso significa que analisamos o código da aplicação para identificar vulnerabilidades. Mencionamos que existem outras ferramentas que auxiliam na parte do SAST, como o DAST e o SCA. Agora, vamos discutir um pouco sobre essas diferenças. O DAST está relacionado ao teste dinâmico na aplicação, enquanto o SCA está ligado aos componentes, que são as bibliotecas daquela aplicação.

Temos aqui uma visão geral dessas abordagens. O SAST é a análise estática de segurança, focada em analisar o código da aplicação, enquanto o DAST é uma análise dinâmica. Para esclarecer o que é o DAST, vamos apresentar uma ferramenta chamada Burp Suite. Caso alguém queira instalar, pode buscar pelo site portswigger.net/burp/community. Há uma opção gratuita e uma paga. Esta ferramenta ilustra o conceito de teste dinâmico, que analisa a interface da aplicação.

Demonstrando o uso do Burp Suite

Geralmente, no teste dinâmico, especialmente em pipeline, conseguimos realizar um scan com vários parâmetros de forma automatizada na interface da aplicação. Vou demonstrar rapidamente essa ideia de teste dinâmico usando o Burp Suite, que funciona como um proxy. Ao funcionar como um proxy, podemos interceptar uma requisição, por exemplo, quando tentamos acessar um site. Dessa forma, conseguimos pausar essa requisição e modificar os parâmetros desejados.

Para ilustrar, se formos à parte de interceptação, podemos abrir o navegador diretamente. Vou abrir o site do Google. Vocês verão que acessou, e conseguimos ver o histórico dessa configuração. Se ativarmos a interceptação e tentarmos acessar, por exemplo, "Fluminense", perceberão que a navegação não prossegue. Podemos clicar em forward, mas ainda não avança. A ideia do forward é permitir que modifiquemos uma dessas requisições, inserindo informações e manipulando a requisição. Ao desativar a interceptação, o acesso é liberado, pois o Burp Suite atua como um proxy.

Explorando o conceito de teste dinâmico

Podemos acessar o histórico e utilizar o que chamamos de repeater para modificar a configuração da requisição, buscando vulnerabilidades e analisando a resposta. A ideia do teste dinâmico é essa. Em uma pipeline, o processo é automatizado. Aqui, mostramos de forma manual como funciona esse teste, conhecido como teste dinâmico.

Tudo bem? Vamos retornar aos nossos slides. Por último, abordaremos a parte de SCA, que se refere à análise de dependência de componentes, ou seja, análise de bibliotecas. Uma ferramenta muito conhecida para isso é o Snyk, que possui uma parte dedicada a SCA, permitindo consultar bibliotecas. Por exemplo, o Snyk Security consegue identificar pacotes vulneráveis por componentes, como o PIP, e verificar vulnerabilidades associadas. Recomendamos a ferramenta Snyk para quem deseja analisar sua aplicação em busca de vulnerabilidades. Ela permite conhecer as vulnerabilidades e especificar o tipo de pacote ou biblioteca.

Comparando SAST, DAST e SCA

A diferença aqui é que, ao pensarmos em SCA, estamos focados em bibliotecas. A parte de DAST é uma forma dinâmica, enquanto a análise de SAST se refere ao código, como vimos na aula anterior, utilizando a IDE.

O SAST é conhecido como teste de caixa branca, pois, ao realizar um teste para uma empresa, se não nos fornecerem apenas um endpoint, chamamos isso de black box. Quando solicitamos outras informações, como o código fonte, e conseguimos buscar vulnerabilidades, chamamos de white box, ou teste de caixa branca. Com acesso total, podemos examinar a estrutura do código e buscar vulnerabilidades sem precisar de análise dinâmica. Isso é útil em estágios mais estruturais e iniciais, pensando no Secure Shift Left.

Já o DAST, ao focar na URL, não permite ver o código de forma estrutural. Tentamos simular ataques reais, como um hack, o que chamamos de black box. Nesse caso, não temos acesso a outras informações, geralmente recebemos um endpoint específico, e, às vezes, alguma estrutura da rede. Buscamos vulnerabilidades no IP fornecido.

Concluindo com a importância do SCA

O SCA é a análise das bibliotecas, buscando CVEs específicos e vulnerabilidades. Por exemplo, ao consultar o database voltado ao TensorFlow, uma biblioteca específica para Machine Learning, podemos verificar se há vulnerabilidades. Ele indica que é médio e podemos ver onde está sendo afetado e que tipo de vulnerabilidade é. Essas aplicações são interessantes, pois permitem ver tipos específicos de vulnerabilidades, como SQL Injection ou Directory Traversal, mostrando por vulnerabilidade ou pacote.

Esperamos que esta aula tenha ficado clara e que tenham gostado. Muito obrigado.

Sobre o curso Segurança em Desenvolvimento: práticas de SAST e integração em CI/CD

O curso Segurança em Desenvolvimento: práticas de SAST e integração em CI/CD possui 163 minutos de vídeos, em um total de 46 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