References:
Machine code verification:
w.r.t. With Respect To.
Grand Challenge:
In low-level code verification, it remains a grand challenge to develop tools that are demonstrably sound w.r.t. the underlying architecture and support reasoning about all of it, including all system features.
Key aspects:
Fidelity and completeness w.r.t. the underlying instruction-set architecture (ISA), the sequential semantics of machine instructions.
Problem:
the fidelity and coverage also makes these models intimidatingly large and complex, and only sometimes practical for mechanised proof.
e.g. Armv8-A instruction add sp, sp, 64
sp
as a banked family of regitsers, selected based on the current exception level register value.e.g. ldrb
instruction to load a byte.
This paper: focus on the fidelity and completeness of the model.
The challenge is how one can reason above such models while avoiding up-front idealisation, so that we retain the ability to reason about the whole architecture, and the confidence in the authoritative model.
Islaris’ Insight: the verification problem can be split into two subtasks, separating the irrelevant complexity from the inherent complexity, so that each can then be solved by techniques well suited for the respective task: SMT-based symbolic evaluation, and a mechanised program logic.
Many aspects of the ISA definitions are irrelevant, because they do not influence the results of instructions or are ruled out by the system configuration.
To handle this irrelevant complexity, the Isla symbolic evaluation tool for Sail ISA specifications are extended.
Isla:
Problem Scope:
Islaris:
define a higer-order separation logic for the Isla traces that produces machine-checkable proofs, based on Iris[c32].
adapts Lithium, to design proof automation that makes the verification practical.
Proof automation is comparable to previous foundational approaches [c13] [c41], but for full ISA semantics rather than a simple intermediate language.
Inputs:
Tool Dependencies:
ISA spec pruning and Trace generation:
Coq generation:
Islaris proof automation in Coq:
Outputs:
Islaris currently assumes single-threaded execution.
Islaris also does not currenlty support self-modifying code or address translation, which involve additional forms of relaxed-memory concurrency, likewise subjects of active research [c60] [c61]
Focus on 64-bit little-endian cases.
on small but tricky examples.
scaling remains future work.
If you could revise
the fundmental principles of
computer system design
to improve security...
... what would you change?