BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions

Detalhes bibliográficos
Autor(a) principal: Antunes, João Miguel Namorado Clímaco Henggeler
Data de Publicação: 2021
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/10316/98395
Resumo: Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
id RCAP_ea1f8717e03b2e750f6aed59f9aec051
oai_identifier_str oai:estudogeral.uc.pt:10316/98395
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 BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ FunctionsBUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ FunctionsSegurança de SoftwareDeteção de VulnerabilidadesAnálise Estática de CódigoMétricas de SoftwareAprendizagem ComputacionalSoftware SecurityVulnerability DetectionStatic Code AnalysisSoftware MetricsMachine LearningDissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e TecnologiaAs vulnerabilidades de software podem ter consequências graves caso sejam exploradas, incluindo acessos não autorizados, violações de dados, e perdas financeiras. O processo de rever código manualmente é tanto complexo como demorado, sendo por vezes inviável de aplicar dependendo do tamanho de um projeto. Por outro lado, as empresas de software são cada vez mais encorajadas a publicar e atualizar os seus produtos o mais rapidamente possível. Apesar de existirem ferramentas que encontram potenciais vulnerabilidades automaticamente no código fonte, estas geraram um número elevado de falsos positivos, ou vulnerabilidades mal classificadas. Para além disso, este tipo de técnicas nem sempre são suficientemente fiáveis para detetar vulnerabilidades.No presente trabalho apresentamos um processo automatizado capaz de recolher novas vulnerabilidades a partir do website CVE Details, selecionar ficheiros, funções, e classes afetadas do repositório de cada projeto, gerar métricas de software e alertas de segurança (i.e. potenciais vulnerabilidades), e construir datasets robustos de modo a serem processados por algoritmos de aprendizagem computacional. Este mecanismo foi usado para desenvolver datasets de unidades de código vulneráveis para cinco projetos implementados em C/C++: Mozilla, Linux Kernel, Xen Hypervisor, Apache HTTP Server, e GNU C Library.Adicionalmente, o dataset relativo a funções vulneráveis foi validado através de modelos de aprendizagem computacional, de modo a determinar quais os parâmetros que geravam os melhores classificadores. Os resultados experimentais demonstram que é possível usar tanto métricas de software como alertas de segurança para detetar funções vulneráveis, tendo sido obtidos valores de precisão, revocação, e F-score de 93.7%, 95.1%, e 93.9%, respetivamente. Foi também feita uma análise sobre a influência do ano em que as vulnerabilidades foram descobertas no desempenho destes classificadores. No entanto, não foi possível determinar se o uso de dados de anos anteriores permite a deteção de funções vulneráveis nos anos seguintes.Software vulnerabilities can have serious consequences when exploited, such as unauthorized authentication, data breaches, and financial losses. Manually reviewing an entire codebase for weaknesses is cumbersome, time-consuming, and sometimes impossible depending on a project's size. Due to the nature of this industry, companies are increasingly pressured to deploy and update software as quickly as possible. Automated tools called SATs can generate security alerts that highlight potential vulnerabilities in an application's source code, though they are prone to misidentified vulnerabilities called false positives.In this work, we present an automated process capable of collecting new vulnerabilities from the CVE Details website, retrieving affected files, functions, and classes from a project's repository, generating software metrics and security alerts (i.e. potential vulnerabilities), and building robust datasets capable of being fed to machine learning algorithms. We put this mechanism into practice by creating vulnerable code unit datasets for five large and widely known C/C++ projects: Mozilla, Linux Kernel, Xen Hypervisor, Apache HTTP Server, and GNU C Library.Additionally, the created vulnerable function dataset is validated using a wide assortment of machine learning parameters, so as to build and find the best classifiers capable of labeling functions as vulnerable, neutral, or belonging to a specific vulnerability category. Results show that it is possible to use both software metrics and security alerts to detect vulnerable function code, with precision, recall, and F-score values as high as 93.7%, 95.1%, and 93.9%, respectively. Moreover, further analysis into the influence of a vulnerability's detection year on the classifiers' performance was carried out. However, it could not be determined if using static data from previous years could be used to detect vulnerable functions in later ones.Universidade de Coimbra - This work has been supported by the project AIDA - Adaptive, Intelligent and Distributed Assurance Platform (reference POCI-01-0247-FEDER-045907) leading to this work is co-financed by the ERDF and COMPETE 2020 and by the FCT under CMU Portugal.2021-11-10info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesishttp://hdl.handle.net/10316/98395http://hdl.handle.net/10316/98395TID:202921220engAntunes, João Miguel Namorado Clímaco Henggelerinfo: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:RCAAP2022-02-04T21:41:58Zoai:estudogeral.uc.pt:10316/98395Portal AgregadorONGhttps://www.rcaap.pt/oai/openaireopendoar:71602024-03-19T21:16:13.999616Repositó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 BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
title BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
spellingShingle BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
Antunes, João Miguel Namorado Clímaco Henggeler
Segurança de Software
Deteção de Vulnerabilidades
Análise Estática de Código
Métricas de Software
Aprendizagem Computacional
Software Security
Vulnerability Detection
Static Code Analysis
Software Metrics
Machine Learning
title_short BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
title_full BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
title_fullStr BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
title_full_unstemmed BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
title_sort BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
author Antunes, João Miguel Namorado Clímaco Henggeler
author_facet Antunes, João Miguel Namorado Clímaco Henggeler
author_role author
dc.contributor.author.fl_str_mv Antunes, João Miguel Namorado Clímaco Henggeler
dc.subject.por.fl_str_mv Segurança de Software
Deteção de Vulnerabilidades
Análise Estática de Código
Métricas de Software
Aprendizagem Computacional
Software Security
Vulnerability Detection
Static Code Analysis
Software Metrics
Machine Learning
topic Segurança de Software
Deteção de Vulnerabilidades
Análise Estática de Código
Métricas de Software
Aprendizagem Computacional
Software Security
Vulnerability Detection
Static Code Analysis
Software Metrics
Machine Learning
description Dissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia
publishDate 2021
dc.date.none.fl_str_mv 2021-11-10
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/10316/98395
http://hdl.handle.net/10316/98395
TID:202921220
url http://hdl.handle.net/10316/98395
identifier_str_mv TID:202921220
dc.language.iso.fl_str_mv eng
language eng
dc.rights.driver.fl_str_mv info:eu-repo/semantics/openAccess
eu_rights_str_mv openAccess
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_ 1799134058296377344