? Segurança do computador torna-se esotérica ao lidar com as vulnerabilidades de segurança em um nível de hardware. Mesmo a estrutura de execução básico de computadores tem buracos que os hackers podem explorar. Os engenheiros devem desenvolver continuamente técnicas para contornar ataques de hackers. Para lidar com exploits de manipulação de memória , tais como estouros de buffer , engenheiros pilha desenvolvido ou layout de espaço de endereço , randomização. Esta técnica faz com que ataques tradicionais e repetíveis menos eficaz e protege os computadores contra falhas de segurança básicas. A pilha de chamadas
A estrutura de dados genérica definida como uma "pilha" representa uma lista básica de itens em que cada item adicionado acrescenta a final da lista, e cada item removido vem a partir do final da lista em um último a entrar, primeiro a sair . A pilha de chamadas de um programa em execução funções muito da mesma maneira . Em vez de itens de dados simples , no entanto, a pilha de chamadas organiza referências na memória para execução de funções no programa.
Saturações de buffer e Vulnerabilidade Memória
Uma das desvantagens de usando a estrutura de dados de pilha para organizar programas está relacionado à forma como a memória é organizada . Embora cada função em execução em um programa senta na pilha de chamadas , muitas vezes eles sentam-se lado a lado na memória física . Assim, se um atacante derrapagens um buffer variável , fornecendo muitos dados para uma estrutura de dados para lidar com , por exemplo, então a informação extra pode substituir dados em locais de memória física adjacentes , afetando o fluxo de execução do programa.
Stack randomização
Para resolver problemas de segurança , os engenheiros desenvolveram uma técnica de alocação de memória conhecido como randomização de pilha, ou espaço de endereço disposição randomização. Tipicamente , a memória é atribuída sequencialmente durante a execução do programa . Quando um programa é iniciado, ele é atribuído o próximo espaço de memória disponível na memória. Quando usando a pilha de randomização , o computador determina uma localização pseudo - aleatória com base em um predeterminado deslocamento . Os ponteiros do quadro na pilha são colocados por este deslocamento bem . O deslocamento é determinado no momento da inicialização do sistema operacional.
Stack randomização e Segurança
Devido a pilha randomização, os dados do programa não reside inteiramente consecutivamente na memória do sistema . Isso representa um problema para os hackers que tentam usar um ataque como uma saturação de buffer . Enquanto um estouro de buffer pode ocorrer , os efeitos não podem ser pré-determinado. Antes de pilha randomização, se um hacker sabia a quantidade de dados para usar em uma saturação de buffer , ele poderia usar o mesmo exploit no mesmo programa , repetidamente. Com a randomização, nenhum ataque de buffer é sucesso garantido entre cada instância em execução de um programa , mesmo no mesmo computador .