Validating Memory Safety in Rust Binaries

Fuente: Zenodo
Gespeichert in:
Bibliographische Detailangaben
Hauptverfasser: Louka, Antonis, Dionysiou, Antreas, Athanasopoulos, Elias
Format: Recurso digital
Veröffentlicht: Zenodo 2024
Online-Zugang:
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
_version_ 1866901612338872320
author Louka, Antonis
Dionysiou, Antreas
Athanasopoulos, Elias
author_facet Louka, Antonis
Dionysiou, Antreas
Athanasopoulos, Elias
contents <p>Without depending on heavy runtime support, Rust can realize fast machine code that mitigates most of the common attacks associated with memory-corruption and can appear in all unsafe machine code developed using C/C++. Most of the work for producing machine code with security guarantees is carried out at compile-time by the Rust compiler. However, at runtime, there is no mechanism to ensure that the produced security guarantees, as computed at compile-time, are still in place.<br>In this paper, we explore the possibilities of an attacker fabricating Rust binaries so that they are on purpose vulnerable. We<br>show that it is possible to modify automatically, and at large scale, binaries so that certain defences, placed by the Rust compiler, are removed. We introduce a generic problem, and focus on concepts of spatial and temporal safety. Finally, we produce a validator that assesses if all checks ensuring spatial and temporal safety remain intact within a Rust binary, before executing it. Our work is a step towards validating Rust binaries at load time so that security guarantees computed at compile-time are effective at runtime.</p>
format Recurso digital
id zenodo_https___doi_org_10_1145_3642974_3652281
institution Zenodo
language
publishDate 2024
publisher Zenodo
record_format zenodo
spellingShingle Validating Memory Safety in Rust Binaries
Louka, Antonis
Dionysiou, Antreas
Athanasopoulos, Elias
<p>Without depending on heavy runtime support, Rust can realize fast machine code that mitigates most of the common attacks associated with memory-corruption and can appear in all unsafe machine code developed using C/C++. Most of the work for producing machine code with security guarantees is carried out at compile-time by the Rust compiler. However, at runtime, there is no mechanism to ensure that the produced security guarantees, as computed at compile-time, are still in place.<br>In this paper, we explore the possibilities of an attacker fabricating Rust binaries so that they are on purpose vulnerable. We<br>show that it is possible to modify automatically, and at large scale, binaries so that certain defences, placed by the Rust compiler, are removed. We introduce a generic problem, and focus on concepts of spatial and temporal safety. Finally, we produce a validator that assesses if all checks ensuring spatial and temporal safety remain intact within a Rust binary, before executing it. Our work is a step towards validating Rust binaries at load time so that security guarantees computed at compile-time are effective at runtime.</p>
title Validating Memory Safety in Rust Binaries
url https://doi.org/10.1145/3642974.3652281