Verification of Safety Functions Implemented in Rust - a Symbolic Execution based approach

被引:0
|
作者
Lindner, Marcus [1 ]
Fitinghoff, Nils [1 ]
Eriksson, Johan [1 ]
Lindgren, Per [1 ]
机构
[1] Lulea Univ Technol, Lulea, Sweden
关键词
D O I
10.1109/indin41052.2019.8972014
中图分类号
TP3 [计算技术、计算机技术];
学科分类号
0812 ;
摘要
Symbolic execution allows us to observe and assert properties of program code executing under (partially) unknown inputs and state. In this work we present a case study demonstrating that safety functions implemented in the Rust programming language can be verified by an assertion based approach. To this end, we leverage on previous developments adopting LLVM-KLEE for symbolic execution of Rust programs. In particular we show that reliability can be ensured by proven absence of undefined behavior and that safety properties (expressed as assertions) can be ensured for all reachable paths of the underlying implementation (under symbolic inputs). Moreover, the verification (besides stating assertions) is fully automatic and can be applied without any changes made to the implementation. While assertions have the advantage of being familiar to the mainstream programmer, they lack the expressiveness of dedicated logic developed for model checking. The paper also discusses complexity issues arising from path/state explosion inherent to symbolic execution. The feasibility of the approach is demonstrated on a representative use case implementing a safety function (equality) from the PLCopen library. We obtain complete path- (466) and state- (8) coverage in under 2 seconds for the given example on an i7-7700 laptop computer.
引用
收藏
页码:432 / 439
页数:8
相关论文
共 50 条
  • [31] Automatic Verification of Iterated Separating Conjunctions Using Symbolic Execution
    Muller, Peter
    Schwerhoff, Malte
    Summers, Alexander J.
    COMPUTER AIDED VERIFICATION, (CAV 2016), PT I, 2016, 9779 : 405 - 425
  • [32] Gradual C0: Symbolic Execution for Gradual Verification
    Divincenzo, Jenna
    Mccormack, Ian
    Zimmerman, Conrad
    Gouni, Hemant
    Gorenburg, Jacob
    Ramos-davila, Jan-paul
    Zhang, Mona
    Sunshine, Joshua
    Tanter, Eric
    Aldrich, Jonathan
    ACM TRANSACTIONS ON PROGRAMMING LANGUAGES AND SYSTEMS, 2024, 46 (04):
  • [33] DyTa: Dynamic Symbolic Execution Guided with Static Verification Results
    Ge, Xi
    Taneja, Kunal
    Xie, Tao
    Tillmann, Nikolai
    2011 33RD INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2011, : 992 - 994
  • [34] Comparing Verification Condition Generation with Symbolic Execution: An Experience Report
    Kassios, Ioannis T.
    Mueller, Peter
    Schwerhoff, Malte
    VERIFIED SOFTWARE: THEORIES, TOOLS, EXPERIMENTS, 2012, 7152 : 196 - 208
  • [35] Source Code Assertion Verification Using Backward Symbolic Execution
    Husak, Robert
    Zavoral, Filip
    INTERNATIONAL CONFERENCE ON NUMERICAL ANALYSIS AND APPLIED MATHEMATICS (ICNAAM-2018), 2019, 2116
  • [36] The Method for Parallel Approach to Sensitive Point Based on Dynamic Symbolic Execution
    Cao, Yan
    Wei, Qiang
    Wang, Qingxian
    PROCEEDINGS OF THE 2012 EIGHTH INTERNATIONAL CONFERENCE ON COMPUTATIONAL INTELLIGENCE AND SECURITY (CIS 2012), 2012, : 661 - 665
  • [37] Online Signature Verification and Recognition: An Approach Based on Symbolic Representation
    Guru, D. S.
    Prakash, H. N.
    IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, 2009, 31 (06) : 1059 - 1073
  • [38] A generic framework for symbolic execution: A coinductive approach
    Lucanu, Dorel
    Rusu, Vlad
    Arusoaie, Andrei
    JOURNAL OF SYMBOLIC COMPUTATION, 2017, 80 : 125 - 163
  • [39] Segmental Symbolic Execution Based on Clustering
    Ma, Rui
    Gao, Haoran
    Dou, Bowen
    Wang, Xiajing
    Hu, Changzhen
    2019 IEEE SMARTWORLD, UBIQUITOUS INTELLIGENCE & COMPUTING, ADVANCED & TRUSTED COMPUTING, SCALABLE COMPUTING & COMMUNICATIONS, CLOUD & BIG DATA COMPUTING, INTERNET OF PEOPLE AND SMART CITY INNOVATION (SMARTWORLD/SCALCOM/UIC/ATC/CBDCOM/IOP/SCI 2019), 2019, : 1289 - 1296
  • [40] Symbolic execution based on language transformation
    Arusoaie, Andrei
    Lucanu, Dorel
    Rusu, Vlad
    COMPUTER LANGUAGES SYSTEMS & STRUCTURES, 2015, 44 : 48 - 71