|
Predicate extension of symbolic memory graphs for analysis of memory safety correctness
A. A. Vasilyev, V. S. Mutilin Ivannikov Institute for System Programming of the Russian Academy of Sciences
Abstract:
Safety-critical systems require additional effort to comply with specifications. One of the required specification is correct memory usage. The article describes an efficient method for static verification against memory safety errors as a combination of Symbolic Memory Graphs and predicate abstraction on symbolic values used in graph. In this article, we introduce an extension of Symbolic Memory Graphs. In addition to symbolic values, the graph stores predicates over symbolic values, which allow to track the relationship between symbolic values in the graph. We also expand existing vertex types to support arbitrary abstract regions, which allow us to represent such dynamic data structures as lists and trees. One of the types of abstract regions is also the ODM region, which presents a special kind of on-demand memory that occurs when analyzing incomplete programs. For this memory, the size and structure of the contents are not known in advance, but it is believed that such memory can be operated safely. The method is implemented in CPAchecker tool. Practical usage is demonstrated on Linux kernel modules. The practical contribution of our work is to reduce false error messages by constructing more accurate abstractions using predicates over symbolic values.
Keywords:
symbolic memory graphs, formal verification, predicate abstraction.
Citation:
A. A. Vasilyev, V. S. Mutilin, “Predicate extension of symbolic memory graphs for analysis of memory safety correctness”, Proceedings of ISP RAS, 31:6 (2019), 7–20
Linking options:
https://www.mathnet.ru/eng/tisp467 https://www.mathnet.ru/eng/tisp/v31/i6/p7
|
Statistics & downloads: |
Abstract page: | 105 | Full-text PDF : | 48 | References: | 23 |
|