Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data. A simulation from public publication records: the people listed were not invited and did not agree to review.

Ana Nora Evans

dblp:207/7919 · DBLP profile ↗
← Back
2ranked-venue papers
1as first author
0since 2021 · last 2020
—ORCID · none

Domains — the database's venue-derived domains; a paper can count in several

Security and privacy · 1Software engineering, systems software and programming languages · 1 · 1 first-author

Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.

Software engineering, system software, and programming languages
2 papers
Programming languages and type systems · 60% Empirical software engineering · 40%
Network and information security
1 paper
Systems and software security · 100%

Topics — the 8 heaviest of 9, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Programming languages and type systems › language-based security
memory safety
0.412020
Is rust used safely by software developers? · ICSE 2020
Empirical software engineering
mining software repositories
0.412020
Is rust used safely by software developers? · ICSE 2020
Empirical software engineering › mining software repositories
unsafe code usage
0.412020
Is rust used safely by software developers? · ICSE 2020
Programming languages and type systems › rust
unsafe rust
0.412020
Is rust used safely by software developers? · ICSE 2020
Systems and software security › language-based security
secure compilation
0.312018
When Good Components Go Bad: Formally Secure Compilation Despite Dynamic Compromise · CCS 2018
Programming languages and type systems
language semantics
0.312018
When Good Components Go Bad: Formally Secure Compilation Despite Dynamic Compromise · CCS 2018
Systems and software security › isolation
compartmentalization
0.112018
When Good Components Go Bad: Formally Secure Compilation Despite Dynamic Compromise · CCS 2018
Systems and software security › isolation
software fault isolation
0.112018
When Good Components Go Bad: Formally Secure Compilation Despite Dynamic Compromise · CCS 2018

Methods — techniques the papers use, named apart from their topics

tag-based reference monitor · 0.7static analysis · 0.4large-scale empirical study · 0.4coq proofs · 0.3coq proof · 0.3
YearPublicationVenuePosition
2020 Is rust used safely by software developers?
abstract
Rust, an emerging programming language with explosive growth, provides a robust type system that enables programmers to write memory-safe and data-race free code. To allow access to a machine's hardware and to support low-level performance optimizations, a second language, Unsafe Rust, is embedded in Rust. It contains support for operations that are difficult to statically check, such as C-style pointers for access to arbitrary memory locations and mutable global variables. When a program uses these features, the compiler is unable to statically guarantee the safety properties Rust promotes. In this work, we perform a large-scale empirical study to explore how software developers are using Unsafe Rust in real-world Rust libraries and applications. Our results indicate that software engineers use the keyword unsafe in less than 30% of Rust libraries, but more than half cannot be entirely statically checked by the Rust compiler because of Unsafe Rust hidden somewhere in a library's call chain. We conclude that although the use of the keyword unsafe is limited, the propagation of unsafeness offers a challenge to the claim of Rust as a memory-safe language. Furthermore, we recommend changes to the Rust compiler and to the central Rust repository's interface to help Rust software developers be aware of when their Rust code is unsafe.
Ana Nora Evans, Bradford Campbell, Mary Lou Soffa
ICSE1
2018 When Good Components Go Bad: Formally Secure Compilation Despite Dynamic Compromise
abstract
We propose a new formal criterion for evaluating secure compilation schemes for unsafe languages, expressing end-to-end security guarantees for software components that may become compromised after encountering undefined behavior---for example, by accessing an array out of bounds. Our criterion is the first to model dynamic compromise in a system of mutually distrustful components with clearly specified privileges. It articulates how each component should be protected from all the others---in particular, from components that have encountered undefined behavior and become compromised. Each component receives secure compilation guarantees---in particular, its internal invariants are protected from compromised components---up to the point when this component itself becomes compromised, after which we assume an attacker can take complete control and use this component's privileges to attack other components. More precisely, a secure compilation chain must ensure that a dynamically compromised component cannot break the safety properties of the system at the target level any more than an arbitrary attacker-controlled component (with the same interface and privileges, but without undefined behaviors) already could at the source level. To illustrate the model, we construct a secure compilation chain for a small unsafe language with buffers, procedures, and components, targeting a simple abstract machine with built-in compartmentalization. We give a careful proof (mostly machine-checked in Coq) that this compiler satisfies our secure compilation criterion. Finally, we show that the protection guarantees offered by the compartmentalized abstract machine can be achieved at the machine-code level using either software fault isolation or a tag-based reference monitor.
Carmine Abate, Arthur Azevedo de Amorim, Roberto Blanco, Ana Nora Evans, Guglielmo Fachini, Catalin Hritcu, Théo Laurent, Benjamin C. Pierce, Marco Stronati, Andrew P. Tolmach
CCS4