Em 1988, o primeiro grande vírus Internet - propagação substituiu uma pequena seção, 536- byte de memória em um único computador e dentro de quatro dias , incapacitado mais de 60.000 computadores em todo o mundo . Apesar dos avanços nas linguagens de programação, técnicas de programação e sistema operacional de fortalecimento de segurança , os programadores maliciosos ainda podem criar vírus e outros malwares com estouros de buffer de funcionar , o controle ou roubar dados do seu sistema. Tipos de memória envolvidos
Um buffer de computador é uma seção de sua memória que é usado para armazenar temporariamente os dados necessários para um aplicativo ou o sistema operacional. Um aplicativo tem um buffer fixo ou estático chamado de pilha , cujo tamanho é determinado quando o programa é compilado pela primeira vez e alocados pelo sistema operacional quando o aplicativo é carregado. Memória Heap é outro tipo de buffer de um aplicativo usa enquanto está em execução . Ao contrário dos buffers estáticos , memória heap é criado e destruído como o aplicativo requer .
Estática saturações de buffer
estouros de buffer estático ocorrer quando muitos dados são gravados em um pré-definido parte da memória dentro de pilha do aplicativo. A pilha contém informações sobre a função da aplicação e variáveis da função . Os itens da pilha tem um tamanho fixo ou estático. Se mais dados são gravados em um item de pilha do que pretende realizar , o excesso de dados são armazenados em posições de memória adjacentes. Os dados em excesso pode corromper os dados que já estão lá .
Heap Overruns
Heap memória é o espaço de seu sistema operacional dá o aplicativo para criar e armazenar informações sobre mosca. Cada bloco de pilha tem um ponteiro para o endereço físico do bloco de memória antes e depois dele . Como estouros de pilha, quando muitos dados são gravados em um bloco previamente alocado de memória, o excesso de dados transborda para o próximo bloco de memória e pode alterar ponteiros seguintes e anteriores do bloco . Isto pode ser usado para travar o aplicativo ou colocar ponteiros para blocos de memória que o programador malicioso tem acesso .
Matriz erros de indexação
Quando matrizes são declaradas na maioria das linguagens de programação , uma seção fixa de memória no heap é pré- alocada para os dados do array. As linguagens C e C + + alocar adequadamente matrizes , mas não impedem que o bloco de memória variedade de serem substituídos . Como estouros de pilha , os erros de indexação pode substituir e blocos adjacentes corruptos de memória. Línguas modernas, como C # e Java para verificação de erro de indexação de matriz em tempo de compilação e durante a execução do programa .