Skip to main content

O que é Heap Spraying?

A pulverização de heap é uma técnica de hacking usada para explorar vulnerabilidades em software de computador. Ele atua para obter controle sobre um programa, aproveitando uma parte de sua memória. Depois que uma parte da memória é controlada pelo código de hackers, o hacker pode assumir o controle da execução do código implementando um estouro de buffer na área de heap da memória. O aplicativo mais comum para pulverização de pilha é invadir navegadores da Web como o Internet Explorer®.

Um "heap" é um bloco dinâmico de memória que o computador atribui a um programa específico, assim nomeado porque o computador dedica uma pilha virtual de memória ao programa. Isso pode ser pensado como espaço de armazenamento em um armário ou mesa. Esse monte de memória pertence ao programa até que o software ou o código de coleção do sistema operacional o libere. O código de coleção é simplesmente um dispositivo à prova de falhas que recupera memória se o programa travar ou se o software falhar ao liberar a memória após o término do uso.

Na pulverização de pilha, um hacker tenta "pulverizar" a pilha de memória com uma parte específica do código. O objetivo é colocar o código em uma posição específica na pilha de memória do programa, como colocar um pé de cabra na borda de um batente da porta para fornecer alavancagem para forçar a porta a abrir. Depois que as informações são inseridas no heap de memória por meio de spray de calor, o hacker pode exceder o heap ou o buffer de memória inteiro, gerando erros no sistema. Quando ocorrem erros, o hacker pode tirar proveito deles para executar seu próprio código no sistema.

A pulverização de heap funciona devido à alocação dinâmica de memória no sistema. O programa de computador basicamente "possui" todo o pedaço de memória no momento, de modo que o hacker já conhece a localização relativa na memória que o computador atribuiu ao programa. Portanto, o hacker precisa de pouca especificidade para inserir seu código nas falhas; ele pode aplicar o código às cegas, sabendo que o bloco de memória sempre estará lá enquanto o programa continuar em execução. Isso pode ser comparado a tentar abrir uma fechadura enquanto estava com os olhos vendados; a tarefa se torna quase impossível se a trava estiver se movendo, mas enquanto permanecer em um local fixo - assim como a pilha de memória no sistema - a tarefa se tornará possível.