Invasores de Corpos: como hackers tomam o controle de programas em execução
Imagine um cenário em que um programa é executado em um dispositivo eletrônico, mas em vez de realizar sua função original, ele começa a executar instruções maliciosas. Isso é possível devido a uma vulnerabilidade conhecida como “invasão de corpos”, que permite que hackers tomem o controle de programas em execução.
A origem desse problema está na arquitetura de von Neumann, que é a base dos computadores modernos. Nessa arquitetura, o código e os dados são armazenados na mesma memória, sem nenhuma distinção clara entre eles. Isso significa que, se um hacker consegue injetar código malicioso na memória, o processador pode executá-lo como se fosse parte do programa original.
Um exemplo comum de como isso pode acontecer é através de um ataque de “buffer overflow”. Quando um programa reserva uma quantidade limitada de memória para armazenar dados, mas o usuário insere mais dados do que o esperado, os dados excedentes podem “transbordar” para áreas adjacentes da memória, sobrescrevendo o código original. Se o hacker consegue calcular exatamente onde o código malicioso será armazenado, ele pode redirecionar a execução do programa para esse código, permitindo que ele tome o controle do programa.
Essa vulnerabilidade é conhecida desde 1988, quando o Morris Worm explorou uma falha semelhante. No entanto, apesar das melhorias na segurança, ela ainda é um problema comum em muitos sistemas. Isso ocorre porque:
- Bilhões de linhas de código legado em C/C++ continuam rodando em sistemas críticos, e reescrevê-las é um desafio.
- Mitigações como ASLR, DEP/NX e stack canaries tornaram a exploração mais difícil, mas não impossível.
- Linguagens que fazem verificações automáticas de limites de memória consomem recursos e podem não ser viáveis em sistemas com recursos limitados.
- A pressão por desempenho muitas vezes vence a pressão por segurança nas decisões de engenharia.
A moral da história é que as abstrações mentais que os programadores usam para entender o código podem esconder a realidade física do substrato de hardware. Quem ignora essa dualidade pode descobrir que seu programa foi comprometido por um hacker.
Este conteúdo pode conter links de compra.
Fonte: link