TY - JOUR
T1 - Safer at any speed
T2 - Automatic context-aware safety enhancement for Rust
AU - Popescu, Natalie
AU - Xu, Ziyang
AU - Apostolakis, Sotiris
AU - August, David I.
AU - Levy, Amit
N1 - Publisher Copyright:
© 2021 Owner/Author.
PY - 2021/10
Y1 - 2021/10
N2 - Type-safe languages improve application safety by eliminating whole classes of vulnerabilities-such as buffer overflows-by construction. However, this safety sometimes comes with a performance cost. As a result, many modern type-safe languages provide escape hatches that allow developers to manually bypass them. The relative value of performance to safety and the degree of performance obtained depends upon the application context, including user goals and the hardware upon which the application is to be executed. Since libraries may be used in many different contexts, library developers cannot make safety-performance trade-off decisions appropriate for all cases. Application developers can tune libraries themselves to increase safety or performance, but this requires extra effort and makes libraries less reusable. To address this problem, we present NADER, a Rust development tool that makes applications safer by automatically transforming unsafe code into equivalent safe code according to developer preferences and application context. In end-to-end system evaluations in a given context, NADER automatically reintroduces numerous library bounds checks, in many cases making application code that uses popular Rust libraries safer with no corresponding loss in performance.
AB - Type-safe languages improve application safety by eliminating whole classes of vulnerabilities-such as buffer overflows-by construction. However, this safety sometimes comes with a performance cost. As a result, many modern type-safe languages provide escape hatches that allow developers to manually bypass them. The relative value of performance to safety and the degree of performance obtained depends upon the application context, including user goals and the hardware upon which the application is to be executed. Since libraries may be used in many different contexts, library developers cannot make safety-performance trade-off decisions appropriate for all cases. Application developers can tune libraries themselves to increase safety or performance, but this requires extra effort and makes libraries less reusable. To address this problem, we present NADER, a Rust development tool that makes applications safer by automatically transforming unsafe code into equivalent safe code according to developer preferences and application context. In end-to-end system evaluations in a given context, NADER automatically reintroduces numerous library bounds checks, in many cases making application code that uses popular Rust libraries safer with no corresponding loss in performance.
KW - Rust
KW - bounds checks
KW - safety-performance trade-off
UR - http://www.scopus.com/inward/record.url?scp=85117577427&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85117577427&partnerID=8YFLogxK
U2 - 10.1145/3485480
DO - 10.1145/3485480
M3 - Article
AN - SCOPUS:85117577427
SN - 2475-1421
VL - 5
JO - Proceedings of the ACM on Programming Languages
JF - Proceedings of the ACM on Programming Languages
IS - OOPSLA
M1 - 103
ER -