Dissertação

{en_GB=Whitebox Fuzzing for Web Application Security} {} EVALUATED

{pt=Mesmo já havendo bastante pesquisa sobre segurança na web, a segurança em aplicações web continua a ser um problema relevante. O maior problema com este tipo de aplicações deve-se ao código fonte, que é escrito em linguagens inseguras, levando à existência de vulnerabilidades. Uma maneira de detectar vulnerabilidades no código fonte é utilizando análise estática, que é uma maneira de analisar código sem que este seja executado. No entanto, esta abordagem é falível, uma vez que este tipo de análise é efectuada em código sem este ser executado, fazendo com que haja falsos positivos e falsos negativos. Numa tentativa de melhorar estes resultados, pode-se usar concolic execution, a qual permite a uma ferramenta saber os valores injectados numa aplicação durante a sua execução, e analisar os caminhos de execução originados por estes valores. Neste sentido, pode-se obter uma análise estática mais refinada e consequentemente, encontrarem-se mais caminhos para serem explorados, utilizando-se a técnica de programação com constraints. Programação com constraints é uma linguagem declarativa que expressa a lógica entre variáveis sem descrever os caminhos percorridos pela aplicação. BaZINGA é uma ferramenta que foi desenvolvida de modo a conseguir detectar vulnerabilidades em aplicações web escritas em PHP. Para se poder desenvolver esta ferramenta, foi necessário estudar várias combinações das técnicas faladas anteriormente., en=Despite the research done in web security in the past few years, the security of web applications remains an important concern. The major issue with these applications comes from the source code itself, that is often written in unsafe languages, leading to the existence of vulnerabilities. One way of finding vulnerabilities in the source code is by performing static analysis, which is a way of analyzing the code without its execution. However this approach is unreliable, since it does the analysis on the code without running it, which generates false positives and false negatives. In an attempt to improve these results, concolic execution can be used, which allows the tool to know the inputs injected during the application's execution, and analyze the control flow originated from these values. With this in mind, it can be achieved a more refined static analysis, and consequently find more execution paths by using constraint programming. Constraint programming is a declarative language that expresses the logic between the variables without describing its control flow. BaZINGA is a tool that was developed to detect vulnerabilities in web applications written in PHP. To be possible to develop this tool, it was needed to study several combinations of these techniques.}
{pt=whitebox testing, fuzzing, vulnerabilidades, segurança em aplicações web, constraint programming, en=whitebox, fuzzing, vulnerabilities, web application security, constraint programming}

Junho 6, 2018, 10:30

Publicação

Obra sujeita a Direitos de Autor

Orientação

ORIENTADOR

Miguel Nuno Dias Alves Pupo Correia

Departamento de Engenharia Informática (DEI)

Professor Associado

ORIENTADOR

Ibéria Vitória de Sousa Medeiros

Faculdade de Ciências da Universidade de Lisboa

Professor Auxiliar Convidado