Cargando…

Highly Automated Formal Proofs over Memory Usage of Assembly Code

We present a methodology for generating a characterization of the memory used by an assembly program, as well as a formal proof that the assembly is bounded to the generated memory regions. A formal proof of memory usage is required for compositional reasoning over assembly programs. Moreover, it ca...

Descripción completa

Detalles Bibliográficos
Autores principales: Verbeek, Freek, Bockenek, Joshua A., Ravindran, Binoy
Formato: Online Artículo Texto
Lenguaje:English
Publicado: 2020
Materias:
Acceso en línea:https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7480695/
http://dx.doi.org/10.1007/978-3-030-45237-7_6
_version_ 1783580461189038080
author Verbeek, Freek
Bockenek, Joshua A.
Ravindran, Binoy
author_facet Verbeek, Freek
Bockenek, Joshua A.
Ravindran, Binoy
author_sort Verbeek, Freek
collection PubMed
description We present a methodology for generating a characterization of the memory used by an assembly program, as well as a formal proof that the assembly is bounded to the generated memory regions. A formal proof of memory usage is required for compositional reasoning over assembly programs. Moreover, it can be used to prove low-level security properties, such as integrity of the return address of a function. Our verification method is based on interactive theorem proving, but provides automation by generating pre- and postconditions, invariants, control-flow, and assumptions on memory layout. As a case study, three binaries of the Xen hypervisor are disassembled. These binaries are the result of a complex build-chain compiling production code, and contain various complex and nested loops, large and compound data structures, and functions with over 100 basic blocks. The methodology has been successfully applied to 251 functions, covering 12,252 assembly instructions.
format Online
Article
Text
id pubmed-7480695
institution National Center for Biotechnology Information
language English
publishDate 2020
record_format MEDLINE/PubMed
spelling pubmed-74806952020-09-10 Highly Automated Formal Proofs over Memory Usage of Assembly Code Verbeek, Freek Bockenek, Joshua A. Ravindran, Binoy Tools and Algorithms for the Construction and Analysis of Systems Article We present a methodology for generating a characterization of the memory used by an assembly program, as well as a formal proof that the assembly is bounded to the generated memory regions. A formal proof of memory usage is required for compositional reasoning over assembly programs. Moreover, it can be used to prove low-level security properties, such as integrity of the return address of a function. Our verification method is based on interactive theorem proving, but provides automation by generating pre- and postconditions, invariants, control-flow, and assumptions on memory layout. As a case study, three binaries of the Xen hypervisor are disassembled. These binaries are the result of a complex build-chain compiling production code, and contain various complex and nested loops, large and compound data structures, and functions with over 100 basic blocks. The methodology has been successfully applied to 251 functions, covering 12,252 assembly instructions. 2020-03-13 /pmc/articles/PMC7480695/ http://dx.doi.org/10.1007/978-3-030-45237-7_6 Text en © The Author(s) 2020 Open Access This chapter is licensed under the terms of the Creative Commons Attribution 4.0 International License (http://creativecommons.org/licenses/by/4.0/), which permits use, sharing, adaptation, distribution and reproduction in any medium or format, as long as you give appropriate credit to the original author(s) and the source, provide a link to the Creative Commons license and indicate if changes were made. The images or other third party material in this chapter are included in the chapter's Creative Commons license, unless indicated otherwise in a credit line to the material. If material is not included in the chapter's Creative Commons license and your intended use is not permitted by statutory regulation or exceeds the permitted use, you will need to obtain permission directly from the copyright holder.
spellingShingle Article
Verbeek, Freek
Bockenek, Joshua A.
Ravindran, Binoy
Highly Automated Formal Proofs over Memory Usage of Assembly Code
title Highly Automated Formal Proofs over Memory Usage of Assembly Code
title_full Highly Automated Formal Proofs over Memory Usage of Assembly Code
title_fullStr Highly Automated Formal Proofs over Memory Usage of Assembly Code
title_full_unstemmed Highly Automated Formal Proofs over Memory Usage of Assembly Code
title_short Highly Automated Formal Proofs over Memory Usage of Assembly Code
title_sort highly automated formal proofs over memory usage of assembly code
topic Article
url https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7480695/
http://dx.doi.org/10.1007/978-3-030-45237-7_6
work_keys_str_mv AT verbeekfreek highlyautomatedformalproofsovermemoryusageofassemblycode
AT bockenekjoshuaa highlyautomatedformalproofsovermemoryusageofassemblycode
AT ravindranbinoy highlyautomatedformalproofsovermemoryusageofassemblycode