Vulnerabilidades de segurança: tipos e como corrigir
11 de fevereiro de 2021
0 minutos de leituraO custo médio de uma violação de dados em 2020 foi de US$ 3,86 milhões, e os custos globais do cibercrime chegaram a US$ 6 trilhões em 2021. 82% das vulnerabilidades conhecidas estão no código de aplicações, e 90% das aplicações são vulneráveis a ataques, sendo que 68% delas estão vulneráveis a violações de dados confidenciais.
Vulnerabilidade vs. exploit vs. ameaça
Para gerenciar os riscos de segurança cibernética com eficácia, é importante entender a diferença entre vulnerabilidade, exploit e ameaça.
O que é uma vulnerabilidade de segurança?
Uma vulnerabilidade de segurança é uma falha no código de um software ou uma configuração incorreta do sistema, como o Log4Shell, que permite que invasores obtenham acesso não autorizado direto a um sistema ou rede. Depois de entrar, o invasor pode aproveitar autorizações e privilégios para comprometer sistemas e ativos.
Um scanner de vulnerabilidades analisa seu ambiente e o compara com um banco de dados de vulnerabilidades ou uma lista de vulnerabilidades conhecidas, ajudando você a encontrar os pontos fracos.
O que é uma vulnerabilidade de software?
Uma vulnerabilidade de software é uma falha no código de um programa que pode ser explorada por um invasor. Invasores podem usar vulnerabilidades para obter acesso não autorizado à rede, roubar dados e comprometer sistemas.
O que é um exploit de segurança cibernética?
Um exploit é uma forma de hackers usarem uma vulnerabilidade para realizar um ataque. Geralmente, é um software criado especialmente ou uma sequência de comandos. Por exemplo, worms de rede como CodeRed, Spida e Slammer exploraram vulnerabilidades em servidores Microsoft IIS (Internet Information Services) e MS-SQL ao longo dos anos.
Existem também kits de exploit (como Rig, Magnitude e Fallout) que podem ser incorporados a páginas da web comprometidas. Esses kits procuram vulnerabilidades continuamente. Quando uma falha é detectada, o kit tenta imediatamente implantar um exploit, como injetar malware no sistema host.
Qual é a diferença entre exploit e invasão?
Um exploit de segurança cibernética manipula bugs ou brechas no código para obter vantagem em um sistema — geralmente para extrair dados confidenciais. Invasões são casos em que alguém obtém acesso não autorizado a dados.
O que é uma ameaça cibernética?
Uma ameaça é um evento real ou hipotético em que um ou mais exploits usam uma vulnerabilidade para realizar um ataque. Por exemplo, o exploit CodeRed, que aproveitava uma vulnerabilidade do Microsoft IIS, foi usado ativamente para infectar mais de 300 mil alvos. Essas ameaças causaram enormes prejuízos financeiros no mundo todo.

