2.3 Exploits e vulnerabilidade de segurança
Vulnerabilidades de segurança são qualquer tipo de defeito de software ou hardware. Um programa escrito para tirar proveito de uma vulnerabilidade de segurança conhecida é conhecido como exploit. Um criminoso digital pode usar uma exploração contra uma vulnerabilidade para realizar um ataque, cujo objetivo é obter acesso a um sistema, aos dados que hospeda ou a um recurso específico.
2.3.1 Vulnerabilidades de Hardware
Vulnerabilidades de hardware são frequentemente introduzidas por falhas de projeto de hardware. Por exemplo, o tipo de memória chamado RAM consiste basicamente em muitos capacitores (um componente que pode conter uma carga elétrica) instalados muito próximos um do outro. No entanto, logo foi descoberto que, devido à sua proximidade, as mudanças aplicadas a um desses capacitores poderiam influenciar os capacitores vizinhos. Com base nessa falha, foi criado um exploit chamado Rowhammer. Ao acessar (martelar) repetidamente uma linha de memória, a exploração do Rowhammer aciona interferências elétricas que eventualmente corrompem os dados armazenados na RAM.
Meltdown e Spectre
Os pesquisadores de segurança do Google descobriram Meltdown e Spectre, duas vulnerabilidades de hardware que afetam quase todas as unidades de processamento central (CPUs) lançadas desde 1995 em desktops, laptops, servidores, smartphones, dispositivos inteligentes e serviços em nuvem.
Os invasores que exploram essas vulnerabilidades podem ler toda a memória de um determinado sistema (Meltdown), bem como os dados manipulados por outras aplicações (Spectre). As explorações de vulnerabilidade Meltdown e Spectre são conhecidas como ataques de canal lateral (as informações são obtidas com a implementação de um sistema de computador). Eles têm a capacidade de comprometer grandes quantidades de dados de memória, porque os ataques podem ser executados várias vezes em um sistema com muito pouca possibilidade de uma falha ou outro erro.
As vulnerabilidades de hardware são específicas para modelos do dispositivo e geralmente não são exploradas por tentativas comprometedoras aleatórias. Embora as explorações de hardware sejam mais comuns em ataques altamente direcionados, a proteção contra malware tradicional e uma boa segurança física são proteção suficiente para o usuário comum.
2.3.2 Vulnerabilidade de Software
As vulnerabilidades de software geralmente são introduzidas por erros no sistema operacional ou no código do aplicativo.
Exemplo: vulnerabilidade de SYNful Knock descoberta no Cisco Internetwork Operating System (IOS) em 2015
A vulnerabilidade SYNful Knock permitiu que os invasores ganhassem o controle de roteadores de nível empresarial, como os roteadores Cisco ISR antigos, dos quais poderiam monitorar toda a comunicação de rede e infectar outros dispositivos de rede.
Tal vulnerabilidade foi intoduzida no sistema quando uma versão alterada dos IOS foi instalada nos roteadores. Para evitar isso, sempre verifique a integridade da imagem do IOS baixada e limite o acesso físico do equipamento somente ao pessoal autorizado
2.3.3 Categorizando as vulnerabilidades de software
A maioria das vulnerabilidades de segurança de software se enquadra em várias categorias principais.
Estouro de buffer
Os buffers são áreas de memórias alocadas a um aplicativo. Uma vulnerabilidade ocorre quando os dados são gravados além dos limites de um buffer. Ao alterar os dados além dos limites de um buffer, o aplicativo pode acessar a memória alocada para outros processos. Isso pode levar a uma falha do sistema ou comprometimento de dados ou fornecer escalonamento de privilégios.
Entrada não validada
Os programas geralmente exigem entrada de dados, mas esses dados recebidos podem ter conteúdo malicioso, projetado para forçar o programa a se comportar de maneira não intencional.
Por exemplo, considere um programa que recebe uma imagem para processamento. Um usuário mal-intencionado pode criar um arquivo de imagem com dimensões de imagem inválidas. As dimensões criadas de forma mal-intencionada podem forçar o programa a alocar buffers de tamanhos incorretos e inesperados.
Condição de corrida
Esta vulnerabilidade descreve uma situação em que a saída de um evento depende de saídas ordenadas ou cronometradas. Uma condição de corrida se torna uma fonte de vulnerabilidade quando os eventos ordenados ou cronometrados necessários não ocorrem na ordem correta ou na sincronização apropriada.
Fragilidade nas práticas de segurança
Sistemas e dados confidenciais podem ser protegidos por meio de técnicas como autenticação, autorização e criptografia. Os desenvolvedores devem manter o uso de técnicas de segurança e bibliotecas que já foram criadas, testadas e verificadas e não devem tentar criar seus próprios algoritmos de segurança. É provável que elas introduzam novas vulnerabilidades.
Problemas de controle de acesso
O controle de acesso é o processo de controlar quem faz o quê e abrange desde o gerenciamento do acesso físico ao equipamento até ditar quem tem acesso a um recurso, como um arquivo, e o que pode ser feito com ele, como ler ou alterar o arquivo. Muitas vulnerabilidades de segurança são criadas com o uso indevido de controles de acesso.
Quase todos os controles de acesso e as práticas de segurança poderão ser superados se o invasor tiver acesso físico ao equipamento de destino. Por exemplo, não importa as configurações de permissão em um arquivo, um hacker pode ignorar o sistema operacional e ler os dados diretamente do disco. Para proteger a máquina e os dados que ela contém, o acesso físico deve ser restrito e as técnicas de criptografia devem ser usadas para proteger dados contra roubo ou danos.
2.3.4 Atualizações de software
O objetivo das atualizações de software é sempre estar atualizado e evitar a exploração de vulnerabilidades. A Microsoft, Apple e outros fabricantes de sistemas operacionais lançam patches e atualizações quase todos os dias, e aplicativos como navegadores da web, aplicativos móveis e servidores da web são frequentemente atualizados pelas empresas ou organizações responsáveis por eles.
Apesar de as empresas se esforçarem muito para encontrar e corrigir vulnerabilidades de software, novas vulnerabilidades são descobertas regularmente. Enquanto algumas empresas têm equipes de testes de penetração dedicadas para pesquisar, localizar e corrigir vulnerabilidades de software, antes que elas possam ser exploradas, os pesquisadores de segurança de terceiros também são especializados em descobrir essas vulnerabilidades.
Last updated