Please use this identifier to cite or link to this item: https://hdl.handle.net/10316/98395
DC FieldValueLanguage
dc.contributor.advisorVieira, Marco Paulo Amorim-
dc.contributor.authorAntunes, João Miguel Namorado Clímaco Henggeler-
dc.date.accessioned2022-02-03T23:02:30Z-
dc.date.available2022-02-03T23:02:30Z-
dc.date.issued2021-11-10-
dc.date.submitted2022-02-03-
dc.identifier.urihttps://hdl.handle.net/10316/98395-
dc.descriptionDissertação de Mestrado em Engenharia Informática apresentada à Faculdade de Ciências e Tecnologia-
dc.description.abstractAs 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.por
dc.description.abstractSoftware 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.eng
dc.description.sponsorshipUniversidade 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.-
dc.language.isoeng-
dc.rightsopenAccess-
dc.rights.urihttp://creativecommons.org/licenses/by/4.0/-
dc.subjectSegurança de Softwarepor
dc.subjectDeteção de Vulnerabilidadespor
dc.subjectAnálise Estática de Códigopor
dc.subjectMétricas de Softwarepor
dc.subjectAprendizagem Computacionalpor
dc.subjectSoftware Securityeng
dc.subjectVulnerability Detectioneng
dc.subjectStatic Code Analysiseng
dc.subjectSoftware Metricseng
dc.subjectMachine Learningeng
dc.titleBUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functionseng
dc.title.alternativeBUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functionspor
dc.typemasterThesis-
degois.publication.locationDEI- FCTUC-
degois.publication.titleBUILDING AND EVALUATING SOFTWARE VULNERABILITY DATASETS Combining Static Analysis Alerts and Software Metrics to Automatically Detect Vulnerable C/C++ Functionseng
dc.peerreviewedyes-
dc.identifier.tid202921220-
thesis.degree.disciplineInformática-
thesis.degree.grantorUniversidade de Coimbra-
thesis.degree.level1-
thesis.degree.nameMestrado em Engenharia Informática-
uc.degree.grantorUnitFaculdade de Ciências e Tecnologia - Departamento de Engenharia Informática-
uc.degree.grantorID0500-
uc.contributor.authorAntunes, João Miguel Namorado Clímaco Henggeler::0000-0002-8523-3465-
uc.degree.classification17-
uc.degree.presidentejuriMarcelino, Maria José Patrício-
uc.degree.elementojuriSilva, Fernando José Barros Rodrigues da-
uc.degree.elementojuriVieira, Marco Paulo Amorim-
uc.contributor.advisorVieira, Marco Paulo Amorim::0000-0001-5103-8541-
item.openairecristypehttp://purl.org/coar/resource_type/c_18cf-
item.openairetypemasterThesis-
item.cerifentitytypePublications-
item.grantfulltextopen-
item.fulltextCom Texto completo-
item.languageiso639-1en-
Appears in Collections:UC - Dissertações de Mestrado
Files in This Item:
File Description SizeFormat
João-Henggeler-Dissertação-2020-2021.pdf4.72 MBAdobe PDFView/Open
Show simple item record

Page view(s)

102
checked on Apr 23, 2024

Download(s)

117
checked on Apr 23, 2024

Google ScholarTM

Check


This item is licensed under a Creative Commons License Creative Commons