UNIVERSIDADE DE LISBOA FACULDADE DE CIÊNCIAS DEPARTAMENTO DE INFORMÁTICA Ferramenta de Análise de Código para Detecção de Vulnerabilidades Emanuel Pedro Loureiro Teixeira MESTRADO EM ENGENHARIA INFORMÁTICA Setembro de 2007 UNIVERSIDADE DE LISBOA FACULDADE DE CIÊNCIAS DEPARTAMENTO DE INFORMÁTICA Ferramenta de Análise de Código para Detecção de Vulnerabilidades Emanuel Pedro Loureiro Teixeira Projecto orientado pelo Prof. Dr. Nuno Fuentecilla Maia Ferreira Neves MESTRADO EM ENGENHARIA INFORMÁTICA Setembro de 2007 Aos Alunos de Ensino Especial Agradecimentos Em primeiro gostava de agradecer ao Professor Doutor Nuno Ferreira Neves pelos seus ensinamentos e comentários durante o desenrolar do projecto de investigação e escrita desta tese. Assim como, a sua amabilidade em representar de forma desconhecida o aluno Emanuel Teixeira. Agradeço também ao Professor Doutor Dinis Pestana pelos seus con- celhos e orientações, como também na revisão desta tese. AoMestreJoãoAntunespeloseutempoemauxiliar-menaconstrução do teste padronizado. Aos colegas Mestre João Leitão e Inês Fragata pelos comentários de revisão da tese e apoio ao trabalho realizado. AtodososProfessoresquemeapoiaramduranteaminhaformaçãoes- colar, tendo em consideração as seguintes escolas: Escola Secundária da Amadora, Escola Secundária Seomara da Costa Primo (Amadora) eEscolaBásica2+3DomFranciscoManueldeMelo(Amadora),Obri- gado pelos apoios que me foram concedidos. Como também, estimo os Professores da Universidade de Lisboa da Faculdade de Ciências, em particular ao Departamento de Informática, Obrigado. Um obrigado muito especial para os meus Pais António & Florinda Teixeira, ao qual despenderam o seu tempo das suas vidas, na edu- cação de um ser autodidacta, e um apreço especial ao meu Irmão Rodrigo Teixeira. Resumo A análise de código é um mecanismo de apoio à detecção de ano- malias ou erros de concretização existentes num ambiente de progra- mação. Diversos factores podem levar ao aparecimento destes erros, destacando-se entre eles a programação inadequada, o conhecimento limitadodasinterfaceseoutrosfactoresinerentementehumanos,como o esquecimento. As ferramentas de análise podem então ter um im- pactopositivonociclodedesenvolvimentodeumproduto, permitindo poupar tempo, dinheiro e contribuindo para que a aplicação seja cons- truída sem vulnerabilidades de segurança. A análise de código pode ser efectuada em três modos: estática, dinâmica ou manual; cada um destes modos têm as suas vantagens e desvantagens, sendo os mais usados os estáticos e os dinâmicos. Nesta tese aborda-se o problema de detecção de vulnerabilidades de segurança através de ferramentas de análise estática, focadas para a linguagem de programação C. A tese propõe um teste que permite avaliar e comparar o desempenho de diversas ferramentas de análise estática, nomeadamente em relação ao número de falsos alarmes por elas despoletadas. A tese descreve também uma nova ferramenta de- signada por Mute, que tem como objectivo uma melhor eficácia e precisão na detecção de um conjunto alargado de vulnerabilidades. Genericamente, o Mute utiliza um mecanismo de agregação de resul- tados produzidos por várias ferramentas existentes, para decidir da existência ou não de uma vulnerabilidade. A tese inclui ainda uma avaliação comparativa do Mute e de diversas outras ferramentas. Palavras Chave: Análise Estática de Código Fonte, Detecção de Vulnerabilidades, Teste Padronizado, Classes de Vulnerabilidades.
Description: