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...
Autores principales: | , , |
---|---|
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 |