Cocoon: Static Information Flow Control in Rust

Fuente: arXiv
Salvato in:
Dettagli Bibliografici
Autori principali: Lamba, Ada, Taylor, Max, Beardsley, Vincent, Bambeck, Jacob, Bond, Michael D., Lin, Zhiqiang
Natura: Preprint
Pubblicazione: 2023
Soggetti:
Accesso online:
Tags: Aggiungi Tag
Nessun Tag, puoi essere il primo ad aggiungerne!!
_version_ 1866929281823670272
author Lamba, Ada
Taylor, Max
Beardsley, Vincent
Bambeck, Jacob
Bond, Michael D.
Lin, Zhiqiang
author_facet Lamba, Ada
Taylor, Max
Beardsley, Vincent
Bambeck, Jacob
Bond, Michael D.
Lin, Zhiqiang
contents Information flow control (IFC) provides confidentiality by enforcing noninterference, which ensures that high-secrecy values cannot affect low-secrecy values. Prior work introduces fine-grained IFC approaches that modify the programming language and use nonstandard compilation tools, impose run-time overhead, or report false secrecy leaks -- all of which hinder adoption. This paper presents Cocoon, a Rust library for static type-based IFC that uses the unmodified Rust language and compiler. The key insight of Cocoon lies in leveraging Rust's type system and procedural macros to establish an effect system that enforces noninterference. A performance evaluation shows that using Cocoon increases compile time but has no impact on application performance. To demonstrate Cocoon's utility, we retrofitted two popular Rust programs, the Spotify TUI client and Mozilla's Servo browser engine, to use Cocoon to enforce limited confidentiality policies.
format Preprint
id arxiv_https___arxiv_org_abs_2311_00097
institution arXiv
publishDate 2023
record_format arxiv
spellingShingle Cocoon: Static Information Flow Control in Rust
Lamba, Ada
Taylor, Max
Beardsley, Vincent
Bambeck, Jacob
Bond, Michael D.
Lin, Zhiqiang
Programming Languages
Information flow control (IFC) provides confidentiality by enforcing noninterference, which ensures that high-secrecy values cannot affect low-secrecy values. Prior work introduces fine-grained IFC approaches that modify the programming language and use nonstandard compilation tools, impose run-time overhead, or report false secrecy leaks -- all of which hinder adoption. This paper presents Cocoon, a Rust library for static type-based IFC that uses the unmodified Rust language and compiler. The key insight of Cocoon lies in leveraging Rust's type system and procedural macros to establish an effect system that enforces noninterference. A performance evaluation shows that using Cocoon increases compile time but has no impact on application performance. To demonstrate Cocoon's utility, we retrofitted two popular Rust programs, the Spotify TUI client and Mozilla's Servo browser engine, to use Cocoon to enforce limited confidentiality policies.
title Cocoon: Static Information Flow Control in Rust
topic Programming Languages
url https://arxiv.org/abs/2311.00097