>>> Descobrindo falhas de segurança
Como os hackers conseguem descobrir falhas de segurança nos softwares? O que é preciso para descobrir uma?
Sidemar Fideles Cezario
Existem duas interpretações para essas sua pergunta.
Se você quer auditar um sistema para verificar se ele está vulnerável a alguma falha conhecida, existem ferramentas prontas que fazem esse tipo de análise.
Por outro lado, também é possível que você queira saber como essas brechas são identificadas pela primeira vez, durante uma pesquisa original sobre a segurança de um aplicativo.
Essa é uma pergunta bastante interessante, mas extremamente complicada. Descobrir falhas de segurança não é nada fácil, pois é preciso conhecer programação, conhecer os erros cometidos por programadores e, em um passo adiante, ter ainda mais conhecimento sobre programação para desenvolver códigos que explorem a vulnerabilidade encontrada.
Às vezes, é preciso criatividade para pensar como ninguém ainda pensou e fazer um ataque novo, encontrando possibilidade de exploração onde antes não existia.
Os profissionais contam com uma série de ferramentas para auxiliar nessa tarefa. Um exemplo são os fuzzers. O fuzzer ajuda a encontrar a falha de segurança básica – aquela que existe em um erro de processamento de entrada. O fuzzer é um software de teste que envia várias entradas (inputs) para um software e verifica se em algum caso ocorre um erro (como um travamento).
Por exemplo, um programa que lê imagens pode ter uma falha quando não souber lidar com a leitura de uma imagem corrompida de uma maneira específica – o dado de entrada nesse caso é a própria imagem. Um navegador pode travar quando você digitar um endereço muito longo na barra de endereços – outro erro de entrada (o endereço). Uma impressora pode travar quando você enviar um documento para impressão (a entrada é o documento).
A partir desse erro, o especialista pode verificar qual era o estado do programa quando ele travou – normalmente usando uma ferramenta chamada debugger. Dependendo desse estado, pode ser possível transformar aquele erro em uma falha de segurança, manipulando os dados de entrada para que ele trate aqueles dados como instruções diretas para o processador. Às vezes, o próprio travamento é uma falha de segurança (por exemplo, uma loja virtual não quer que alguém possa travar o sistema da loja facilmente).
OllyDbg e IDA Pro: dois debuggers em ação mostrando códigos de um software (Foto: Reprodução)
De qualquer forma, é preciso extenso conhecimento de programação e sobre os detalhes de funcionamento do computador – como ele trava, por que trava, e de que forma um travamento pode se transformar uma vulnerabilidade. As brechas exploradas de forma “elegante” não deixam o programa travar ou pelo menos não deixam o travamento ser percebido pelo internauta.
Em outros casos, pode ser preciso descobrir uma falha de planejamento (design), normalmente quando um recurso foi mal pensado. Um exemplo é a falha das imagens WMF do Windows, que tinham a capacidade de executar códigos para melhorar o desempenho dos computadores no início dos anos 90. Quando o Windows XP voltou a ter suporte para WMF, em 2001, os criminosos viram a oportunidade de usar a função para a instalação de vírus.
Outro exemplo é a técnica conhecida Shatter, que forçou a Microsoft a mudar a forma que serviços são executados no Windows de tal maneira que o problema não pode ser corrigido por completo no Windows XP. Falhas de arquitetura e planejamento são geralmente as mais difíceis de corrigir, mas são também as que precisam mais criatividade para serem percebidas.
Nenhum comentário:
Postar um comentário