Buffer Overflow
Nome: Elvis de Oliveira
Matrícula: 127442
O que são códigos arbitrários
Os ataques que causam Buffer Overflow por exemplo, tiram vantagem de um erro de projeto específico e relativamente comum em softwares. Muitos programas relacionados a rede não testam corretamente o tamanho do buffer utilizado escrevendo dados na memória que estava, originalmente, reservada para outro fim (instruções ou códigos executáveis, por exemplo). Uma mensagem de estrutura aparentemente irregular bem construída pode colocar códigos arbitrários e maliciosos na memória e, com alguma *sorte, fazer com que a CPU os execute.
Explorar a superlotação de buffers requer um conhecimento detalhado da arquitetura da plataforma e do mapa de memória das aplicações, porém quando o assunto é injeção de códigos em PHP esbarramos em um problema sério: a facilidade da programação permite que pessoas despreparadas criem sistemas que utilizam SQL (Uma variação de código arbitrário é o SQL injection), que utilize dados passados pelo usuário para fazer uma chamada de sistema etc.
Então como vocês podem ver, o tratamento de dados de forma mal feita possibilita uma infinidade de ataques e logo abaixo veremos alguns mais conhecidos.
O que é Buffer Overflow
Frequentemente é noticiado que em uma aplicação qualquer foi encontrada a vulnerabilidade de buffer overflow (ou estouro de buffer) e que através dela um atacante consegue executar código arbitrário. O arbitrário quer dizer qualquer código que ele desejar, ou quase isso.
O comunicado abaixo é um exemplo clássico, emitido pelo CERT em 2003:
CA-2003-16 Buffer Overflow in Microsoft RPC
A buffer overflow vulnerability exists in Microsoft's Remote Procedure Call (RPC) implementation. A remote attacker could exploit this vulnerability to execute arbitrary code or cause a denial of service.
Atualmente a vulnerabilidade de buffer overflow é encontrada com menos frequência pois foram criados vários mecanismos de proteção contra ela. Porém ainda