Retirado do Nesse Instante em 30/07/2006
Erro de programação inofensivo vira ameaça à segurança
Pesquisadores americanos descobriram uma nova maneira de comprometer programas de computador usando um erro de programação bastante comum, que nem era considerado falha de segurança, apenas "preguiça de programador". Agora, entretanto, esse mesmo erro, presente em milhares de programas e sistemas em todo o mundo, é encarado com um defeito gravíssimo de segurança.
Segundo a página de segurança Search Security, hospedada no site Tech Target, a empresa de segurança Watchfire Inc. descobriu um método praticamente infalível de explorar os chamados dangling pointers (numa tradução livre, ponteiros/apontadores soltos/pendentes). Os ponteiros, na linguagem C, são entidades que apontam para algum objeto ou posição de memória dentro do programa.
Um dangling pointer é um ponteiro que indica um objeto ou posição de memória inexistente. O objeto ao qual o ponteiro se referia já existiu e foi intencionalmente apagado em alguma parte do programa. O erro ocorre quando o programa apaga o objeto mas não apaga o ponteiro que indica onde o objeto estava. Praticamente todos os programas e sistemas operacionais atuais são desenvolvidos em linguagem C ou uma de suas derivadas (C++, C#), incluindo aí o Windows e o Linux.
Até então, considerava-se impossível para agressores externos adivinhar a existência e a posição de tais ponteiros. Entretanto, os pesquisadores da Watchfire descobriram por acaso um método para explorar remotamente a imperfeição enquanto aplicavam seu software de testes AppScan em um servidor web, o IIS versão 5.1 produzido pela Microsoft. Segundo o site da PC World, o processo de exploração do erro será apresentado ao público na conferência anual Black Hat Briefings, que acontecerá em Las Vegas no mês de agosto.
Os profissionais de segurança estão preocupados, porque a brecha é generalizada e pode ser explorada de forma semelhante aos buffer overflows, que foram uma praga bastante comum nos anos 90 e começo da década seguinte.
Assim como no buffer overflow, os dangling pointers permitem a execução de código arbitrário na máquina afetada e podem ser explorados à distância com facilidade. Danny Allan, pesquisador da Watchfire, é enfático: "A severidade (do erro) é gigantesca. É como uma Caixa de Pandora: uma vez que a abramos, o que conseguirmos mostrar será só a pontinha do iceberg. É um problema bastante comum e disseminado, especialmente em linguagens de baixo nível. Na maioria das vezes, será impossível saber se o programa possui ou não um dangling pointer".
Uma explicação sobre dangling pointers (em inglês) pode ser obtida pelo atalho dtmurl.com/b5k. O texto é de 1998, o que atesta a antiguidade da falha.