Utilize este identificador para referenciar este registo:
https://hdl.handle.net/1822/81098
Título: | Vulnerabilities fast scan: tackling SAST performance issues with Machine Learning |
Autor(es): | Ferreira, Samuel Gonçalves |
Orientador(es): | Henriques, Pedro Rangel Cruz, Daniela da |
Data: | 6-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. |
Tipo: | Dissertação de mestrado |
Descrição: | Dissertação de mestrado em Engenharia Informática |
URI: | https://hdl.handle.net/1822/81098 |
Acesso: | Acesso aberto |
Aparece nas coleções: | BUM - Dissertações de Mestrado DI - Dissertações de Mestrado |
Ficheiros deste registo:
Ficheiro | Descrição | Tamanho | Formato | |
---|---|---|---|---|
Samuel Goncalves Ferreira.pdf | 1,93 MB | Adobe PDF | Ver/Abrir |
Este trabalho está licenciado sob uma Licença Creative Commons