Use este identificador para citar ou linkar para este item: http://hdl.handle.net/1843/SLSS-8GPQ3N
Tipo: Dissertação de Mestrado
Título: Algoritmo eficiente de análise estática para procurar ataques do tipo variáveis contaminadas
Autor(es): Andrei Rimsa Alvares
Primeiro Orientador: Roberto da Silva Bigonha
Primeiro Coorientador: Fernando Magno Quintao Pereira
Primeiro membro da banca : Marcelo d'amorim
Segundo membro da banca: Claudionor Jose Nunes Coelho Junior
Terceiro membro da banca: Mariza Andrade da Silva Bigonha
Resumo: Ataques do tipo variáveis contaminadas ocorrem quando entradas de programas são manipuladas maliciosamente a afim de explorar falhas de segurança inerentes ao software afetado. Ataques deste tipo são comuns em linguagens de scripts como PHP, originadas no lado do servidor. Em 1997, Orbaek e Palsberg formalizaram o problema de detectar essas explorações como uma instância de verificação de tipo e mostraram que um algoritmo com complexidade de tempo O(V3) é capaz de resolver o problema. Um algoritmo similar foi implementado dez anos depois pela ferramenta open source Pixy para encontrar falhas de segurança em programas PHP. Este trabalho mostra que o mesmo problema pode ser resolvido em tempo O(V2). A solução proposta utiliza uma representação intermediária chamada e-SSA (extended Static Single Assignment) proposta por Bodik et al. em 2000. Essa representação pode ser computada eficientemente e permite que o problema seja tratado como um problema de alcance em grafos, onde arestas modelam dependências de dados entre variáveis de programas. Usando a mesma infra-estrutura de implementação, foi comparada a técnica proposta neste trabalho com e-SSA e a técnica que utiliza análise de fluxo de dados (data-flow). Ambas as abordagens possuem a mesma eficácia e foram capazes de detectar 36 vulnerabilidades em programas PHP conhecidos. Nos experimentos é possível observar que a abordagem proposta neste trabalho tem um melhor desempenho que o algoritmo utilizando data-flow. As falhas de segurança encontradas foram reportadas e a implementação do algoritmo proposto está disponível para o compilador de PHP open source phc.
Abstract: Tainted variable attacks are originated from program inputs maliciously crafted to exploit software vulnerabilities. These attacks are common in server-side scripting languages, such as PHP. In 1997, Orbaek and Palsberg formalized the problem of detecting these exploits as an instance of type-checking, and has give an O(V3) algorithm to solve it. A similar algorithm was, ten years later, implemented on the Pixy free-software tool. In this dissertation we give an O(V2) solution to the same problem. Our solution uses Bodik et al.'s extended Static Single Assignment (e-SSA) program representation that can be efficiently computed and it enables us to treat the problem as an instance of graph reachability, where graph edges model data dependencies between program variables. Using the same infrastructure, we compared the data-flow solution with our technique. Both approaches have detected 36 vulnerabilities in well-known PHP programs, and our tests show that our approach tends to outperform the data-flow algorithm for larger PHP programs. We have reported the bugs that we found, and the implementation of our algorithm is now available for the phc open source PHP compiler.
Assunto: Algoritmos
Computação
Compiladores (Programas de computador)
Idioma: Inglês
Editor: Universidade Federal de Minas Gerais
Sigla da Instituição: UFMG
Tipo de Acesso: Acesso Aberto
URI: http://hdl.handle.net/1843/SLSS-8GPQ3N
Data do documento: 3-Dez-2010
Aparece nas coleções:Dissertações de Mestrado

Arquivos associados a este item:
Arquivo Descrição TamanhoFormato 
andreirimsaalvares.pdf2.9 MBAdobe PDFVisualizar/Abrir


Os itens no repositório estão protegidos por copyright, com todos os direitos reservados, salvo quando é indicado o contrário.