English

Trustworthy Verification of RISC-V Binaries Using Symbolic Execution in HolBA

Logic in Computer Science 2025-03-19 v1

Abstract

Many types of formal verification establish properties about abstract high-level program representations, leaving a large gap to programs at runtime. Although gaps can sometimes be narrowed by techniques such as refinement, a verified program's trusted computing base may still include compilers and inlined assembly. In contrast, verification of binaries following an Instruction Set Architecture (ISA) such as RISC-V can ensure that machine code behaves as expected on real hardware. While binary analysis is useful and sometimes even necessary for ensuring trustworthiness of software systems, existing tools do not have a formal foundation or lack automation for verification. We present a workflow and toolchain based on the HOL4 theorem prover and the HolBA binary analysis library for trustworthy formal verification of RISC-V binaries. The toolchain automates proofs of binary contracts by forward symbolic execution of programs in HolBA's intermediate language, BIR. We validated our toolchain by verifying correctness of RISC-V binaries with (1) an implementation of the ChaCha20 stream cipher and (2) hand-written assembly for context switching in an operating system kernel.

Keywords

Cite

@article{arxiv.2503.14135,
  title  = {Trustworthy Verification of RISC-V Binaries Using Symbolic Execution in HolBA},
  author = {Karl Palmskog and Andreas Lindner and Scott Constable and Roberto Guanciale and Hamed Nemati},
  journal= {arXiv preprint arXiv:2503.14135},
  year   = {2025}
}

Comments

12 pages, 7 figures, 1 table