Utilize este identificador para referenciar este registo: https://hdl.handle.net/1822/81098

TítuloVulnerabilities fast scan: tackling SAST performance issues with Machine Learning
Autor(es)Ferreira, Samuel Gonçalves
Orientador(es)Henriques, Pedro Rangel
Cruz, Daniela da
Data6-Mai-2020
Resumo(s)Nowadays, cybernetic attacks are a real threat that can compromise any individual, organization or company’s integrity. Every day new cases are reported, that show the real damage cyber criminals can cause. Sensitive data exposure, identity theft, service malfunctioning or shutdown are just a few of the most common threats, which in many cases might impact companies either with financial loss or by damaging their reputation. Population, in general, is becoming each time more aware of the risks of using electronic devices connected to the web and so are companies. With the rise of this awareness, over the last years, cyber security has become a major concern for Software companies. This threat also led to the birth of the Software vulnerability detection market. Companies started commercializing Software and advisory to other companies, in order to keep them less exposed to cybernetic risks. There are many mechanisms and technologies used by these companies to identify vulnerabilities in applications. The most popular technology used to detect vulnerabilities is SAST (Static Application Security Testing) as it focus on the detection of vulnerabilities at the early stages of Software development. However, this requires the analysis of the source code, which in many cases, is huge and thus such analysis is too time consuming. Being that the context and motivation for this dissertation, the goal is to investigate the possibility of performing source code analysis in a faster way, relying on machine learning approaches. Code embeddings, classification algorithms and clustering algorithms were the main approaches explored in this work. Along the project, it was realized that some approaches performed better than others, in the task of detecting software vulnerabilities. Clustering algorithms, according to the performed experiments, are not suitable for the problem. Classification algorithms produced results that can be considered worthy of further investigation, but did not meet the established goals. After some failed attempts, this project demonstrated that it is possible to train a prediction model, based on code2seq approach, capable of detecting vulnerabilities in source code, with better performance and accuracy than classic SAST solutions (according to a specific set of experiments). Moreover, the used approach allows to easily extend the developed work to find vulnerabilities in any programming language.
Hoje em dia, os ataques cibernéticos são uma ameaça real que podem comprometer a integridade de qualquer indivíduo, organização ou empresa. Novos casos são reportados todos os dias, demonstrando os estragos que um atacante cibernético pode causar. Exposição de dados sensíveis, roubo de identidade, mau funcionamento ou corte de fornecimento de serviços são apenas algumas das ameaças mais comuns, que em muitos casos podem afetar as empresas com perdas financeiras ou prejudicando a sua reputação. A Internet das Coisas cresce rapidamente todos os dias. Com a criação de dispositivos controlados por computador, desde relógios inteligentes até máquinas de lavar programáveis à distáncia, cada vez mais eletrodomésticos e outros acessórios eletrónicos estão diariamente ligados à Internet. Estes dispositivos tornam as nossas vidas mais fáceis e mais confortáveis, contudo podem expôr uma porta a redes corporativas para atacantes cibernéticos dotados e criminosos cibernéticos. A população em geral está a ficar cada vez mais consciente dos riscos de usar dispositivos ligados a rede, e as empresas também. Com o crescimento desta consciência, ao longo dos últimos anos, a segurança cibernética tornou-se uma maior preocupação para as empresas de Software. Esta ameaça também deu origem ao nascimento do mercado de deteção de vulnerabilidades em Software. As empresas começaram a comercializar Software e aconselhamento a outras empresas, com o objetivo de as manter menos expostas aos riscos cibernéticos. Há muitos mecanismos e tecnologias usadas por estas empresas para detetar vulnerabilidades em aplicações. A tecnologia mais popular para identificar vulnerabilidades é o SAST (Static Application Security Testing), que se foca na deteção de vulnerabilidades logo nas primeiras fases do desenvolvimento de Software. Contudo, exige a análise de código-fonte, o que nos casos de programas de grandes dimensões pode ser muito demorada. Sendo esta a motivação para esta dissertação, o objetivo é investigar a possibilidade de analisar código-fonte mais rapidamente, recorrendo a técnicas de machine learning. Este trabalho demonstra que e possível treinar um modelo capaz de detetar vulnerabilidades em código-fonte, com bom desempenho e acerto aceitável. Para além disso, as tecnologias usadas permitem estender facilmente o trabalho desenvolvido para detetar vulnerabilidades em qualquer linguagem de programação.
TipoDissertação de mestrado
DescriçãoDissertação de mestrado em Engenharia Informática
URIhttps://hdl.handle.net/1822/81098
AcessoAcesso aberto
Aparece nas coleções:BUM - Dissertações de Mestrado
DI - Dissertações de Mestrado

Ficheiros deste registo:
Ficheiro Descrição TamanhoFormato 
Samuel Goncalves Ferreira.pdf1,93 MBAdobe PDFVer/Abrir

Este trabalho está licenciado sob uma Licença Creative Commons Creative Commons

Partilhe no FacebookPartilhe no TwitterPartilhe no DeliciousPartilhe no LinkedInPartilhe no DiggAdicionar ao Google BookmarksPartilhe no MySpacePartilhe no Orkut
Exporte no formato BibTex mendeley Exporte no formato Endnote Adicione ao seu ORCID