As vulnerabilidades de software são um problema significativo na segurança cibernética. Eles permitem que produtos de software sejam atacados e quando esses produtos estão conectados a redes seguras, eles podem fornecer um ponto de entrada para hackers.

Todos os produtos de software profissional são exaustivamente testados antes do lançamento. Infelizmente, as vulnerabilidades ainda são uma ocorrência comum. Uma maneira de encontrar vulnerabilidades adicionais é usar uma técnica de teste de software conhecida como fuzzing.

Então, o que é fuzzing e como funciona?

O que é Fuzzing?

Fuzzing é uma técnica de teste de software automatizada que tenta encontrar vulnerabilidades usando entradas aleatórias.

O software geralmente se comporta de forma imprevisível quando o usuário insere uma entrada diferente da que foi solicitada. Fuzzing é a prática de inserir grandes quantidades de entradas inesperadas e registrar o que acontece. A ideia é que o usuário possa monitorar o software e determinar se há ou não vulnerabilidades presentes.

instagram viewer

Fuzzing é usado para testar produtos de software e por profissionais de segurança para determinar se uma rede é segura. Também é usado por hackers que praticam fuzzing para encontrar vulnerabilidades que eles mesmos podem usar.

As vulnerabilidades descobertas pelo fuzzing variam muito. Uma entrada inesperada pode fazer com que o software simplesmente falhe. Mas também pode retornar informações privadas ou permitir que o usuário acesse partes do software que de outra forma estariam fora dos limites.

Quais são as vantagens do Fuzzing?

Fuzzing é apenas uma das muitas maneiras pelas quais os produtos de software podem ser testados quanto a vulnerabilidades. É popular porque:

  • Fuzzing é totalmente automatizado. Uma vez que um programa de fuzzing é configurado, ele pode continuar procurando por vulnerabilidades sem intervenção humana.
  • Fuzzing pode encontrar vulnerabilidades que outras técnicas de teste de software não encontram. Por isso, muitas vezes é usado em adição às técnicas manuais.
  • Fuzzing é frequentemente usado por hackers para encontrar vulnerabilidades de dia zero. Usar as mesmas técnicas dos hackers permite que os desenvolvedores encontrem vulnerabilidades de dia zero antes que eles o façam.

Como funciona o Fuzzing?

Uma ferramenta usada para fuzzing normalmente tem três componentes. Eles são muitas vezes referidos como um poeta, um mensageiro e um oráculo.

O poeta

O poeta inicia o processo e é responsável por gerar um caso de teste. Um caso de teste é uma longa lista de entradas potenciais.

O Correio

O mensageiro insere todas as entradas aleatórias no software de destino. Fuzzers são projetados para fazer isso automaticamente, permitindo que grandes quantidades de entradas sejam testadas em massa.

O Oraculo

O oráculo verifica se alguma das entradas faz com que o software faça algo diferente do que foi projetado para fazer. Se o fuzzing estiver sendo realizado para fins legítimos, o comportamento poderá ser replicado e corrigido. Ou se o fuzzing estiver sendo realizado por um hacker e o comportamento inesperado for útil, ele poderá ser usado para fins maliciosos.

Como os invasores usam o Fuzzing?

Fuzzing é uma técnica popular entre os hackers porque permite que eles encontrem vulnerabilidades em softwares sem acesso ao código-fonte. Como o fuzzing é automatizado, também é fácil de executar. Se um hacker descobrir uma vulnerabilidade, ele poderá executar os seguintes ataques.

Ataques DDoS

Se o fuzzing descobrir que certas entradas exigem muito tempo para serem processadas, essas informações podem ser usadas para iniciar um ataque DDoS. Um ataque DDoS envolve o envio de tantas solicitações para um sistema que ele para de funcionar. O fuzzing permite que as solicitações sejam adaptadas para que exijam a maioria dos recursos do sistema para responder.

Injeção SQL

Um ataque de injeção de SQL é quando instruções SQL maliciosas são enviadas para um aplicativo. Se essas instruções não forem devidamente higienizadas, elas poderão permitir que um invasor interaja com o banco de dados. Isso pode permitir que eles roubem dados ou os modifiquem. Fuzzing é uma ferramenta eficaz para tentar grandes quantidades de instruções SQL e determinar se alguma produz uma resposta favorável.

Estouro de buffer

Um ataque de estouro de buffer é quando mais dados são adicionados ao buffer de um programa do que ele pode manipular. Nesse cenário, é possível que um hacker faça com que esse programa execute código malicioso. Isso pode ser usado para roubar dados ou obter acesso não autorizado. Fuzzing é usado para encontrar entradas que podem causar um estouro de buffer.

Tipos de Fuzz

As ferramentas de fuzzing podem ser classificadas com base em como os casos de teste são gerados e quanto se sabe sobre o sistema.

Mudo vs. Inteligente

Dumb fuzzing simplesmente adiciona grandes quantidades de entradas aleatórias. Ele não escolhe entradas com maior probabilidade de serem aceitas pelo aplicativo. Isso facilita a implementação sem saber nada sobre o software; no entanto, também é altamente ineficiente, pois a maioria das entradas será rejeitada.

O fuzzing inteligente gera entradas que o aplicativo provavelmente aceitará. Requer que o usuário entenda qual formato de entrada é aceitável e então gere grandes quantidades de entradas dentro desse formato. O fuzzing inteligente requer mais esforço e conhecimento do produto para ser implementado, mas é significativamente mais eficiente.

Mutacional vs. Geracional

Fuzzers mutacionais pegam uma entrada que foi previamente aceita e fazem pequenas alterações nela. Isso permite a geração de entradas que provavelmente serão aceitas sem o conhecimento do formato aceito.

Fuzzers geracionais criam entradas inteiramente novas com base no que se sabe sobre o formato aceito.

Caixa Branca vs. Caixa preta

O fuzzing de caixa preta é usado sem nenhuma informação sobre o aplicativo que está sendo testado. É menos eficaz do que o fuzzing de caixa branca, mas pode ser aplicado a qualquer aplicativo sem acesso ao código-fonte. Isso o torna popular entre os hackers.

O fuzzing de caixa branca usa informações sobre o aplicativo que está sendo testado para criar entradas com maior probabilidade de serem aceitas e produzir vulnerabilidades. É usado principalmente por desenvolvedores de software porque é mais eficaz do que o fuzzing de caixa preta.

Fuzzing é um poderoso método de teste de software usado por desenvolvedores de software, profissionais de segurança e hackers. Requer um esforço mínimo para implementar e é capaz de encontrar vulnerabilidades que outras técnicas de teste de software não conseguem.

É particularmente importante do ponto de vista da segurança porque é frequentemente usado para descobrir vulnerabilidades de dia zero. Essas vulnerabilidades podem ser descobertas e corrigidas por profissionais de segurança ou descobertas e exploradas por hackers.