Formal verification to ensuring the memory safety of C++ Programs

Detalhes bibliográficos
Autor(a) principal: Sousa, Felipe Rodrigues Monteiro
Data de Publicação: 2020
Outros Autores: http://lattes.cnpq.br/4475065926209027, https://orcid.org/0000-0001-9420-9056
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