Pergunta

Estou tentando descobrir as preocupações de segurança entre os transbordamentos de buffer no Windows vs Unix.

Pelo que entendi, o hack do Buffer Overflow Windows não pode ser implementado no UNIX porque cada processo recebe seu próprio espaço de memória. Isso significa que os processos no Windows compartilham espaço de memória?

Foi útil?

Solução

O espaço de memória compartilhado não é o motivo da maioria das explorações de excesso de buffer. O Windows não tem memória compartilhada desde o Win 3.0 (ou Win 3.1 em execução no 80286), por isso faz muito tempo, quase 20 anos, desde que o Windows foi enviado pela última vez, o que suportou o modelo de memória compartilhada.

O excesso de buffer permite que o invasor altere a memória no processo que está sendo explorado. Ao fazer isso, o invasor pretende executar uma operação do sistema (por exemplo, inicie um processo ou carregue uma biblioteca dinâmica ou altere os direitos de um determinado usuário etc.) usando o nível de privilégio dos processos de destino.

Isso é possível nas plataformas Win *, * Plataformas Nix e muitas outras. Como o sistema operacional e o aplicativo que está sendo explorado está lidando com essa tentativa é o que faz a diferença. No lado do aplicativo, a verificação cuidadosa do tamanho do buffer é o que geralmente é necessário para evitar isso. Tecnologias como ASLR (Randomização do Layout do Espaço de Endereço, que impede o invasor de adivinhar o endereço de uma função que ela precisa chamar para causar danos) e DEP (Prevenção de execução de dados, que impede que o invasor injete código executável em suas áreas de dados), fornecido pelo sistema operacional, ajude tremendamente. No lado do sistema operacional, não executando aplicativos como raiz/administrador é talvez a linha de defesa mais importante.

Outras dicas

Os processos Windows e UNIX têm isolamento de memória. Os ataques de transbordamento de buffer podem ocorrer em ambos os ambientes.

Talvez você deva esclarecer o que você quer dizer com "Buffer Overflow Windows Hack". Os fluxos de buffer não precisam necessariamente modificar o código de outros processos.

Exemplo: Leia de cin Para uma matriz de bytes de tamanho fixo, pode ser usado para executar o código personalizado. Se o próprio programa for executado como root, nem o Unix nem o Windows podem fazer nada para impedir que o isolamento da memória - o isolamento da memória não ajudará.

Como Todd apontou, o Windows e o Unix são capazes de isolamento de memória (que é muito básico em comparação com Dep ou Aslr).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top