
SMACK सत्यापनकर्ता पर आधारित स्वचालित तर्क उपकरण जो विश्वसनीय सीमा उल्लंघनों से SGX एन्क्लेव बग्स का पता लगाता है, जिसमें अमान्य पॉइंटर हैंडलिंग, मेमोरी डीलोकेशन त्रुटियाँ और TOCTOU बग्स शामिल हैं।
Intel SGX हार्डवेयर-आधारित मेमोरी एन्क्रिप्शन के साथ एक एन्क्लेव के अंदर पृथक एप्लिकेशन लॉजिक और संवेदनशील डेटा की सुरक्षा करता है। इस तरह के हार्डवेयर-आधारित सुरक्षा तंत्र का उपयोग करने के लिए मेमोरी उपयोग पर एक सख्त प्रोग्रामिंग मॉडल की आवश्यकता होती है,एन्क्लेव सीमा के अंदर और बाहर जटिल API के साथ। एन्क्लेव डेवलपर्स को एन्क्लेव सुरक्षा सुनिश्चित करने के लिए सावधानीपूर्वक प्रोग्रामिंग प्रथाओं को लागू करना आवश्यक है, विशेष रूप से एन्क्लेव की विश्वसनीय सीमा के पार बहने वाले डेटा से निपटने के दौरान। विश्वसनीय सीमा उल्लंघन आगे मेमोरी भ्रष्टाचार का कारण बन सकते हैं और हमलावरों द्वारा संरक्षित डेटा को पुनः प्राप्त करने और हेरफेर करने के लिए शोषण योग्य हैं। वर्तमान में, कोई भी सार्वजनिक रूप से उपलब्ध उपकरण वास्तविक दुनिया के एन्क्लेव के लिए ऐसे मुद्दों का प्रभावी ढंग से पता नहीं लगा सकता है।
SGXRay एक स्वचालित तर्क उपकरण है जो SMACK सत्यापनकर्ता पर आधारित है जो विश्वसनीय सीमाओं के उल्लंघन से उत्पन्न SGX एन्क्लेव बग का स्वचालित रूप से पता लगाता है। यह दिए गए एन्क्लेव कोड को पुनः संकलित करता है और उपयोगकर्ता द्वारा निर्दिष्ट एन्क्लेव फ़ंक्शन प्रविष्टि से विश्लेषण शुरू करता है। विश्लेषण के बाद, यह या तो SGX सॉफ़्टवेयर स्टैक के अंदर एक अमान्य पॉइंटर हैंडलिंग पाता है जैसे कि एन्क्लेव के अंदर अनियंत्रित पॉइंटर को डीरेफ़रेंस करना, अमान्य मेमोरी डीलोकेशन, और TOCTOU बग, या उपयोगकर्ता द्वारा निर्दिष्ट लूप और रिकर्सन बाउंड तक ऐसे बग की अनुपस्थिति साबित करता है।
वर्तमान में, SGXRay SGX अनुप्रयोग दो SGX SDK पर बनाए गए हैं: Intel SGX SDK और openenclave SDK। उपयोगकर्ता अधिक गहन विश्लेषण के लिए SDK कोड में शामिल हो सकते हैं।
त्वरित शुरुआत के लिए, कृपया डेमो उदाहरणों में से एक पर SGXRay का उपयोग करने पर चरण-दर-चरण ट्यूटोरियल का पालन करें यहाँ।
निम्नलिखित आंकड़ा SGXRay के कार्यप्रवाह को दर्शाता है।
SGXRay चलाना एक दो-चरणीय प्रक्रिया है। पहला कदम एप्लिकेशन के लिए LLVM IR फ़ाइल प्राप्त करना है। दूसरा कदम सत्यापन के लिए SGXRay CLI को लागू करना है।
पहले चरण के लिए, हम प्रत्येक SDK के लिए क्रमशः दो Docker इमेज प्रदान करते हैं।
docker pull baiduxlab/sgx-ray-frontend-intel
docker pull baiduxlab/sgx-ray-frontend-oe
पहला चरण चलाने के विस्तृत निर्देश यहाँ पाए जा सकते हैं।
दूसरे चरण के लिए, हम एक Docker इमेज भी प्रदान करते हैं।
docker pull baiduxlab/sgx-ray-distro:latest
दूसरा चरण चलाने के विस्तृत निर्देश यहाँ पाए जा सकते हैं।
हम एक Dockerfile प्रदान करते हैं जो सत्यापन चरण के लिए इमेज बनाता है।
git clone https://github.com/baiduxlab/sgxray.git && cd sgxray
docker build . -t sgx-ray-distro-local --build-arg hostuid=$UID -f Dockerfiles/Dockerfile-CLI
सफल निर्माण से sgx-ray-distro-local नामक एक इमेज तैयार होनी चाहिए जिसमें होस्ट खाते के समान उपयोगकर्ता आईडी वाला एक उपयोगकर्ता user हो।
SGXRay के विस्तृत दस्तावेज़ीकरण निम्नानुसार पाए जा सकते हैं।