Affiliation:
1. Vrije Universiteit Brussel, Belgium
2. Newcastle University, UK
3. KU Leuven, Belgium
Abstract
Verifying soundness of symbolic execution-based program verifiers is a
significant challenge. This is especially true if the resulting tool needs to be
usable outside of the proof assistant, in which case we cannot rely on shallowly
embedded assertion logics and meta-programming. The tool needs to manipulate
deeply embedded assertions, and it is crucial for efficiency to eagerly prune
unreachable paths and simplify intermediate assertions in a way that can be
justified towards the soundness proof. Only a few such tools exist in the
literature, and their soundness proofs are intricate and hard to generalize or
reuse. We contribute a novel, systematic approach for the construction and
soundness proof of such a symbolic execution-based verifier. We first implement
a shallow verification condition generator as an object language interpreter in
a specification monad, using an abstract interface featuring angelic and demonic
nondeterminism. Next, we build a symbolic executor by implementing a similar
interpreter, in a symbolic specification monad. This symbolic monad lives in a
universe that is Kripke-indexed by variables in scope and a path condition.
Finally, we reduce the soundness of the symbolic execution to the soundness of
the shallow execution by relating both executors using a Kripke logical
relation. We report on the practical application of these techniques in
Katamaran, a tool for verifying security guarantees offered by instruction set
architectures (ISAs). The tool is fully verified by combining our symbolic
execution machinery with a soundness proof of the shallow verification
conditions against an axiomatized separation logic, and an Iris-based
implementation of the axioms, proven sound against the operational semantics.
Based on our experience with Katamaran, we can report good results on
practicality and efficiency of the tool, demonstrating practical viability of
our symbolic execution approach.
Funder
European Research Council
Publisher
Association for Computing Machinery (ACM)
Subject
Safety, Risk, Reliability and Quality,Software
Cited by
4 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Sound Gradual Verification with Symbolic Execution;Proceedings of the ACM on Programming Languages;2024-01-05
2. Engineering a Formally Verified Automated Bug Finder;Proceedings of the 31st ACM Joint European Software Engineering Conference and Symposium on the Foundations of Software Engineering;2023-11-30
3. Formalizing, Verifying and Applying ISA Security Guarantees as Universal Contracts;Proceedings of the 2023 ACM SIGSAC Conference on Computer and Communications Security;2023-11-15
4. Cerise: Program Verification on a Capability Machine in the Presence of Untrusted Code;Journal of the ACM;2023-09-14