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.

Highlights

  • In this article, we introduce an extension of Symbolic Memory Graphs

  • Research interests: program verification, static analysis, operating systems

Read more

Summary

Введение

Критические ошибки безопасности и непредвиденные прекращения работы программы часто происходят из-за неправильной работы с памятью. Анализ корректности работы с памятью с использованием расширения теории символьных графов памяти предикатами над символьными значениями. Наиболее перспективным [24] для верификации ошибок использования памяти является подход, основанный на символьных графах памяти (Symbolic Memory Graph, SMG) [25]. SMG позволяет эффективно описывать ограниченные структуры данных, используя символьные имена и описание связей между ними в виде графов. Для борьбы с неограниченным ростом используются методы абстракции, с помощью которых похожие элементы структуры обобщаются, тем самым неограниченные данные представляются в виде конечного символьного графа. 5 определяется адаптивный статический анализ на основе символьных графов памяти (SMGCPA), работающий с расширенным SMG, что позволяет повысить точность анализа, используя предикаты для отсечения невыполнимых путей в операторе перехода, и поддержать неограниченные динамические структуры данных. – конечное множество объектов, которые включают в себя регионы памяти и абстракции регионов памяти , например для сегментов списков. Смещение относительно объекта, в который ведет ребро ∈ , обозначим ( ): →

Операции над SMG
Конкретизация SMG
Пример интерпретации выполнения программы
Адаптивный статический анализ
Комбинация адаптивных анализов
Эксперименты
Заключение
Full Text
Paper version not known

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call

Disclaimer: All third-party content on this website/platform is and will remain the property of their respective owners and is provided on "as is" basis without any warranties, express or implied. Use of third-party content does not indicate any affiliation, sponsorship with or endorsement by them. Any references to third-party content is to identify the corresponding services and shall be considered fair use under The CopyrightLaw.