Índice:
Definição - O que significa Stack Smashing?
O esmagamento de pilha é uma forma de vulnerabilidade em que a pilha de um aplicativo ou SO de computador é forçada a transbordar. Isso pode levar a subverter o programa / sistema e travá-lo.
Uma pilha, um circuito que entra primeiro e sai final, é uma forma de buffer que contém resultados intermediários de operações dentro dele. Para simplificar, o esmagamento da pilha, colocando mais dados em uma pilha do que sua capacidade de retenção. Hackers qualificados podem deliberadamente introduzir dados excessivos na pilha. Os dados excessivos podem ser armazenados em outras variáveis da pilha, incluindo o endereço de retorno da função. Quando a função retorna, ela salta para o código malicioso na pilha, que pode corromper todo o sistema. Os dados adjacentes na pilha são afetados e força o programa a travar.
Techopedia explica Stack Smashing
Se o programa afetado pelo esmagamento de pilha aceitar dados de redes não confiáveis e executar com privilégios especiais, é um caso de vulnerabilidade de segurança. Se o buffer contiver dados fornecidos por um usuário não confiável, a pilha poderá ser corrompida injetando código executável no programa, obtendo acesso não autorizado a um computador. Um invasor também pode substituir as informações de fluxo de controle armazenadas na pilha.
Como o esmagamento de pilhas se transformou em uma vulnerabilidade muito séria, certas tecnologias são implementadas para superar o desastre de esmagamento de pilhas. A proteção de estouro de buffer de pilha altera a organização dos dados no quadro de pilha de uma chamada de função para incluir valores canários. Esses valores, quando destruídos, indicam que um buffer que o precede na memória foi excedido. Os valores canários monitoram os estouros de buffer e são colocados entre os dados de controle e o buffer na pilha. Isso garante que um estouro de buffer corrompa o canário primeiro. Uma falha na verificação de dados canários significa um estouro na pilha. Os três tipos de canário são Random, Terminator e Random XOR.
O canário terminador baseia-se no fato de que o ataque de estouro de buffer da pilha depende das operações de sequência terminadas nos terminadores. Canários aleatórios são gerados aleatoriamente a partir de um daemon de coleta de entropia, o que impede os invasores de conhecer valores. Canários aleatórios são gerados na inicialização do programa e armazenados em variáveis globais. Canários aleatórios do XOR são portadores aleatórios que são embaralhados pelo XOR usando dados de controle. É semelhante aos canários aleatórios, exceto que o "método de leitura da pilha" para obter o canário é complexo. O hacker precisa dos dados de canário, algoritmo e controle para produzir o canário original. Eles protegem contra ataques que envolvem buffers transbordantes em uma estrutura em ponteiros para mudar o ponteiro para apontar para um dado de controle.