Rust is a memory-safe programming language that disallows undefined behavior. Its safety guarantees have been extensively examined by the community through empirical studies, which has led to its remarkable success. However, unsafe code remains a critical concern in Rust. By reviewing the safety design of Rust and analyzing real-world Rust projects, this paper establishes a systematic framework for understanding unsafe code and undefined behavior, and summarizes the soundness criteria for Rust code. It further derives actionable guidance for achieving sound encapsulation.
academic
Ein Trace-basierter Ansatz zur Codeanalyse der Sicherheit
Rust ist eine speichersichere Programmiersprache, die undefiniertes Verhalten verbietet. Seine Sicherheitsgarantien wurden durch umfangreiche empirische Forschung der Gemeinschaft validiert, was auch der Grund für seinen bemerkenswerten Erfolg ist. Allerdings bleibt unsicherer Code (unsafe code) ein kritisches Problem in Rust. Dieses Papier etabliert einen systematischen Rahmen zum Verständnis von unsicherem Code und undefiniertem Verhalten durch Überprüfung des Rust-Sicherheitsdesigns und Analyse von realen Rust-Projekten, fasst Soliditätsstandards für Rust-Code zusammen und schlägt weiterhin praktische Richtlinien zur Implementierung solider Kapselung vor.
Grenzen der Rust-Sicherheitsversprechen: Obwohl Rust verspricht, dass sicherer Code nicht zu undefiniertem Verhalten führt, kann unsicherer Code dennoch Sicherheitsrisiken einführen
Fehlender systematischer Rahmen: Bestehende Forschung mangelt es an systematischer theoretischer Analyse der Beziehung zwischen unsicherem Code und undefiniertem Verhalten
Schwierigkeiten bei der Verifikation der Kapselungssolidität: Es fehlen praktische Methoden zur Verifikation der Solidität von Funktionen und Strukturen, die unsicheren Code enthalten
Etablierung eines Hauptsatzes: Formalisierte Beweise für die Beziehung zwischen undefiniertem Verhalten und unsicherem Code, Festlegung des Kernprinzips, dass "undefiniertes Verhalten nur aus unsicherem Code stammt und vollständig durch seine Sicherheitsbeschränkungen bestimmt wird"
Vorschlag von Soliditätsstandards: Festlegung von Soliditätsbeurteilungsstandards für sichere und unsichere Funktionen, Strukturen und Module
Entwicklung von Kapselungsrichtlinien: Ableitung von praktischen Kriterien und Folgerungen zur Implementierung solider Kapselung
Konstruktion eines Prüfrahmens: Vorschlag einer systematisierten Prüfmethode basierend auf dem Unsicherheitsausbreitungsgraph (UPG)
Die Kernaufgabe dieses Papiers ist die Etablierung eines theoretischen Rahmens zur Analyse der Sicherheit von unsicheren Teilen in Rust-Code, speziell:
Eingabe: Rust-Programme mit unsicherem Code
Ausgabe: Soliditätsbeurteilung und Kapselungsrichtlinien
Einschränkungen: Basierend auf dem Rust-Typensystem und Sicherheitsbeschränkungen
Hauptsatz (Theorem 1): Für ein wohlgetyptes Rust-Programm P tritt undefiniertes Verhalten nur auf, wenn P unsicheren Code enthält und seine zugehörigen Sicherheitsbeschränkungen verletzt:
P ⊢ UB ⇒ (P ∋ UC) ∧ (P ⊬ SC_UC)
Wobei UC unsicheren Code darstellt und SC_UC die Sicherheitsbeschränkungen des unsicheren Codes darstellt.
Soliditätsanforderungen für Struktur S = {C, F, M, d}:
Statische Methoden: Alle Konstruktoren und statischen Methoden müssen Funktionskapselfunktionskriterien erfüllen
Dynamische Methoden: Berücksichtigung der Auswirkungen destruktiver Methoden, um sicherzustellen, dass Sicherheitsbeschränkungen unter allen Kombinationen von Konstruktoren und Methoden erfüllt werden
Rust Team. Soundness (of code / a library). Rust Unsafe Code Guidelines.
Zihao Rao, et al. Annotating and Auditing the Safety Properties of Unsafe Rust. arXiv preprint arXiv:2504.21312, 2025.
Gesamtbewertung: Dieses Papier leistet wichtige theoretische Beiträge zur Sicherheitsanalyse von Rust-unsicherem Code und etabliert einen systematisierten Analyserahmen. Obwohl in experimenteller Verifikation und Werkzeugimplementierung noch Verbesserungen erforderlich sind, ist sein theoretischer Wert und sein praktisches Potenzial bemerkenswert. Diese Arbeit bietet eine solide theoretische Grundlage für Rust-Sicherheitsforschung und -praxis.