BUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functions
Autor(a) principal: | |
---|---|
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 |