# CET & Shadow Stack {{#include ../../banners/hacktricks-training.md}} ## Control Flow Enforcement Technology (CET) **CET** एक सुरक्षा विशेषता है जो हार्डवेयर स्तर पर लागू की गई है, जिसका उद्देश्य **Return-Oriented Programming (ROP)** और **Jump-Oriented Programming (JOP)** जैसे सामान्य नियंत्रण-प्रवाह हाइजैकिंग हमलों को रोकना है। इस प्रकार के हमले एक प्रोग्राम के निष्पादन प्रवाह को हेरफेर करते हैं ताकि वे दुर्भावनापूर्ण कोड को निष्पादित कर सकें या benign कोड के टुकड़ों को इस तरह से जोड़ सकें कि एक दुर्भावनापूर्ण क्रिया की जा सके। CET दो मुख्य विशेषताएँ प्रस्तुत करता है: **Indirect Branch Tracking (IBT)** और **Shadow Stack**। - **IBT** यह सुनिश्चित करता है कि अप्रत्यक्ष कूद और कॉल वैध लक्ष्यों पर किए जाएं, जिन्हें अप्रत्यक्ष शाखाओं के लिए कानूनी गंतव्यों के रूप में स्पष्ट रूप से चिह्नित किया गया है। यह एक नए निर्देश सेट के उपयोग के माध्यम से प्राप्त किया जाता है जो वैध लक्ष्यों को चिह्नित करता है, इस प्रकार हमलावरों को नियंत्रण प्रवाह को मनमाने स्थानों पर मोड़ने से रोकता है। - **Shadow Stack** एक तंत्र है जो लौटने के पते के लिए अखंडता प्रदान करता है। यह नियमित कॉल स्टैक से अलग एक सुरक्षित, छिपी हुई प्रति रखता है। जब एक फ़ंक्शन लौटता है, तो लौटने के पते को शैडो स्टैक के खिलाफ मान्य किया जाता है, जिससे हमलावरों को स्टैक पर लौटने के पते को ओवरराइट करने से रोका जा सके। ## Shadow Stack **shadow stack** एक **विशेष स्टैक है जिसका उपयोग केवल लौटने के पते को संग्रहीत करने के लिए किया जाता है**। यह नियमित स्टैक के साथ काम करता है लेकिन सामान्य प्रोग्राम निष्पादन से सुरक्षित और छिपा होता है, जिससे हमलावरों के लिए छेड़छाड़ करना कठिन हो जाता है। शैडो स्टैक का प्राथमिक लक्ष्य यह सुनिश्चित करना है कि पारंपरिक स्टैक पर लौटने के पते में कोई भी संशोधन उपयोग किए जाने से पहले पता लगाया जाए, प्रभावी रूप से ROP हमलों को कम करना। ## How CET and Shadow Stack Prevent Attacks **ROP और JOP हमले** एक एप्लिकेशन के नियंत्रण प्रवाह को हाइजैक करने की क्षमता पर निर्भर करते हैं, जो उन्हें स्टैक पर पॉइंटर्स या लौटने के पते को ओवरराइट करने की अनुमति देने वाली कमजोरियों का लाभ उठाते हैं। मौजूदा कोड गैजेट्स या लौटने-उन्मुख प्रोग्रामिंग गैजेट्स के अनुक्रमों की ओर प्रवाह को निर्देशित करके, हमलावर मनमाने कोड को निष्पादित कर सकते हैं। - **CET का IBT** फीचर इन हमलों को काफी कठिन बना देता है यह सुनिश्चित करके कि अप्रत्यक्ष शाखाएँ केवल उन पते पर कूद सकती हैं जिन्हें स्पष्ट रूप से वैध लक्ष्यों के रूप में चिह्नित किया गया है। इससे हमलावरों के लिए बाइनरी में फैले मनमाने गैजेट्स को निष्पादित करना असंभव हो जाता है। - दूसरी ओर, **shadow stack** यह सुनिश्चित करता है कि भले ही एक हमलावर सामान्य स्टैक पर लौटने के पते को ओवरराइट कर सके, **असमानता का पता लगाया जाएगा** जब फ़ंक्शन से लौटने पर दूषित पते की तुलना शैडो स्टैक में संग्रहीत सुरक्षित प्रति से की जाएगी। यदि पते मेल नहीं खाते हैं, तो प्रोग्राम समाप्त हो सकता है या अन्य सुरक्षा उपाय कर सकता है, जिससे हमले को सफल होने से रोका जा सके। {{#include ../../banners/hacktricks-training.md}}