Software weaknesses detection using static-code analysis and machine learning techniques

Detalhes bibliográficos
Autor(a) principal: Conté, Sana
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