Software weaknesses detection using static-code analysis and machine learning techniques
Autor(a) principal: | |
---|---|
Data de Publicação: | 2023 |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
Texto Completo: | http://hdl.handle.net/10400.21/16979 |
Resumo: | Dissertação para obtenção do Grau de Mestre em Engenharia Informática e de Computadores |
id |
RCAP_ab56c02a0aebb0e9e5657d873eda0563 |
---|---|
oai_identifier_str |
oai:repositorio.ipl.pt:10400.21/16979 |
network_acronym_str |
RCAP |
network_name_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository_id_str |
7160 |
spelling |
Software weaknesses detection using static-code analysis and machine learning techniquesAnálise estática de códigoAprendizagem automáticaControl flow graphDeteção de vulnerabilidadesExtração de caracteristicasControl flow graphData-flow analysisMachine learningReaching definitionsStatic-code analysisDissertação para obtenção do Grau de Mestre em Engenharia Informática e de ComputadoresA indústria de software desempenha um papel essencial no mundo moderno em quase todos os domínios. As vulnerabilidades são predominantes nos sistemas de software e podem resultar num impacto negativo na segurança informática. Embora existam ferramentas para detetar códigos vulneráveis, sua precisão e eficácia ainda é uma questão de pesquisa desafiante. Para definir mecanismos que identificam vulnerabilidades, muitas soluções existentes requerem trabalho árduo dos especialistas. O constante aumento do número de vulnerabilidades reveladas tornou-se uma preocupação importante na indústria de software e no campo da cibersegurança, o que implica que as atuais abordagens para a deteção de vulnerabilidades exigem melhorias adicionais. Isso tem motivado investigadores nas comunidades de engenharia de software e segurança cibernética a aplicar aprendizagem automática para reconhecimento de padrões e características de códigos vulneráveis. Seguindo esta linha de pesquisa, este trabalho apresenta um sistema de deteção de vulnerabilidades baseado em aprendizagem automática que usa análise estática de código para extrair dependências no código e construir o conjunto de dados a partir destes. A dataset foi recolhida a partir da National Vulnerability Database (NVD) e o SAMATE. A dataset contém códigos fonte Java com as vulnerabilidades Null pointer deference e command injections como alvos selecionados para caso de estudo. A Control Flow Graph (CFG) foi utilizada em conjunto com as técnicas de análise estática de código para extração de caracteristicas. Os resultados experimentais demonstram que nossa ferramenta pode alcançar significativamente menos falsos negativos (com um número razoável de falsos positivos) em comparação com outras abordagens. Além disso, aplicamos a ferramenta a produtos de software reais e fomos capazes de identificar vulnerabilidades, apesar do número de falsos positivos.Software industry plays an essential role in modern world in almost all fields. Vulnerabilities are predominant in software systems and can result in a negative impact to the computer security. Although there are tools to detect vulnerable code, their accuracy and efficacy is still a challenging research question. To define features that identify vulnerabilities, many existing solutions require hard work from human experts. The constant increasing number of revealed security vulnerabilities have become an importante concern in the software industry and in the field of cybersecurity, implying that the current approaches for vulnerability detection demand further improvement. This has motivated researchers in the software engineering and cybersecurity communities to apply machine learning for patterns recognition and characteristics of vulnerable code. Following this research line, this work presents a machine learning based vulnerability detection system that uses static-code analysis to extract dependencies in the code and build data features from these. The dataset was collected from the National Vulnerability Database (NVD) and test cases NIST SAMATE project and contains Java code as selected target programming language with Null pointer deference and command injections vulnerabilities as selected weaknesses. The data samples were generated from the source code of the vulnerable files by utilizing a control flow graph (CFG) to extract features. Data-flow analysis techniques were also used for feature extraction. Experimental results demonstrate that our tool can achieve significantly fewer false negatives (with a reasonable number of false positives) compared to other approaches. We further applied the tool to real software products and were able to identify vulnerabilities, despite the number of false positives.Leite, NunoSimão, JoséRCIPLConté, Sana2024-01-24T12:05:48Z20232023-01-01T00:00:00Zinfo:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfhttp://hdl.handle.net/10400.21/16979TID:203438108engConté, Sana - Software weaknesses detection using static-code analysis and machine learning techniques. Lisboa: Instituto Superior de Engenharia de Lisboa, 2023. Dissertação de Mestradoinfo:eu-repo/semantics/openAccessreponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos)instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãoinstacron:RCAAP2024-01-31T02:16:13Zoai:repositorio.ipl.pt:10400.21/16979Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-20T01:59:13.590389Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informaçãofalse |
dc.title.none.fl_str_mv |
Software weaknesses detection using static-code analysis and machine learning techniques |
title |
Software weaknesses detection using static-code analysis and machine learning techniques |
spellingShingle |
Software weaknesses detection using static-code analysis and machine learning techniques Conté, Sana Análise estática de código Aprendizagem automática Control flow graph Deteção de vulnerabilidades Extração de caracteristicas Control flow graph Data-flow analysis Machine learning Reaching definitions Static-code analysis |
title_short |
Software weaknesses detection using static-code analysis and machine learning techniques |
title_full |
Software weaknesses detection using static-code analysis and machine learning techniques |
title_fullStr |
Software weaknesses detection using static-code analysis and machine learning techniques |
title_full_unstemmed |
Software weaknesses detection using static-code analysis and machine learning techniques |
title_sort |
Software weaknesses detection using static-code analysis and machine learning techniques |
author |
Conté, Sana |
author_facet |
Conté, Sana |
author_role |
author |
dc.contributor.none.fl_str_mv |
Leite, Nuno Simão, José RCIPL |
dc.contributor.author.fl_str_mv |
Conté, Sana |
dc.subject.por.fl_str_mv |
Análise estática de código Aprendizagem automática Control flow graph Deteção de vulnerabilidades Extração de caracteristicas Control flow graph Data-flow analysis Machine learning Reaching definitions Static-code analysis |
topic |
Análise estática de código Aprendizagem automática Control flow graph Deteção de vulnerabilidades Extração de caracteristicas Control flow graph Data-flow analysis Machine learning Reaching definitions Static-code analysis |
description |
Dissertação para obtenção do Grau de Mestre em Engenharia Informática e de Computadores |
publishDate |
2023 |
dc.date.none.fl_str_mv |
2023 2023-01-01T00:00:00Z 2024-01-24T12:05:48Z |
dc.type.status.fl_str_mv |
info:eu-repo/semantics/publishedVersion |
dc.type.driver.fl_str_mv |
info:eu-repo/semantics/masterThesis |
format |
masterThesis |
status_str |
publishedVersion |
dc.identifier.uri.fl_str_mv |
http://hdl.handle.net/10400.21/16979 TID:203438108 |
url |
http://hdl.handle.net/10400.21/16979 |
identifier_str_mv |
TID:203438108 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.relation.none.fl_str_mv |
Conté, Sana - Software weaknesses detection using static-code analysis and machine learning techniques. Lisboa: Instituto Superior de Engenharia de Lisboa, 2023. Dissertação de Mestrado |
dc.rights.driver.fl_str_mv |
info:eu-repo/semantics/openAccess |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.source.none.fl_str_mv |
reponame:Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) instname:Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação instacron:RCAAP |
instname_str |
Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
instacron_str |
RCAAP |
institution |
RCAAP |
reponame_str |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
collection |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) |
repository.name.fl_str_mv |
Repositório Científico de Acesso Aberto de Portugal (Repositórios Cientìficos) - Agência para a Sociedade do Conhecimento (UMIC) - FCT - Sociedade da Informação |
repository.mail.fl_str_mv |
|
_version_ |
1799137076126416896 |