Formal verification to ensuring the memory safety of C++ Programs
Autor(a) principal: | |
---|---|
Data de Publicação: | 2020 |
Outros Autores: | , |
Tipo de documento: | Dissertação |
Idioma: | eng |
Título da fonte: | Biblioteca Digital de Teses e Dissertações da UFAM |
Texto Completo: | https://tede.ufam.edu.br/handle/tede/7762 |
Resumo: | In the last three decades, memory safety issues in low-level programming languages such as C or C++ have been one of the significant sources of security vulnerabilities; however, there exist only a few attempts with limited success to cope with the complexity of C++ program verification. This work describes and evaluates a novel verification approach based on bounded model checking (BMC) and satisfiability modulo theories (SMT) to verify C++ programs formally. This verification approach analyzes bounded C++ programs by encoding various sophisticated features that the C++ programming language offers into SMT, such as templates, sequential and associative containers, inheritance, polymorphism, and exception handling. We formalize these sophisticated features within our formal verification framework using a decidable fragment of first-order logic and then show how state-of-the-art SMT solvers can efficiently handle that. We implemented this verification approach on top of the Efficient SMT-Based Context-Bounded Model Checker (ESBMC). We compare ESBMC to LLBMC and DIVINE, which are state-of-the-art verifiers to check C++ programs directly from LLVM bitcode. The experimental evaluation contains a set of over 1,500 benchmarks from several sources (e.g., Deitel & Deitel, NEC Corporation, and GCC test suite), which covers several C++ features. Experimental results show that ESBMC can handle a wide range of C++ programs, presenting a higher number of correct verification results, and at the same time, it reduces the verification time if compared to LLBMC and DIVINE tools. |
id |
UFAM_9479925cbcff6650cc7d3333f07c388d |
---|---|
oai_identifier_str |
oai:https://tede.ufam.edu.br/handle/:tede/7762 |
network_acronym_str |
UFAM |
network_name_str |
Biblioteca Digital de Teses e Dissertações da UFAM |
repository_id_str |
6592 |
spelling |
Formal verification to ensuring the memory safety of C++ ProgramsVerificação formal de programas C++ para garantir segurança de memóriaEngenharia de SoftwareSoftware VerificationModel CheckingMemory SafetySegurança de MemóriaCIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO: METODOLOGIA E TÉCNICAS DA COMPUTAÇÃO: ENGENHARIA DE SOFTWARESoftware VerificationModel CheckingC++Memory SafetyEngenharia de SoftwareVerificação FormalSegurança de MemóriaIn the last three decades, memory safety issues in low-level programming languages such as C or C++ have been one of the significant sources of security vulnerabilities; however, there exist only a few attempts with limited success to cope with the complexity of C++ program verification. This work describes and evaluates a novel verification approach based on bounded model checking (BMC) and satisfiability modulo theories (SMT) to verify C++ programs formally. This verification approach analyzes bounded C++ programs by encoding various sophisticated features that the C++ programming language offers into SMT, such as templates, sequential and associative containers, inheritance, polymorphism, and exception handling. We formalize these sophisticated features within our formal verification framework using a decidable fragment of first-order logic and then show how state-of-the-art SMT solvers can efficiently handle that. We implemented this verification approach on top of the Efficient SMT-Based Context-Bounded Model Checker (ESBMC). We compare ESBMC to LLBMC and DIVINE, which are state-of-the-art verifiers to check C++ programs directly from LLVM bitcode. The experimental evaluation contains a set of over 1,500 benchmarks from several sources (e.g., Deitel & Deitel, NEC Corporation, and GCC test suite), which covers several C++ features. Experimental results show that ESBMC can handle a wide range of C++ programs, presenting a higher number of correct verification results, and at the same time, it reduces the verification time if compared to LLBMC and DIVINE tools.Este trabalho descreve e avalia o Efficient SMT-Based Context-Bounded Model Checker (ESBMC) para verificar formalmente programas C++. O ESBMC implementa a técnica de verificação de modelos limitados (do inglês, bounded model checking -- BMC) com base em teorias do módulo da satisfabilidade (do inglês, satisfiability modulo theories -- SMT) para lidar com recursos complexos que a linguagem de programação C++ oferece, tais como templates, contêineres sequenciais e associativos, herança, polimorfismo e manipulação de exceções. ESBMC é comparado as ferramentas LLBMC e DIVINE, as quais verificam os programas C++ diretamente a nível de bitcode do LLVM. Resultados experimentais mostram que o ESBMC pode lidar com uma ampla gama de estruturas do C++, apresentando uma taxa de aproximadamente 85% de verificações corretas e, ao mesmo tempo, reduzindo o tempo de verificação se comparado as ferramentas LLBMC e DIVINE.Universidade Federal do AmazonasInstituto de ComputaçãoBrasilUFAMPrograma de Pós-graduação em InformáticaCordeiro, Lucas Carvalhohttp://lattes.cnpq.br/5005832876603012Barreto, Raimundo da Silvahttp://lattes.cnpq.br/1132672107627968Rocha, Herbert Oliveirahttp://lattes.cnpq.br/2284500318304899Sousa, Felipe Rodrigues Monteirohttp://lattes.cnpq.br/4475065926209027https://orcid.org/0000-0001-9420-90562020-04-07T03:16:45Z2020-01-17info:eu-repo/semantics/publishedVersioninfo:eu-repo/semantics/masterThesisapplication/pdfMONTEIRO, Felipe Rodrigues Monteiro. Formal verification to ensuring the memory safety of C++ Programs. 2020. 71 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2020.https://tede.ufam.edu.br/handle/tede/7762enghttp://creativecommons.org/licenses/by/4.0/info:eu-repo/semantics/openAccessreponame:Biblioteca Digital de Teses e Dissertações da UFAMinstname:Universidade Federal do Amazonas (UFAM)instacron:UFAM2020-04-07T05:03:48Zoai:https://tede.ufam.edu.br/handle/:tede/7762Biblioteca Digital de Teses e Dissertaçõeshttp://200.129.163.131:8080/PUBhttp://200.129.163.131:8080/oai/requestddbc@ufam.edu.br||ddbc@ufam.edu.bropendoar:65922020-04-07T05:03:48Biblioteca Digital de Teses e Dissertações da UFAM - Universidade Federal do Amazonas (UFAM)false |
dc.title.none.fl_str_mv |
Formal verification to ensuring the memory safety of C++ Programs Verificação formal de programas C++ para garantir segurança de memória |
title |
Formal verification to ensuring the memory safety of C++ Programs |
spellingShingle |
Formal verification to ensuring the memory safety of C++ Programs Sousa, Felipe Rodrigues Monteiro Engenharia de Software Software Verification Model Checking Memory Safety Segurança de Memória CIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO: METODOLOGIA E TÉCNICAS DA COMPUTAÇÃO: ENGENHARIA DE SOFTWARE Software Verification Model Checking C++ Memory Safety Engenharia de Software Verificação Formal Segurança de Memória |
title_short |
Formal verification to ensuring the memory safety of C++ Programs |
title_full |
Formal verification to ensuring the memory safety of C++ Programs |
title_fullStr |
Formal verification to ensuring the memory safety of C++ Programs |
title_full_unstemmed |
Formal verification to ensuring the memory safety of C++ Programs |
title_sort |
Formal verification to ensuring the memory safety of C++ Programs |
author |
Sousa, Felipe Rodrigues Monteiro |
author_facet |
Sousa, Felipe Rodrigues Monteiro http://lattes.cnpq.br/4475065926209027 https://orcid.org/0000-0001-9420-9056 |
author_role |
author |
author2 |
http://lattes.cnpq.br/4475065926209027 https://orcid.org/0000-0001-9420-9056 |
author2_role |
author author |
dc.contributor.none.fl_str_mv |
Cordeiro, Lucas Carvalho http://lattes.cnpq.br/5005832876603012 Barreto, Raimundo da Silva http://lattes.cnpq.br/1132672107627968 Rocha, Herbert Oliveira http://lattes.cnpq.br/2284500318304899 |
dc.contributor.author.fl_str_mv |
Sousa, Felipe Rodrigues Monteiro http://lattes.cnpq.br/4475065926209027 https://orcid.org/0000-0001-9420-9056 |
dc.subject.por.fl_str_mv |
Engenharia de Software Software Verification Model Checking Memory Safety Segurança de Memória CIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO: METODOLOGIA E TÉCNICAS DA COMPUTAÇÃO: ENGENHARIA DE SOFTWARE Software Verification Model Checking C++ Memory Safety Engenharia de Software Verificação Formal Segurança de Memória |
topic |
Engenharia de Software Software Verification Model Checking Memory Safety Segurança de Memória CIÊNCIAS EXATAS E DA TERRA: CIÊNCIA DA COMPUTAÇÃO: METODOLOGIA E TÉCNICAS DA COMPUTAÇÃO: ENGENHARIA DE SOFTWARE Software Verification Model Checking C++ Memory Safety Engenharia de Software Verificação Formal Segurança de Memória |
description |
In the last three decades, memory safety issues in low-level programming languages such as C or C++ have been one of the significant sources of security vulnerabilities; however, there exist only a few attempts with limited success to cope with the complexity of C++ program verification. This work describes and evaluates a novel verification approach based on bounded model checking (BMC) and satisfiability modulo theories (SMT) to verify C++ programs formally. This verification approach analyzes bounded C++ programs by encoding various sophisticated features that the C++ programming language offers into SMT, such as templates, sequential and associative containers, inheritance, polymorphism, and exception handling. We formalize these sophisticated features within our formal verification framework using a decidable fragment of first-order logic and then show how state-of-the-art SMT solvers can efficiently handle that. We implemented this verification approach on top of the Efficient SMT-Based Context-Bounded Model Checker (ESBMC). We compare ESBMC to LLBMC and DIVINE, which are state-of-the-art verifiers to check C++ programs directly from LLVM bitcode. The experimental evaluation contains a set of over 1,500 benchmarks from several sources (e.g., Deitel & Deitel, NEC Corporation, and GCC test suite), which covers several C++ features. Experimental results show that ESBMC can handle a wide range of C++ programs, presenting a higher number of correct verification results, and at the same time, it reduces the verification time if compared to LLBMC and DIVINE tools. |
publishDate |
2020 |
dc.date.none.fl_str_mv |
2020-04-07T03:16:45Z 2020-01-17 |
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 |
MONTEIRO, Felipe Rodrigues Monteiro. Formal verification to ensuring the memory safety of C++ Programs. 2020. 71 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2020. https://tede.ufam.edu.br/handle/tede/7762 |
identifier_str_mv |
MONTEIRO, Felipe Rodrigues Monteiro. Formal verification to ensuring the memory safety of C++ Programs. 2020. 71 f. Dissertação (Mestrado em Informática) - Universidade Federal do Amazonas, Manaus, 2020. |
url |
https://tede.ufam.edu.br/handle/tede/7762 |
dc.language.iso.fl_str_mv |
eng |
language |
eng |
dc.rights.driver.fl_str_mv |
http://creativecommons.org/licenses/by/4.0/ info:eu-repo/semantics/openAccess |
rights_invalid_str_mv |
http://creativecommons.org/licenses/by/4.0/ |
eu_rights_str_mv |
openAccess |
dc.format.none.fl_str_mv |
application/pdf |
dc.publisher.none.fl_str_mv |
Universidade Federal do Amazonas Instituto de Computação Brasil UFAM Programa de Pós-graduação em Informática |
publisher.none.fl_str_mv |
Universidade Federal do Amazonas Instituto de Computação Brasil UFAM Programa de Pós-graduação em Informática |
dc.source.none.fl_str_mv |
reponame:Biblioteca Digital de Teses e Dissertações da UFAM instname:Universidade Federal do Amazonas (UFAM) instacron:UFAM |
instname_str |
Universidade Federal do Amazonas (UFAM) |
instacron_str |
UFAM |
institution |
UFAM |
reponame_str |
Biblioteca Digital de Teses e Dissertações da UFAM |
collection |
Biblioteca Digital de Teses e Dissertações da UFAM |
repository.name.fl_str_mv |
Biblioteca Digital de Teses e Dissertações da UFAM - Universidade Federal do Amazonas (UFAM) |
repository.mail.fl_str_mv |
ddbc@ufam.edu.br||ddbc@ufam.edu.br |
_version_ |
1809732039737344000 |