Static Taint Analysis in Rust: Using Rusts Ownership System for Precise Static Analysis
Translated title
Static Taint Analysis in Rust
Authors
Gústafsson, Hilmar ; Njor, Emil Jørgensen
Term
4. term
Education
Publication year
2021
Submitted on
2021-06-10
Pages
51
Abstract
Mange værktøjer analyserer programkode uden at køre den (statisk analyse), men deres nøjagtighed lider ofte under aliasering – når flere navne eller referencer peger på de samme data. Rust bruger et ejerskabssystem, der begrænser aliasering, og i teorien burde det gøre statiske analyser mere præcise end i sprog uden sådanne regler. I dette arbejde undersøger vi, hvordan ejerskabssystemet i praksis kan øge præcisionen. Vi formaliserer en delmængde af Rusts Mid-level Intermediate Representation (MIR) og definerer en statisk taint-analyse oven på denne formaliserede model. En taint-analyse sporer, hvordan potentielt usikre eller følsomme data kan flyde gennem et program. Vi implementerer et værktøj baseret på Rust-kompilatoren for at demonstrere analysen. Vores resultater bekræfter, at aliaseringsbegrænsningerne i Rusts ejerskabssystem gør det muligt at udføre en mere præcis taint-analyse.
Many tools analyze code without running it (static analysis), but their accuracy often suffers from aliasing—when multiple names or references point to the same data. Rust uses an ownership system that limits aliasing, which should, in theory, make static analyses more precise than in languages without such rules. In this work, we examine how the ownership system can improve precision in practice. We formalize a subset of Rust’s Mid-level Intermediate Representation (MIR) and define a static taint analysis on top of this formalization. Taint analysis tracks how potentially untrusted or sensitive data flows through a program. We implement a tool built on the Rust compiler to demonstrate the analysis. Our findings confirm that Rust’s aliasing restrictions enable a more precise taint analysis.
[This abstract was generated with the help of AI]
Keywords
Statisk Analyse ; Rust ; Taint Analyse ; Semantik ; Syntaks
Documents