Apenas uma pequena porcentagem das vulnerabilidades conhecidas será explorada, ou seja, usada para invadir um sistema. As vulnerabilidades que representam o maior risco são as que têm mais chances de serem exploradas e, por isso, devem ser priorizadas e corrigidas primeiro, como mostra o diagrama:
Tipos de vulnerabilidades de segurança
Vulnerabilidades de segurança podem existir em todas as camadas, incluindo infraestrutura, rede e aplicação. Esta seção se concentra nas falhas de segurança de aplicações e sites.
Duas listas importantes acompanham as falhas que deixam aplicações web e sites vulneráveis a riscos de segurança cibernética. A primeira é mantida pela comunidade aberta e global do
Open Web Application Security Project (OWASP). Entre as cerca de 60 falhas de segurança de aplicações descritas pela OWASP, o OWASP Top 10 Vulnerabilities destaca as que são mais comumente exploradas como vulnerabilidades.
A segunda lista é a CWE, ou Common Weakness Enumeration, uma “lista de tipos comuns de falhas de software e hardware, desenvolvida pela comunidade, que têm implicações de segurança”. A CWE, assim como o conhecido dicionário padronizado Common Vulnerabilities and
Exposures (CVE), é administrada pela MITRE Corporation, uma organização sem fins lucrativos que opera centros de pesquisa e desenvolvimento financiados pelo governo federal dos EUA. A CWE-25 lista, com atualização anual, as 25 falhas de software mais perigosas.
A MITRE CWE-25 enumera três tipos principais de falhas de segurança em aplicações e sites:
1. Defesas vulneráveis
Esse primeiro tipo de falha abrange problemas que podem permitir que usuários burlem ou falsifiquem processos de autenticação e autorização. A autenticação verifica a identidade de quem tenta acessar um sistema, enquanto a autorização define as permissões de acesso e uso atribuídas ao usuário.
Exemplos de falhas em defesas permeáveis incluem:
Codificação fraca de senhas
Credenciais com proteção insuficiente
Ausência de autenticação ou autenticação de fator único
Permissões herdadas de forma insegura
Sessões que não expiram em tempo hábil
Se agentes não autorizados conseguirem acessar e abusar de recursos confidenciais, todos esses tipos de vulnerabilidade em defesas podem comprometer seriamente a postura de segurança da organização.
Exploits que se aproveitam de vulnerabilidades em defesas podem incluir:
Ataques de preenchimento de credenciais
Sequestro de IDs de sessão
Roubo de credenciais de login
Ataques de interceptação de comunicação (MITM) (essencialmente, espionagem eletrônica)
2. Gerenciamento arriscado de recursos
Muitas vulnerabilidades estão relacionadas ao gerenciamento arriscado de recursos como memória, funções e frameworks de código aberto. Durante as etapas de design e desenvolvimento de aplicações web e sites, é fundamental analisar todos os componentes de terceiros que serão incluídos na arquitetura — como bibliotecas e funções — em busca de vulnerabilidades.
As falhas desta categoria incluem:
Leitura ou gravação fora dos limites (buffer overflow): a aplicação pode ser induzida a ler ou gravar dados depois do fim ou antes do início do buffer de memória previsto.
Travessia de diretório: permite que invasores criem caminhos de arquivo para acessar arquivos fora de diretórios restritos.
Ataques de buffer overflow são um exemplo clássico de como falhas no gerenciamento arriscado de recursos expõem aplicações web e sites a riscos de segurança cibernética. Esses ataques exploram controles inadequados de buffers de memória para alterar o fluxo de execução e, assim, assumir o controle da aplicação, danificar arquivos ou exfiltrar informações confidenciais.
3. Interação insegura entre componentes
As arquiteturas de aplicações altamente distribuídas de hoje enviam e recebem dados entre diferentes serviços, threads e processos. Em tempo de execução, aplicações web e sites precisam adotar uma abordagem de confiança zero, na qual toda entrada é considerada suspeita até que se verifique ativamente que ela vem de uma fonte confiável e se destina à finalidade prevista.
Entre as falhas que expõem uma aplicação web ou um site a interações inseguras e arriscadas estão:
Cross-site scripting ou XSS: neutralização inadequada de entradas controladas pelo usuário durante a geração de páginas da web. A sequência de eventos que faz com que um script malicioso seja veiculado em uma página gerada começa quando dados não confiáveis entram em uma aplicação web, geralmente por meio de uma solicitação web.
Falsificação de solicitação entre sites (CSRF): verificação inadequada para determinar se uma solicitação aparentemente legítima e autêntica foi enviada de propósito. Esses ataques costumam ser realizados por meio de técnicas de engenharia social, como e-mails falsos que induzem o usuário a clicar em um link ou enviar uma solicitação forjada para um site ou servidor no qual já está autenticado.
Em geral, aplicações web ou sites que não implementam controles de segurança de confiança zero ficam vulneráveis a ataques por backdoor, ataques de script, worms, cavalos de Troia e outros exploits que implantam código malicioso para causar estragos na infraestrutura, nos dados e nos sistemas.
Qual é a vulnerabilidade mais comum?
Tanto o OWASP-10 quanto o CWE-25 apontam falhas de injeção como as vulnerabilidades mais comuns. Embora a injeção de código possa assumir muitas formas (SQL, NoSQL, SO, LDAP), ela sempre envolve o envio de dados maliciosos a um interpretador por meio de um comando ou consulta. O interpretador é induzido a executar ações não autorizadas, como executar comandos ou acessar dados.
Como encontrar e corrigir vulnerabilidades de segurança
As vulnerabilidades de segurança são encontradas e corrigidas por meio de programas formais de gerenciamento de vulnerabilidades. Esse gerenciamento reúne práticas recomendadas e procedimentos entre equipes para identificar, priorizar e corrigir vulnerabilidades com rapidez e em escala.
A avaliação de vulnerabilidades de segurança é uma parte importante do programa de gerenciamento de vulnerabilidades. Ela busca avaliar a eficácia dos processos e procedimentos de gerenciamento de vulnerabilidades da organização por meio de testes de invasão e outros testes automatizados de avaliação.

O gerenciamento e a avaliação de vulnerabilidades de segurança devem ser parte integrante de um ciclo de vida de desenvolvimento seguro de software (Secure SDLC), que testa código, bibliotecas, imagens de contêineres e outros componentes em busca de falhas e vulnerabilidades durante todas as fases do ciclo de vida do produto.
Ferramentas para corrigir vulnerabilidades de segurança em todo o SDLC
As ferramentas automatizadas que ajudam as equipes de DevSecOps a implementar o Secure SDLC incluem:
Ferramentas de análise de composição de software (SCA): descobrem e monitoram todos os componentes, além de alertar sobre problemas e ajudar a corrigi-los.
Ferramentas de segurança de aplicações estáticas (SAST): realizam avaliações de vulnerabilidades de caixa branca em código não compilado.
Ferramentas de segurança de aplicações dinâmicas (DAST): realizam avaliações de vulnerabilidades de caixa preta em código executável.
Scanners de vulnerabilidades de código aberto: identificam vulnerabilidades em bibliotecas de código para acelerar a resposta e a correção, além de garantir a conformidade com os requisitos de licenças de código aberto.
Muitas ferramentas de gerenciamento de vulnerabilidades usam um banco de dados de vulnerabilidades conhecidas para fazer análises e avaliações. O Snyk Intel Vulnerability Database, por exemplo, reúne e enriquece fontes públicas e proprietárias de vulnerabilidades e inteligência sobre ameaças para oferecer o scanner de vulnerabilidades de código aberto mais abrangente e eficiente do setor.
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.
