Modular Formal Verification of Rust Programs with Unsafe Blocks

12/26/2022
by   Nima Rahimi Foroushaani, et al.
0

Rust is a modern systems programming language whose type system guarantees memory safety. For the sake of expressivity and performance it allows programmers to relax typing rules temporarily, using unsafe code blocks. However, in unsafe blocks, the burden of making sure that the code does not end up having undefined behaviour is on the programmer. Even most expert programmers make mistakes and a memory safety bug in an unsafe block renders all the type system guarantees void. To address this problem we are trying to verify soundness of Rust unsafe code applying our Modular Symbolic Execution algorithm. This text outlines our approach and the progress that has been made so far.

READ FULL TEXT

page 9

page 18

research
11/14/2022

A Formal CHERI-C Semantics for Verification

CHERI-C extends the C programming language by adding hardware capabiliti...
research
05/05/2023

Descend: A Safe GPU Systems Programming Language

Graphics Processing Units (GPU) offer tremendous computational power by ...
research
08/29/2022

MSWasm: Soundly Enforcing Memory-Safe Execution of Unsafe Code

Most programs compiled to WebAssembly (Wasm) today are written in unsafe...
research
06/17/2020

Breaking Type-Safety in Go: An Empirical Study on the Usage of the unsafe Package

A decade after its first release, the Go programming language has become...
research
02/20/2021

Automatic Programming Through Combinatorial Evolution

It has been already shown that combinatorial evolution - the creation of...
research
06/10/2020

Retrofitting Symbolic Holes to LLVM IR

Symbolic holes are one of the fundamental building blocks of solver-aide...
research
08/06/2019

A Dependently Typed Multi-Stage Calculus

We study a dependently typed extension of a multi-stage programming lang...

Please sign up or login with your details

Forgot password? Click here to reset