Runtime Verification of C Memory Safety

被引:0
|
作者
Rosu, Grigore [1 ]
Schulte, Wolfram [2 ]
Serbanuta, Traian Florin [1 ]
机构
[1] Univ Illinois, Urbana, IL USA
[2] Microsoft Res, Urbana, IL USA
来源
RUNTIME VERIFICATION | 2009年 / 5779卷
关键词
REWRITING LOGIC;
D O I
暂无
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
C is the most widely used imperative system's implementation language. While C provides types and high-level abstractions, its design goal has been to provide highest performance which often requires low-level access to memory. As a consequence C supports arbitrary pointer arithmetic, casting, and explicit allocation and deal-location. These operations are difficult to use, resulting in programs that often have software bugs like buffer overflows and dangling pointers that cause security vulnerabilities. We say a C program is memory safe, if at runtime it never goes wrong with such a memory access error. Based on standards for writing "good" C code, this paper proposes strong memory safety as the least restrictive formal definition of memory safety amenable for runtime verification. We show that although verification of memory safety is in general undecidable, even when restricted to closed, terminating programs, runtime verification of strong memory safety is a decision procedure for this class of programs. We verify strong memory safety of a program by executing the program using a symbolic, deterministic definition of the dynamic semantics. A prototype implementation of these ideas shows the feasibility of this approach.
引用
收藏
页码:132 / +
页数:3
相关论文
共 50 条
  • [1] Runtime Verification of Memory Safety via Source Transformation
    Chen, Zhe
    Yan, Junqi
    Li, Wenming
    Qian, Ju
    Huang, Zhiqiu
    PROCEEDINGS 2018 IEEE/ACM 40TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING - COMPANION (ICSE-COMPANION, 2018, : 264 - 265
  • [2] Checking and Enforcing Safety: Runtime Verification and Runtime Reflection
    Leucker, Martin
    ERCIM NEWS, 2008, (75): : 35 - 36
  • [3] Runtime verification of C programs
    Havelund, Klaus
    TESTING OF SOFTWARE AND COMMUNICATING SYSTEMS, PROCEEDINGS, 2008, 5047 : 7 - 22
  • [4] MemSafe: Ensuring the Spatial and Temporal Memory Safety of C at Runtime
    Simpson, Matthew S.
    Barua, Rajeev K.
    2010 10TH IEEE INTERNATIONAL WORKING CONFERENCE ON SOURCE CODE ANALYSIS AND MANIPULATION, 2010, : 199 - 208
  • [5] MemSafe: ensuring the spatial and temporal memory safety of C?at runtime
    Simpson, Matthew S.
    Barua, Rajeev K.
    SOFTWARE-PRACTICE & EXPERIENCE, 2013, 43 (01): : 93 - 128
  • [6] Runtime Verification of Safety-Progress Properties
    Falcone, Ylies
    Fernandez, Jean-Claude
    Mounier, Laurent
    RUNTIME VERIFICATION, 2009, 5779 : 40 - 59
  • [7] Parametric Runtime Verification of C Programs
    Chen, Zhe
    Wang, Zhemin
    Zhu, Yunlong
    Xi, Hongwei
    Yang, Zhibin
    TOOLS AND ALGORITHMS FOR THE CONSTRUCTION AND ANALYSIS OF SYSTEMS (TACAS 2016), 2016, 9636 : 299 - 315
  • [8] Runtime Verification of k-Safety Hyperproperties in HyperLTL
    Agrawal, Shreya
    Bonakdarpour, Borzoo
    2016 IEEE 29TH COMPUTER SECURITY FOUNDATIONS SYMPOSIUM (CSF 2016), 2016, : 239 - 252
  • [9] Memory safety without runtime checks or garbage collection
    Dhurjati, D
    Kowshik, S
    Adve, V
    Lattner, C
    ACM SIGPLAN NOTICES, 2003, 38 (07) : 69 - 80
  • [10] Interactive Runtime Verification - When Interactive Debugging meets Runtime Verification
    Jakse, Raphael
    Falcone, Ylies
    Mehaut, Jean-Francois
    Pouget, Kevin
    2017 IEEE 28TH INTERNATIONAL SYMPOSIUM ON SOFTWARE RELIABILITY ENGINEERING (ISSRE), 2017, : 182 - 193