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
कोड सुरक्षा विश्लेषण के लिए एक ट्रेस-आधारित दृष्टिकोण
Rust एक मेमोरी-सुरक्षित प्रोग्रामिंग भाषा है जो अपरिभाषित व्यवहार को प्रतिबंधित करती है। इसकी सुरक्षा गारंटियों को समुदाय के व्यापक अनुभवजन्य अनुसंधान द्वारा सत्यापित किया गया है, जो इसकी उल्लेखनीय सफलता का कारण है। हालांकि, unsafe कोड Rust में एक महत्वपूर्ण समस्या बनी हुई है। यह पेपर Rust की सुरक्षा डिजाइन की समीक्षा करके और वास्तविक दुनिया की Rust परियोजनाओं का विश्लेषण करके, unsafe कोड और अपरिभाषित व्यवहार को समझने के लिए एक व्यवस्थित ढांचा स्थापित करता है, Rust कोड की सुदृढ़ता मानदंड को सारांशित करता है, और आगे सुदृढ़ एनकैप्सुलेशन को लागू करने के लिए व्यावहारिक मार्गदर्शन प्रदान करता है।
Rust सुरक्षा प्रतिश्रुति की सीमाएं: हालांकि Rust प्रतिश्रुति देता है कि safe कोड अपरिभाषित व्यवहार का कारण नहीं बनेगा, unsafe कोड अभी भी सुरक्षा जोखिम पेश कर सकता है
व्यवस्थित ढांचे की कमी: मौजूदा अनुसंधान में unsafe कोड और अपरिभाषित व्यवहार के संबंध का व्यवस्थित सैद्धांतिक विश्लेषण नहीं है
एनकैप्सुलेशन सुदृढ़ता सत्यापन कठिन: unsafe कोड युक्त फ़ंक्शन और संरचनाओं की सुदृढ़ता को सत्यापित करने के लिए व्यावहारिक तरीकों की कमी है
मुख्य प्रमेय स्थापित करना: अपरिभाषित व्यवहार और unsafe कोड के बीच संबंध को औपचारिक रूप से साबित किया, "अपरिभाषित व्यवहार केवल unsafe कोड से उत्पन्न होता है और पूरी तरह से इसकी सुरक्षा बाधाओं द्वारा निर्धारित होता है" के मूल सिद्धांत को स्थापित किया
सुदृढ़ता मानदंड प्रस्तावित करना: safe और unsafe फ़ंक्शन, संरचना, मॉड्यूल के लिए क्रमशः सुदृढ़ता निर्धारण मानदंड निर्धारित किए
एनकैप्सुलेशन मार्गदर्शन विकसित करना: सुदृढ़ एनकैप्सुलेशन को लागू करने के लिए व्यावहारिक मानदंड और निष्कर्ष निकाले
ऑडिट ढांचा निर्माण: असुरक्षित प्रसार ग्राफ (UPG) पर आधारित व्यवस्थित ऑडिट विधि प्रस्तावित की
मुख्य प्रमेय (प्रमेय 1): एक सुप्रकार Rust प्रोग्राम P के लिए, अपरिभाषित व्यवहार केवल तभी होता है जब P में unsafe कोड हो और इसकी संबंधित सुरक्षा बाधाओं का उल्लंघन करे:
P ⊢ UB ⇒ (P ∋ UC) ∧ (P ⊬ SC_UC)
जहां UC unsafe कोड को दर्शाता है, SC_UC unsafe कोड की सुरक्षा बाधाओं को दर्शाता है।
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.
समग्र मूल्यांकन: यह पेपर Rust unsafe कोड सुरक्षा विश्लेषण के क्षेत्र में महत्वपूर्ण सैद्धांतिक योगदान देता है, एक व्यवस्थित विश्लेषण ढांचा स्थापित करता है। हालांकि प्रयोगात्मक सत्यापन और उपकरण कार्यान्वयन के पहलुओं में सुधार की गुंजाइश है, लेकिन इसके सैद्धांतिक मूल्य और व्यावहारिक संभावनाओं की सराहना की जानी चाहिए। यह कार्य Rust सुरक्षा अनुसंधान और अभ्यास के लिए एक मजबूत सैद्धांतिक आधार प्रदान करता है।