In this article
Tipos de auditoria de cibersegurança explicados
Os 3 tipos de auditoria de segurança e quando usar cada um
O que é uma auditoria de segurança?
Uma auditoria de segurança é o processo de analisar o código-fonte ou examinar um programa durante sua execução para identificar vulnerabilidades de segurança, problemas de conformidade ou outros riscos potenciais. Durante uma auditoria de segurança, desenvolvedores e equipes de segurança usam ferramentas de análise estática, ferramentas de análise de código-fonte e outros métodos para identificar problemas antes que invasores possam explorá-los para comprometer os ativos de TI ou os dados confidenciais de uma empresa.
Neste artigo, abordaremos três tipos de auditoria de segurança de código, as diferenças entre auditorias internas e externas e como auditar a segurança ao longo do ciclo de vida de desenvolvimento de software (SDLC).
Quais são os tipos de auditoria de cibersegurança?
Os três tipos de auditoria de cibersegurança são:
Vamos analisar cada tipo de auditoria de segurança com mais detalhes.
1. Modelagem de ameaças
O desenvolvimento de software moderno depende de alcançar os “três objetivos mágicos”: lançamentos mais rápidos, ciclos mais curtos e código de maior qualidade. Para ter alta qualidade, o código precisa ser seguro. Por isso, a cibersegurança deve ser integrada ao ciclo de desenvolvimento sem prejudicar a capacidade dos desenvolvedores de lançar código rapidamente.
A chave para implementar a segurança de aplicações sem interromper os fluxos de trabalho de DevOps é avaliar os riscos de segurança desde o início usando a modelagem de ameaças. Esse processo analisa os requisitos e a lógica de negócios para identificar possíveis riscos de segurança.
Em particular, a modelagem de ameaças analisa quatro áreas:
O projeto das operações do sistema e do fluxo de dados
Os riscos e as áreas que podem ser exploradas
Como se defender de cada exploração
A eficácia da modelagem de ameaças e das defesas
A modelagem de ameaças é um processo contínuo que nunca termina por completo, mas é o primeiro passo para incorporar a segurança ao processo de desenvolvimento e seguir as práticas recomendadas de higiene em cibersegurança.
2. Avaliação de vulnerabilidades/teste de penetração
As avaliações de vulnerabilidades partem do princípio de que é mais fácil corrigir vulnerabilidades quando elas são identificadas antes de chegarem ao ambiente de execução. Com o uso de ferramentas de análise estática e análise de código-fonte em auditorias de segurança de código, as organizações podem identificar e corrigir os tipos mais comuns e arriscados de vulnerabilidade, incluindo ataques de injeção e vulnerabilidades de terceiros. Além disso, podem garantir que o código atenda aos requisitos de conformidade e licenciamento antes do lançamento.
O teste de penetração é uma forma de hacking ético em que profissionais internos ou externos tentam identificar vulnerabilidades simulando um ciberataque a um ambiente.
Os testes de penetração podem ser de três tipos, dependendo do nível de visibilidade que o profissional tem do código: caixa branca, caixa preta e caixa cinza.
Teste de caixa branca
O teste de caixa branca é um teste de penetração em que o profissional ou a ferramenta conhece a estrutura interna do software e entende o que ele deve fazer. Com esse conhecimento, é possível decompor o código nos menores componentes funcionais e testar cada um deles (“teste de unidade”). Também é possível examinar partes específicas do código para garantir que não haja erros, como brechas na lógica de negócios. O teste de caixa branca pode ser automatizado e executado no pipeline de CI com ferramentas como Snyk Code.
Teste de caixa preta
O teste de caixa preta é um teste de penetração em que o profissional ou a ferramenta não tem conhecimento da estrutura interna do software. Assim, ele simula como um invasor tentaria explorar falhas no sistema para comprometê-lo. Entre as técnicas para realizar testes de caixa preta estão:
Fuzzing, que testa serviços de API ou interfaces web com entradas aleatórias ou personalizadas;
Teste de sintaxe, que verifica entradas ou saídas inválidas, como sintaxe incorreta ou exposição de dados confidenciais;
Teste exploratório, em que analistas identificam problemas de segurança ocultos, relatam-nos e sugerem correções;
Análise de dados, que analisa registros ou respostas do sistema para identificar comportamentos suspeitos ou possíveis problemas de segurança.
Um dos métodos mais populares de teste de caixa preta é o teste dinâmico de segurança de aplicações (DAST), que pode ser realizado manual ou automaticamente. Diferentemente das ferramentas de teste estático de segurança de aplicações (SAST), que analisam o próprio código-fonte, o DAST não exige conhecimento da estrutura interna do software e pode ser realizado externamente. Embora o DAST tenha uma taxa menor de falsos positivos do que as ferramentas SAST, pois identifica apenas vulnerabilidades exploráveis, é difícil garantir que toda a base de código tenha sido avaliada. Além disso, é preciso arcar com os custos de implantação das aplicações para realizar os testes DAST.
Teste de caixa cinza
Como os testes de caixa branca e caixa preta têm vantagens e desvantagens, os profissionais costumam recorrer ao teste de caixa cinza para combinar o melhor de cada método. Por exemplo, o teste de caixa cinza simula como um invasor veria uma aplicação e, ao mesmo tempo, usa o conhecimento sobre ela para identificar vulnerabilidades. Se a pessoa que testa conhece a linguagem em que a aplicação foi escrita, pode usar esse conhecimento para encontrar vulnerabilidades comuns nessa linguagem.
3. Auditorias de conformidade de segurança
Aplicações que tratam dados confidenciais protegidos pela HIPAA, pelo PCI ou por outras normas podem exigir cuidados especiais para garantir a conformidade. Em particular, elas devem ser testadas regularmente para identificar vulnerabilidades novas ou ainda não detectadas. A Snyk oferece um serviço de conformidade com PCI que usa conformidade como código e outros métodos para garantir a conformidade e fornecer um histórico para os auditores.
Auditorias de cibersegurança internas e externas
Os tipos de auditoria de cibersegurança incluem auditorias internas e externas. As auditorias internas, realizadas por desenvolvedores e equipes de segurança, são mais adequadas aos testes de caixa branca, pois o código-fonte fica acessível apenas às equipes internas. Já os auditores externos podem aplicar testes de caixa preta sob a perspectiva de um invasor.
Há diversas ferramentas novas disponíveis para auditores internos e externos. Auditores internos podem usar ferramentas avançadas de SAST, como Snyk Code, para identificar automaticamente vulnerabilidades no código. Auditores externos podem recorrer a ferramentas modernas de teste de penetração e a ferramentas sofisticadas com inteligência artificial (IA), como análise de segurança, que monitoram registros e solicitações para identificar padrões incomuns que possam indicar uma vulnerabilidade.
Reforce a segurança dos seus apps com SAST
Testes estáticos de segurança de aplicações, eficientes e práticos, reinventados para desenvolvedores.
Auditoria de segurança ao longo do SDLC
Tradicionalmente, a segurança era abordada no fim do SDLC, mas as práticas de DevSecOps a incorporam desde o início. Com a auditoria contínua da segurança ao longo do SDLC, é possível identificar vulnerabilidades e aplicar correções antes que elas afetem os ambientes de produção. Veja como as auditorias contemplam cada aspecto das aplicações de software modernas:
Auditorias de código aberto
A maior parte do código de uma aplicação moderna pode estar em bibliotecas de código aberto usadas pela aplicação principal. Essas bibliotecas também precisam ser auditadas, pois podem introduzir vulnerabilidades desconhecidas pelos desenvolvedores. A Snyk oferece auditorias de código aberto para ajudar a identificar vulnerabilidades e gerenciar seu software de código aberto. Além disso, Snyk Open Source ajuda a garantir que o uso de código aberto esteja em conformidade com os requisitos de licenciamento aplicáveis.
Revisões de segurança de código
As revisões de código são uma parte essencial do SDLC, pois ajudam a identificar as principais causas da baixa qualidade do código, incluindo problemas de segurança. Elas são um pouco diferentes das auditorias: normalmente são realizadas pelos próprios desenvolvedores e abrangem todos os aspectos da qualidade do código, enquanto as auditorias se concentram especificamente nos riscos de segurança e podem ser conduzidas por equipes de segurança ou auditores externos.
Auditorias de imagens de contêineres
Como os desenvolvedores modernos geralmente especificam as configurações dos contêineres junto com as aplicações, também precisam auditar os processos de gerenciamento desses contêineres. Snyk Container foi desenvolvido para ajudar com a segurança dos contêineres, incluindo a escolha de uma imagem-base segura, atualizações automatizadas da imagem-base e monitoramento contínuo de novas vulnerabilidades. Assim, os desenvolvedores podem usar contêineres com confiança, sem precisar de conhecimentos avançados sobre sistemas operacionais.
Auditorias de modelos de IaC
Com a abordagem de DevOps, os desenvolvedores são cada vez mais responsáveis por configurar a infraestrutura em que seus contêineres serão implantados. Do ponto de vista da segurança, isso significa implementar práticas recomendadas de IaC, como adotar o princípio do menor privilégio, segmentar o tráfego de rede e criptografar dados em trânsito e em repouso.
Comece a participar de desafios de Capture the Flag
Aprenda a resolver desafios de Capture the Flag assistindo sob demanda ao nosso workshop virtual introdutório.
Perguntas frequentes
Por que as auditorias de segurança são importantes?
As auditorias de segurança são uma etapa importante do processo de desenvolvimento, pois ajudam a eliminar problemas e vulnerabilidades nas aplicações. Além disso, em setores altamente regulamentados, como processamento de pagamentos, serviços financeiros e saúde, elas podem ajudar a garantir a conformidade com padrões e regulamentações relacionados a dados. As auditorias de segurança não devem ser apenas uma lista de verificação.
O que uma auditoria de segurança deve incluir?
A auditoria de segurança começa nas etapas iniciais do desenvolvimento de software, com a modelagem de ameaças e a avaliação de riscos. É preciso avaliar as vulnerabilidades no código e nas bibliotecas de código aberto. Em seguida, devem ser realizados testes de invasão para identificar erros no código que ainda não foram detectados e corrigi-los antes que alguém mal-intencionado possa explorá-los.
Com que frequência é preciso realizar auditorias de segurança?
As auditorias são um processo contínuo. Elas devem começar nas etapas iniciais do ciclo de vida de desenvolvimento de software (SDLC), com modelagem de ameaças e avaliações de risco, e continuar com avaliações de vulnerabilidades e testes de invasão. As auditorias de segurança devem fazer parte do processo, e não ser tratadas como uma tarefa adicional.