[pt] DETECÇÃO DE VULNERABILIDADES DE SEGURANÇA EM TEMPO DE PROGRAMAÇÃO COM O INTUITO DE DAR SUPORTE A PROGRAMAÇÃO SEGURA

Detalhes bibliográficos
Ano de defesa: 2016
Autor(a) principal: MARCELO BLOIS RIBEIRO
Orientador(a): Não Informado pela instituição
Banca de defesa: Não Informado pela instituição
Tipo de documento: Tese
Tipo de acesso: Acesso aberto
Idioma: eng
Instituição de defesa: MAXWELL
Programa de Pós-Graduação: Não Informado pela instituição
Departamento: Não Informado pela instituição
País: Não Informado pela instituição
Palavras-chave em Português:
Link de acesso: https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25822&idi=1
https://www.maxwell.vrac.puc-rio.br/colecao.php?strSecao=resultado&nrSeq=25822&idi=2
http://doi.org/10.17771/PUCRio.acad.25822
Resumo: [pt] Programação segura é a prática de se escrever programas que são resistentes a ataques de pessoas ou programas mal-intencionados. Os programadores de software seguro precisam estar continuamente cientes de vulnerabilidades de segurança ao escrever as instruções de código de um programa. Eles precisam estar preparados para executar continuamente ações para prevenir ou removê-las de seus programas. Neste cenário, as técnicas de análise estática foram concebidas para encontrar vulnerabilidades no código-fonte. No entanto, a maioria das técnicas existentes são construídas de uma maneira a incentivar a detecção de vulnerabilidade tardiamente, apenas quando os desenvolvedores já tenham produzido (e compilado) por completo um ou mais módulos de uma aplicação. Portanto, esta abordagem, também conhecida como detecção tardia, não promove programação segura, mas apenas análise retrospectiva de segurança. O atraso na detecção de vulnerabilidades também é influenciado pela alta taxa de falsos positivos, gerados pelo casamento de padrões, mecanismo comumente usado por técnicas de análise estática. Esta dissertação tem dois objetivos. Em primeiro lugar, nós propomos promover detecção de vulnerabilidades, enquanto o desenvolvedor está editando cada instrução do programa, também conhecida como detecção antecipada. A detecção antecipada pode aproveitar o conhecimento do desenvolvedor sobre o contexto do código que está sendo desenvolvido, ao contrário da detecção tardia em que os desenvolvedores enfrentam dificuldades para lembrar detalhes do código vulnerável produzido a horas ou semanas atrás. Nosso detector de vulnerabilidades é incorporado ao editor de um ambiente integrado de desenvolvimento de software. Em segundo lugar, vamos explorar uma técnica criada e comumente utilizada para a implementação de otimizações em compiladores, chamada de análise de fluxo de dados, doravante denominada como DFA. DFA tem a capacidade de seguir os caminhos de um objeto, até a sua origem ou para caminhos onde o seu conteúdo tenha sido alterado. DFA pode ser adequado para encontrar se um objeto tem um ou mais caminhos vulneráveis. Para isso, implementamos um plugin Eclipse, como prova de conceito, para detecção antecipada de vulnerabilidades em programas Java. Depois disso, foram realizados dois estudos empíricos baseados em vários sistemas da indústria para avaliar se a segurança de um código fonte produzido pode ser melhorada através de DFA e detecção contínua de vulnerabilidades. Nossos estudos confirmaram que: (i) análise de fluxo de dados reduz significativamente a taxa de falsos positivos, quando comparada com técnicas existentes, sem prejudicar o desempenho do detector, e (ii) a detecção antecipada melhora a consciência entre os desenvolvedores e os incentiva a corrigir vulnerabilidades de segurança prontamente.