फॉल्ट इंजेक्शन
कंप्यूटर विज्ञान में, फॉल्ट इंजेक्शन यह समझने के लिए एक परीक्षण तकनीक है कि कंप्यूटिंग प्रणालियाँ कैसे व्यवहार करती है जब असामान्य तरीके से बल दिया जाता है। यह भौतिक या सॉफ़्टवेयर-आधारित साधनों का उपयोग करके या संकर दृष्टिकोण का उपयोग करके प्राप्त किया जा सकता है।[1] व्यापक रूप से अध्ययन किए गए भौतिक फॉल्ट इंजेक्शन में उच्च वोल्टेज, अत्यधिक तापमान और इलेक्ट्रॉनिक घटकों, जैसे कंप्यूटर मेमोरी और केंद्रीय प्रसंस्करण इकाइयों पर विद्युत चुम्बकीय स्पंदों का अनुप्रयोग सम्मिलित है।[2][3] घटकों को उनकी इच्छित परिचालन सीमाओं से परे स्थितियों में उजागर करके, कंप्यूटिंग प्रणाली को गलत निष्पादन निर्देशों और महत्वपूर्ण डेटा को दूषित करने के लिए बाध्य किया जा सकता है।
सॉफ़्टवेयर परीक्षण में, फॉल्ट इंजेक्शन परीक्षण के क्षेत्र में सुधार के लिए एक तकनीक है, जो विशेष रूप से त्रुटि प्रबंधन कोड पथों में कोड पथों का परीक्षण करने के लिए फॉल्टों का परिचय देती है, जो कि संभवतया ही कभी पालन किया जा सकता है। यह प्रायः तनाव परीक्षण के साथ प्रयोग किया जाता है और व्यापक रूप से सुदृढ़ सॉफ्टवेयर विकसित करने का एक महत्वपूर्ण हिस्सा माना जाता है।[4] दृढ़ता परीक्षण[5] (सिंटैक्स परीक्षण, अस्पष्टता या अस्पष्टता परीक्षण के रूप में भी जाना जाता है) एक प्रकार का फॉल्ट इंजेक्शन है जो प्रायः संचार इंटरफेस जैसे प्रोटोकॉल, कमांड लाइन पैरामीटर या एपीआई (APIs) में कमजोरियों के परीक्षण के लिए उपयोग किया जाता है।
स्पष्ट विफलता के माध्यम से दोष का प्रसार अच्छी तरह से परिभाषित चक्र का अनुसरण करता है। निष्पादित होने पर, फॉल्ट एक त्रुटि का कारण बन सकता है, जो कि प्रणाली सीमा के भीतर अमान्य स्थिति है। त्रुटि प्रणाली सीमा के भीतर और अधिक त्रुटियां उत्पन्न कर सकती है, इसलिए प्रत्येक नई त्रुटि फॉल्ट के रूप में कार्य करती है, या यह प्रणाली सीमा तक फैल सकती है और देखने योग्य हो सकती है। जब प्रणाली सीमा पर त्रुटि स्थितियाँ देखी जाती है तो उन्हें विफलता कहा जाता है। इस तंत्र को फॉल्ट-त्रुटि-विफलता चक्र कहा जाता है[6] और यह निर्भरता में एक महत्वपूर्ण तंत्र है।
इतिहास
फॉल्ट इंजेक्शन की तकनीक 1970 के दशक की है[7] जब इसका उपयोग पहली बार हार्डवेयर स्तर पर दोषों को प्रेरित करने के लिए किया गया था। इस प्रकार के फॉल्ट इंजेक्शन को हार्डवेयर कार्यान्वित फॉल्ट इंजेक्शन (HWIFI) कहा जाता है और प्रणाली के भीतर हार्डवेयर विफलताओं का अनुकरण करने का प्रयास करता है। हार्डवेयर फॉल्ट में पहले प्रयोगों में परिपथ बोर्डों पर संयोजन को छोटा करने और प्रणाली (त्रुटियों को दूर करना) पर प्रभाव को देखने के अलावा कुछ भी सम्मिलित नहीं था। इसका उपयोग मुख्य रूप से हार्डवेयर प्रणाली की निर्भरता के परीक्षण के रूप में किया गया था। बाद में इस तकनीक का विस्तार करने के लिए विशेष हार्डवेयर विकसित किया गया, जैसे भारी विकिरण वाले परिपथ बोर्ड के विशिष्ट क्षेत्रों पर बमबारी करने वाले उपकरण। जल्द ही यह पाया गया कि सॉफ्टवेयर तकनीकों से दोष उत्पन्न हो सकते हैं और इस तकनीक के पहलू सॉफ्टवेयर प्रणाली का आकलन करने के लिए उपयोगी हो सकते हैं। सामूहिक रूप से इन तकनीकों को सॉफ्टवेयर इम्प्लीमेंटेड फॉल्ट इंजेक्शन (SWIFI) के रूप में जाना जाता है।
मॉडल कार्यान्वित फॉल्ट इंजेक्शन
साइबर-भौतिक प्रणालियों की बढ़ती जटिलता के कारण, पारंपरिक फॉल्ट इंजेक्शन विधियों को कार्यान्वित करना अब कुशल नहीं है, इसलिए परीक्षक मॉडल स्तर पर फॉल्ट इंजेक्शन का उपयोग करने की कोशिश कर रहे है।
सॉफ्टवेयर कार्यान्वित फॉल्ट इंजेक्शन
सॉफ़्टवेयर फॉल्ट इंजेक्शन के लिए एसडब्ल्यूआईएफआई (SWIFI) तकनीकों को दो प्रकारों में वर्गीकृत किया जा सकता है- संकलन-समय इंजेक्शन और कार्यावधि इंजेक्शन।
संकलन-समय इंजेक्शन एक इंजेक्शन तकनीक है जहां प्रणाली में अनुरूप फॉल्टों को अन्तःक्षेप करने के लिए स्रोत कोड को संशोधित किया जाता है। विधि को उत्परिवर्तन परीक्षण कहा जाता है जो कोड की मौजूदा पंक्तियों को बदल देता है ताकि उनमें फॉल्ट हों। इस तकनीक का एक सरल उदाहरण a = a + 1
को a = a – 1
में परिवर्तित करना हो सकता है
कोड उत्परिवर्तन उन फॉल्टों को उत्पन्न करता है जो प्रोग्रामरों द्वारा अनजाने में जोड़े गए फॉल्टों के समान हैं।
कोड उत्परिवर्तन का परिशोधन कोड सम्मिलन फॉल्ट इंजेक्शन है जो मौजूदा कोड को संशोधित करने के स्थान पर कोड जोड़ता है। यह प्रायः अस्तव्यस्तता फलनों के उपयोग के माध्यम से किया जाता है जो सरल फलन होते हैं जो उपस्थित मान लेते हैं और इसे कुछ तर्क के माध्यम से दूसरे मान में अस्तव्यस्त करते हैं, उदाहरण के लिए
int pFunc(int value) { return value + 20; } int main(int argc, char * argv[]) { int a = pFunc(aFunction(atoi(argv[1]))); if (a > 20) { /* do something */ } else { /* do something else */ } }
इस स्थिति में, pFunc अस्तव्यस्तता फलन है और इसे फलन के पुनरावृत्ति मान पर कार्यान्वित किया जाता है जिसे प्रणाली में फॉल्ट प्रारम्भ करने के लिए कहा जाता है।
कार्यावधि इंजेक्शन तकनीक चल रहे सॉफ़्टवेयर प्रणाली में फॉल्ट को अंतःक्षेप करने के लिए सॉफ़्टवेयर प्रेरक का उपयोग करती है। फॉल्टों को कई भौतिक विधियों के माध्यम से अंतःक्षेप किया जा सकता है और प्रेरकों को कई तरीकों से कार्यान्वित किया जा सकता है, जैसे- समय आधारित प्रेरक (जब टाइमर एक निर्दिष्ट समय तक पहुंचता है तो एक बाधा उत्पन्न होती है और टाइमर से जुड़ा व्यवधान प्रबंधकर्ता फॉल्ट को अंतःक्षेप कर सकता है।) व्यवधान आधारित प्रेरक (हार्डवेयर अपवाद और सॉफ्टवेयर जाल क्रियाविधियों का उपयोग प्रणाली कोड में किसी विशिष्ट स्थान पर या प्रणाली के भीतर किसी विशेष घटना पर, उदाहरण के लिए, किसी विशिष्ट मेमोरी स्थान तक पहुंच) उत्पन्न करने के लिए किया जाता है।
कार्यावधि इंजेक्शन तकनीक प्रेरक के माध्यम से प्रणाली में फॉल्ट डालने के लिए कई विभिन्न तकनीकों का उपयोग कर सकती है।
- मेमोरी स्थान का अवमिश्रण- इस तकनीक में रैम, प्रोसेसर रजिस्टर और आई/ओ (I/O) मानचित्र को अवमिश्रण करना सम्मिलित है।
- सिस्कल व्याख्या तकनीक- यह ऑपरेटिंग सिस्टम कर्नेल इंटरफेस से प्रणाली सॉफ्टवेयर को निष्पादित करने के लिए फॉल्ट प्रसार से संबंधित है। यह उपयोगकर्ता-स्तर के सॉफ़्टवेयर द्वारा किए गए ऑपरेटिंग सिस्टम कॉल को अवरोधन करके और उनमें फॉल्ट अंतःक्षेप करके किया जाता है।
- नेटवर्क स्तर फॉल्ट इंजेक्शन- यह तकनीक नेटवर्क इंटरफेस पर नेटवर्क पैकेट के अवमिश्रण, हानि या पुनर्व्यवस्था से संबंधित है।
ये तकनीकें प्रायः कंप्यूटर प्रोसेसर आर्किटेक्चर द्वारा प्रदान की गई दोषमार्जन (डिबगिंग) सुविधाओं के आसपास आधारित होती हैं।
प्रोटोकॉल सॉफ़्टवेयर फॉल्ट इंजेक्शन
जटिल सॉफ्टवेयर प्रणाली, विशेष रूप से खुले मानकों के आधार पर बहु-विक्रेता वितरित प्रणाली, अवस्थापूर्ण, संरचित विनिमयों के माध्यम से डेटा का आदान-प्रदान करने के लिए इनपुट/आउटपुट संचालन करते हैं, जिन्हें "प्रोटोकॉल" कहा जाता है। एक प्रकार का फॉल्ट इंजेक्शन जो विशेष रूप से प्रोटोकॉल कार्यान्वयन (एक प्रकार का सॉफ़्टवेयर कोड जिसमें असामान्य विशेषता होती है कि वह अपने इनपुट का पूर्वानुमान या नियंत्रण नहीं कर सकता) का परीक्षण करने के लिए उपयोगी होता है, वह अस्पष्टता है। अस्पष्टता ब्लैक-बॉक्स परीक्षण का विशेष रूप से उपयोगी रूप है क्योंकि सॉफ़्टवेयर प्रणाली को प्रस्तुत किए गए विभिन्न अमान्य इनपुट प्रणाली के अंदर चल रहे कोड के विवरण पर निर्भर नहीं होते हैं, और ज्ञान के आधार पर नहीं बनाए जाते हैं।
हार्डवेयर कार्यान्वित फॉल्ट इंजेक्शन
इस तकनीक को हार्डवेयर प्रोटोटाइप पर कार्यान्वित किया गया था। परीक्षक परिपथ में कुछ भागों के वोल्टेज को बदलकर, तापमान को बढ़ाकर या घटाकर, उच्च ऊर्जा विकिरण द्वारा बोर्ड पर बमबारी आदि करके फॉल्ट को अंतःक्षेप करते हैं।
फॉल्ट इंजेक्शन की विशेषताएं
फॉल्टों के तीन मुख्य मापदंड होते हैं।[8]
- प्रकार- किस प्रकार का फॉल्ट इंजेक्ट किया जाना चाहिए? उदाहरण के लिए अटके हुए मान, विलंब, कुछ फलनों की अनदेखी, कुछ मापदंडों / चर, यादृच्छिक फॉल्ट, पूर्वाग्रह फॉल्ट, ध्वनि आदि को अनदेखा करना। प्रत्येक दोष का आयाम भी महत्वपूर्ण है।
- समय- कब सक्रिय किया जाना चाहिए? उदाहरण के लिए फॉल्ट का सक्रियण समय या फॉल्ट की सक्रियता की स्थिति।
- स्थान- प्रणाली में कहाँ होना चाहिए? उदाहरण के लिए प्रणाली के बीच लिंक/संपर्क में फॉल्ट, प्रणाली/उपप्रणालियाँ/फलन आदि के भीतर फॉल्ट।
ये मापदंड फॉल्ट स्थान क्षेत्र का निर्माण करते हैं। प्रणाली की जटिलता बढ़ने से फॉल्ट स्थान दायरे में तेजी से वृद्धि होगी। इसलिए, पारंपरिक फॉल्ट इंजेक्शन विधि आधुनिक साइबर-भौतिक प्रणालियों में उपयोग के लिए कार्यान्वित नहीं होगी, क्योंकि वे इतने धीमे होंगे, और उन्हें बहुत कम संख्या में फॉल्ट (कम फॉल्ट व्याप्ति) मिलेंगे। इसलिए, परीक्षकों को महत्वपूर्ण फॉल्टों का चयन करने के लिए एक कुशल एल्गोरिदम की आवश्यकता होती है जो प्रणाली व्यवहार पर अधिक प्रभाव डालते हैं। इस प्रकार, मुख्य शोध प्रश्न यह है कि फॉल्ट स्थान क्षेत्र में महत्वपूर्ण फॉल्टों का पता कैसे लगाया जाए, जिनका प्रणाली व्यवहार पर विनाशकारी प्रभाव पड़ता है। यहां कुछ तरीके दिए गए हैं जो कम अनुकार समय में उच्च दोष व्याप्ति तक पहुंचने के लिए फॉल्ट स्थान का कुशलतापूर्वक पता लगाने के लिए फ़ॉल्ट इंजेक्शन की सहायता कर सकते हैं।
- संवेदनशीलता विश्लेषण-[9] इस पद्धति में, संवेदनशीलता विश्लेषण का उपयोग उन सबसे महत्वपूर्ण संकेतों की पहचान करने के लिए किया गया है जिनका प्रणालाी के विनिर्देशन पर अधिक प्रभाव पड़ता है। उन महत्वपूर्ण संकेतों या मापदंडों की पहचान करके, फॉल्ट इंजेक्शन उपकरण प्रणाली में सभी संकेतों पर ध्यान केंद्रित करने के स्थान पर उन प्रभावी संकेतों पर ध्यान केंद्रित करेगा।
- सुदृढ़ीकरण अधिगम-[10] इस पद्धति में, सुदृढ़ीकरण अधिगमग एल्गोरिद्म का उपयोग फॉल्ट स्थान का कुशलतापूर्वक पता लगाने और गंभीर फॉल्ट खोजने के लिए किया गया है।
फॉल्ट इंजेक्शन उपकरण
यद्यपि इस प्रकार के दोषों को हाथ से अंतःक्षेप किया जा सकता है, एक अनपेक्षित दोष को पेश करने की संभावना अधिक होती है, इसलिए प्रोग्राम को स्वचालित रूप से पदव्याख्या करने और फाल्टों को सम्मिलित करने के लिए उपकरण उपस्थित हैं।
अनुसंधान उपकरण
कई एसडब्ल्यूआईएफआई (SWIFI) उपकरण विकसित किए गए हैं और इन उपकरणों का चयन यहां दिया गया है। छह प्रायः उपयोग किए जाने वाले फाल्ट इंजेक्शन उपकरण हैं फेरारी, एफटीएपीई (FTAPI), डीओसीटीओआर (DOCTOR), ऑर्केस्ट्रा, एक्ससेप्शन और ग्रिड-फिट।
- एमओडीआईएफआई (MODIFI) (मॉडल-कार्यान्वित फॉल्ट इंजेक्शन) सिमुलिंक व्यवहार मॉडल की दृढ़ता के मूल्यांकन के लिए फॉल्ट इंजेक्शन उपकरण है। यह डोमेन-विशिष्ट फॉल्ट मॉडल के कार्यान्वयन के लिए एक्सएमएल (XML) में फॉल्ट मॉडलिंग का समर्थन करता है।[11]
- फरारी (फॉल्ट और त्रुटि या स्वचालित वास्तविक समय इंजेक्शन) सॉफ्टवेयर जाल पर आधारित है जो प्रणाली में त्रुटि अंतःक्षेप करता है। जाल या तो विशिष्ट मेमोरी स्थान या मध्यांतर पर कॉल करके सक्रिय होते हैं। जब किसी जाल को कॉल किया जाता है तो प्रबंधकर्ता प्रणाली में फॉल्ट अंतःक्षेप करता है। फॉल्ट क्षणिक या स्थायी हो सकते हैं। फेरारी के साथ किए गए शोध से पता चलता है कि त्रुटि का पता लगाना फॉल्ट के प्रकार पर निर्भर करता है और जहां फॉल्ट अन्तर्निविष्ट किया जाता है।[12]
- एफटीएपीई (FTAPE) (फॉल्ट सहिष्णुता और प्रदर्शन मूल्यांकनकर्ता) न केवल मेमोरी और रजिस्टरों में, बल्कि डिस्क अभिगम में भी फॉल्ट को अंतःक्षेप कर सकता है। यह प्रणाली में एक विशेष डिस्क ड्राइवर डालने से प्राप्त किया जाता है जो डिस्क इकाई से भेजे और प्राप्त किए गए डेटा में फॉल्ट अंतःक्षेप कर सकता है। एफटीएपीई (FTAPE) में सिंथेटिक भार इकाई भी है जो दृढ़ता परीक्षण उद्देश्यों के लिए भार की विशिष्ट मात्रा का अनुकरण कर सकती है।[13]
- डीओसीटीओआर (DOCTOR) (पर्यावरण में एकीकृत सॉफ्टवेयर फॉल्ट इंजेक्शन) मेमोरी के इंजेक्शन की अनुमति देता है और फॉल्टों को पंजीकृत करता है, साथ ही नेटवर्क संचार फॉल्टों को भी दर्ज करता है। यह मध्यांतर, जाल और कोड संशोधन के संयोजन का उपयोग करता है। मध्यांतर प्रेरक क्षणिक मेमोरी फॉल्टों को अंतःक्षेप करता है और जाल अंतःक्षेप अनुकरणीय हार्डवेयर विफलताओं, जैसे रजिस्टर अवमिश्रण।[14]
- आर्केस्ट्रा एक स्क्रिप्ट-चालित फॉल्ट इंजेक्टर है जो नेटवर्क स्तर फॉल्ट इंजेक्शन के निकट आधारित है। इसका प्राथमिक उपयोग वितरित प्रोटोकॉल के दोष-सहिष्णुता और समय की विशेषताओं का मूल्यांकन और सत्यापन है। आर्केस्ट्रा को प्रारम्भ में मैक ऑपरेटिंग सिस्टम के लिए विकसित किया गया था और फॉल्ट इंजेक्टर द्वारा प्रारम्भ की गई विलंबता की क्षतिपूर्ति के लिए इस प्लेटफॉर्म की कुछ विशेषताओं का उपयोग करता है। इसे अन्य ऑपरेटिंग सिस्टम में भी सफलतापूर्वक पोर्ट किया गया है।[15]
- एक्ससेप्शन को कई आधुनिक प्रोसेसरों पर उपलब्ध उन्नत दोषमार्जन सुविधाओं का लाभ उठाने के लिए डिज़ाइन किया गया है। यह लिखा गया है कि प्रणाली स्रोत में कोई संशोधन की आवश्यकता नहीं है और न ही सॉफ्टवेयर जाल को सम्मिलित करने की आवश्यकता है, क्योंकि प्रोसेसर की अपवाद से प्रबंधन की क्षमता फॉल्ट इंजेक्शन को प्रेरित करती है। ये प्रेरक विशिष्ट मेमोरी स्थानों तक अभिगम पर आधारित होते हैं। इस तरह का अभिगम या तो डेटा या निर्देशों को प्राप्त करने के लिए हो सकता है। इसलिए परीक्षण चालन को सटीक रूप से पुन: उत्पन्न करना संभव है क्योंकि प्रेरक को मध्यांतर के स्थान पर विशिष्ट घटनाओं से जोड़ा जा सकता है।[7]
- ग्रिड-फिट (ग्रिड - फॉल्ट इंजेक्शन टेक्नोलॉजी)[16] फॉल्ट इंजेक्शन द्वारा ग्रिड सेवाओं का आकलन करने के लिए निर्भरता मूल्यांकन पद्धति और उपकरण है। ग्रिड-फिट पहले के फॉल्ट इंजेक्टर डब्ल्यूएस-फिट (WS-FIT) से लिया गया है,[17] जिसे अपाचे एक्सिस ट्रांसपोर्ट का उपयोग करके कार्यान्वित जावा वेब सेवाओं की ओर लक्षित किया गया था। ग्रिड-फिट एक नए फॉल्ट इंजेक्शन क्रियाविधि का उपयोग करता है जो नेटवर्क-स्तर फॉल्ट इंजेक्शन को कोड अंतर्वेशन फॉल्ट इंजेक्शन के समान नियंत्रण का स्तर देने के लिए उपयोग करने की अनुमति देता है, जबकि कम आक्रामक होता है।[18]
- एलएफआई (LFI) (लाइब्रेरी-स्तर फॉल्ट इंजेक्टर)[19] स्वचालित परीक्षण उपकरण अनुगामी है, जिसका उपयोग नियंत्रित परीक्षण परिवेश में अनुकरण करने के लिए किया जाता है, असाधारण स्थितियाँ जिन्हें प्रोग्राम को कार्यावधि पर संभालने की आवश्यकता होती है, लेकिन केवल इनपुट परीक्षण के माध्यम से जांचना आसान नहीं होता है। एलएफआई (LFI) स्वचालित रूप से साझा लाइब्रेरियों द्वारा अनावृत की गई त्रुटियों की पहचान करता है, प्रोग्राम बाइनरी में संभावित त्रुटि पुनर्प्राप्ति कोड पाता है और साझा लाइब्रेरियों और अनुप्रयोगों के बीच सीमा पर वांछित दोषों को अंतःक्षेप करता है।
- एफआईब्लॉक (FIBlock) (फॉल्ट इंजेक्शन ब्लॉक),[20] मॉडल-आधारित फॉल्ट इंजेक्शन विधि है जिसे अत्यधिक अनुकूलन योग्य सिमुलिंक ब्लॉक के रूप में कार्यान्वित किया जाता है। यह एमएटीएलएबी (MATLAB) सिमुलिंक मॉडल में इंजेक्शन का समर्थन करता है जो साइबर-भौतिक प्रणालियों जैसे सेंसर, कंप्यूटिंग हार्डवेयर और नेटवर्क के आवश्यक विषम घटकों के विशिष्ट फॉल्ट हैं। अतिरिक्त प्रेरक इनपुट और ब्लॉक के आउटपुट सशर्त फॉल्टों के मॉडलिंग को सक्षम करते हैं। इसके अलावा, प्रेरक संकेत से जुड़े दो या अधिक एफआईब्लॉक (FIBlocks) तथाकथित श्रृंखलित त्रुटियों को मॉडल कर सकते हैं।
वाणिज्यिक उपकरण
- बियॉन्ड सिक्योरिटी बीस्टॉर्म (beSTORM)[21] एक वाणिज्यिक ब्लैक बॉक्स सॉफ्टवेयर सुरक्षा विश्लेषण उपकरण है। इसका उपयोग प्रायः मूल उपकरण निर्माताओं द्वारा विकास के दौरान किया जाता है, लेकिन कार्यान्वयन से पहले उत्पादों के परीक्षण के लिए भी इसका उपयोग किया जाता है, विशेष रूप से एयरोस्पेस, बैंकिंग और रक्षा में। बीस्टॉर्म (beSTORM) की परीक्षण प्रक्रिया सबसे संभावित आक्रमण परिदृश्यों के साथ प्रारम्भ होती है, फिर संपूर्ण पीढ़ी आधारित अस्पष्टता का सहारा लेती है। बीस्टॉर्म (beSTORM) उत्परिवर्तन-आधारित आक्रमणों सहित सामान्य प्रोटोकॉल और 'स्वतः सीखना' नए या स्वामित्व प्रोटोकॉल के लिए मॉड्यूल प्रदान करता है। प्रमुखताएँ- बाइनरी और शाब्दिक विश्लेषण, कस्टम प्रोटोकॉल परीक्षण, दोषमार्जन और स्टैक अनुरेखण, विकास भाषा स्वतंत्र, सीवीई (CVE) अनुवर्ती।
- एग्जॉस्टीएफ (ExhaustiF) सॉफ्टवेयर-गहन प्रणालियों की विश्वसनीयता में सुधार के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) पर आधारित ग्रे बॉक्स परीक्षण के लिए उपयोग किया जाने वाला एक व्यावसायिक सॉफ्टवेयर उपकरण है। उपकरण का उपयोग किसी भी सॉफ़्टवेयर विकास जीवनचक्र के प्रणाली एकीकरण और प्रणाली परीक्षण चरणों के दौरान किया जा सकता है, साथ ही साथ अन्य परीक्षण उपकरणों का पूरक भी हो सकता है। एग्जॉस्टीएफ (ExhaustiF) सॉफ्टवेयर और हार्डवेयर दोनों में दोषों को अंतःक्षेप करने में सक्षम है। सॉफ़्टवेयर में अनुकारित फॉल्टों को अंतःक्षेप करते समय, एग्जॉस्टीएफ (ExhaustiF) निम्नलिखित प्रकार के फॉल्ट प्रदान करता है- परिवर्तनीय अवमिश्रण और प्रक्रिया अवमिश्रण। हार्डवेयर फॉल्ट इंजेक्शन के लिए सूची में मेमोरी (I/O, RAM) और सीपीयू (CPU) (पूर्णांक इकाई, अस्थिर इकाई) में फॉल्ट सम्मिलित हैं। आरटीईएमएस/ईआरसी32 (RTEMS/ERC32), आरटीईएमएस/पेंटियम (RTEMS/Pentium), लिनक्स/पेंटियम और एमएस (MS)-विंडोज/पेंटियम के लिए अलग-अलग संस्करण उपलब्ध हैं।[22]
- होलोडेक[23] सिक्योरिटी इनोवेशन द्वारा विकसित एक परीक्षण उपकरण है जो विंडोज अनुप्रयोगों और सेवाओं के लिए वास्तविक दुनिया के अनुप्रयोग और प्रणाली त्रुटियों का अनुकरण करने के लिए फॉल्ट इंजेक्शन का उपयोग करता है। होलोडेक के ग्राहकों में माइक्रोसॉफ्ट, सिमेंटेक, ईएमसी (EMC) और एडोब सहित कई प्रमुख व्यावसायिक सॉफ्टवेयर विकास कंपनियां सम्मिलित हैं। यह नियंत्रित, दोहराने योग्य वातावरण प्रदान करता है जिसमें भंगुरता और सुरक्षा परीक्षण के लिए त्रुटि-प्रबंधन कोड और एप्लिकेशन अटैक सतहों का विश्लेषण और दोषमार्जन किया जाता है। यह फ़ाइल और नेटवर्क अस्पष्टता फॉल्टों के साथ-साथ अन्य संसाधनों, प्रणाली और कस्टम-परिभाषित फॉल्टों की एक विस्तृत श्रृंखला का अनुकरण करता है। यह कोड का विश्लेषण करता है और परीक्षण योजनाओं का अनुग्रह करता है और फलन कॉल लॉगिंग, एपीआई (API) अवरोधन, तनाव परीक्षण, कोड व्याप्ति विश्लेषण और कई अन्य एप्लिकेशन सुरक्षा आश्वासन कार्य भी करता है।
- प्रूफ़डॉक के कैओस इंजीनियरिंग प्लेटफ़ॉर्म का फोकस माइक्रोसॉफ्ट एज्यूर क्लाउड प्लेटफॉर्म पर है। यह अवसंरचना स्तर, प्लेटफॉर्म स्तर और एप्लिकेशन स्तर पर विफलताओं को अंतःक्षेप करता है।
- ग्रेमलिन एक "सेवा के रूप में विफलता" प्लेटफॉर्म है जो कंपनियों को अव्यवस्था अभियांत्रिकी के अभ्यास के माध्यम से अधिक प्रत्यास्थ प्रणाली बनाने में सहायता करता है। ग्रेमलिन अज्ञात फॉल्टों को सक्रिय रूप से पहचानने और ठीक करने के लिए प्रणाली में विफलता को सुरक्षित रूप से अंतःक्षेप करके तीन श्रेणियों संसाधन, नेटवर्क और अवस्था में सबसे सामान्य विफलताओं को फिर से बनाता है।
- कोडेनोमिकॉन डिफेंसिक्स[24] एक ब्लैक-बॉक्स परीक्षण स्वचालन फ्रेमवर्क है जो नेटवर्क प्रोटोकॉल, एपीआई (API) इंटरफेस, फाइलों और एक्सएमएल (XML) संरचनाओं सहित 150 से अधिक विभिन्न इंटरफेस में फॉल्ट इंजेक्शन करता है। सॉफ्टवेयर फॉल्ट इंजेक्शन के क्षेत्र में औलू विश्वविद्यालय में पांच साल के शोध के बाद वाणिज्यिक उत्पाद 2001 में लॉन्च किया गया था। उपयोग किए गए अस्पष्टता सिद्धांतों की व्याख्या करने वाला शोध कार्य वीटीटी (VTT) द्वारा प्रकाशित किया गया था, जो पीआरओटीओएस (PROTOS) संघ के सदस्यों में से एक है।[5]
- म्यू सेवा विश्लेषक[25] म्यू डायनेमिक्स द्वारा विकसित एक वाणिज्यिक सेवा परीक्षण उपकरण है।[26] म्यू सर्विस विश्लेषक सेवाओं के ब्लैक बॉक्स और व्हाइट बॉक्स का परीक्षण करता है, जो उनके अनावृत सॉफ़्टवेयर इंटरफेस के आधार पर, सेवा से वंचित अनुकरण, सर्विस-स्तर ट्रैफ़िक विविधताओं (अमान्य इनपुट उत्पन्न करने के लिए) और ज्ञात भेद्यता प्रेरकों के पुनर्प्रदर्शन का उपयोग करता है। ये सभी तकनीकें इनपुट सत्यापन और त्रुटि से प्रबंधन का अभ्यास करती हैं और सॉफ्टवेयर प्रणाली पर परीक्षण ट्रैफ़िक के प्रभावों को चिह्नित करने के लिए वैध प्रोटोकॉल मॉनिटर और एसएनएमपी (SNMP) के संयोजन में उपयोग की जाती हैं। म्यू सर्विस विश्लेषक उपयोगकर्ताओं को किसी भी अनावृत प्रोटोकॉल कार्यान्वयन के लिए प्रणालीय-स्तरीय विश्वसनीयता, उपलब्धता और सुरक्षा मेट्रिक्स को स्थापित करने और ट्रैक करने की अनुमति देता है। यह उपकरण 2005 से उत्तरी अमेरिका, एशिया और यूरोप के ग्राहकों द्वारा विशेष रूप से नेटवर्क ऑपरेटरों (और उनके विक्रेताओं) और औद्योगिक नियंत्रण प्रणालियों (समीक्षात्मक आधारभूत संरचना सहित) के महत्वपूर्ण बाजारों में उपलब्ध है।
- एक्ससेप्शन (Xception)[27] समीक्षात्मक सॉफ्टवेयर एसए (SA) द्वारा विकसित एक व्यावसायिक सॉफ्टवेयर उपकरण है,[28] जिसका उपयोग सॉफ्टवेयर फॉल्ट इंजेक्शन (स्विफी (SWIFI)) और स्कैन चेन फॉल्ट इंजेक्शन (एससीआईएफआई (SCIFI)) पर आधारित ब्लैक बॉक्स और व्हाइट बॉक्स परीक्षण के लिए किया जाता है। एक्ससेप्शन (Xception) उपयोगकर्ताओं को अपने प्रणाली की दृढ़ता या उनके सिर्फ एक भाग का परीक्षण करने की अनुमति देता है, जिससे आर्किटेक्चर के एक विशिष्ट अनुक्रम के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन और हार्डवेयर फॉल्ट इंजेक्शन दोनों की अनुमति मिलती है। उपकरण का उपयोग 1999 से बाजार में किया गया है और इसके ग्राहक अमेरिकी, एशियाई और यूरोपीय बाजारों में हैं, विशेष रूप से एयरोस्पेस और दूरसंचार बाजार के महत्वपूर्ण बाजार में। पूर्ण एक्ससेप्शन (Xception) उत्पाद परिवार में सम्मिलित हैं- ए) मुख्य एक्ससेप्शन (Xception) उपकरण, सॉफ्टवेयर कार्यान्वित फॉल्ट इंजेक्शन (एसडब्ल्यूआईएफआई (SWIFI)) तकनीक में अत्याधुनिक अग्रणी, बी) आसान फॉल्ट परिभाषा (ईएफडी (FED)) और एक्सट्रैक्ट (एक्ससेप्शन (Xception) विश्लेषण उपकरण) ऐड-ऑन उपकरण, c) स्कैन चेन और पिन-स्तर फोर्सिंग के लिए फॉल्ट इंजेक्शन विस्तारण के साथ विस्तृत एक्ससेप्शन (Xception) उपकरण (एक्ससेप्शन (eXception))।
लाइब्रेरी
- libfiu (यूजरस्पेस में फॉल्ट इंजेक्शन), सी (C) लाइब्रेरी स्रोत कोड को संशोधित किए बिना पीओेएसआईएक्स (POSIX) सामान्य में दोषों का अनुकरण करने के लिए। प्रोग्राम के किसी भी बिंदु पर कार्यावधि पर मनमाने ढंग से फॉल्टों को अनुकरण करने के लिए एक एपीआई (API) सम्मिलित है।
- TestApi साझा-स्रोत एपीआई (API) लाइब्रेरी है, जो फॉल्ट इंजेक्शन परीक्षण के साथ-साथ अन्य परीक्षण प्रकारों, डेटा-संरचनाओं और .NET अनुप्रयोगों के लिए एल्गोरिदम के लिए सुविधाएं प्रदान करती है।
- Fuzzino मुक्त स्रोत लाइब्रेरी है, जो फ़ज़िंग स्वतः शोध प्रणाली का समृद्ध अनुक्रम प्रदान करता है जो एक प्रकार के विनिर्देश और/या मान्य मानों से उत्पन्न होते हैं।
- krf मुक्त स्रोत लिनक्स कर्नेल मॉड्यूल है जो प्रणाली कॉल के लिए संभावित रूप से विफलता मान वापस करने के लिए विन्यास योग्य सुविधा प्रदान करता है। ब्लॉग पोस्ट में आगे बताया गया है।
- nlfaultinjection को एक साधारण, पोर्टेबल फॉल्ट इंजेक्शन फ्रेमवर्क प्रदान करने के लिए डिज़ाइन किया गया है, जो लगभग किसी भी प्रणाली पर चलने में सक्षम है, चाहे वह कितना भी विवश क्यों न हो और केवल सी (C) मानक लाइब्रेरी पर निर्भर करता है।
कार्यात्मक गुणों या परीक्षण स्थितियोंं में फॉल्ट इंजेक्शन
पारंपरिक उत्परिवर्तन परीक्षण के विपरीत जहां उत्परिवर्ती फॉल्ट उत्पन्न होते हैं और मॉडल के कोड विवरण में इंजेक्ट किए जाते हैं, मॉडल कोड के स्थान पर सीधे मॉडल गुणों के लिए नए परिभाषित उत्परिवर्तन ऑपरेटरों की एक श्रृंखला के अनुप्रयोग की भी जांच की गई है।[29] उत्परिवर्ती गुण जो प्रारंभिक गुणों (या परीक्षण स्थितियों) से उत्पन्न होते हैं और मॉडल चेकर द्वारा मान्य किए जाते हैं, उन्हें नए गुणों के रूप में माना जाना चाहिए जो प्रारंभिक सत्यापन प्रक्रिया के दौरान छूट गए हैं। इसलिए, इन नई पहचान किए गए गुणों को गुणों की मौजूदा सूची में जोड़ने से औपचारिक सत्यापन के व्याप्ति मीट्रिक में सुधार होता है और इसके परिणामस्वरूप अधिक विश्वसनीय डिजाइन तैयार होता है।
फॉल्ट इंजेक्शन का अनुप्रयोग
फॉल्ट इंजेक्शन कई रूप ले सकता है। उदाहरण के लिए ऑपरेटिंग सिस्टम के परीक्षण में, फॉल्ट इंजेक्शन प्रायः ड्राइवर (कर्नेल-मोड सॉफ़्टवेयर) द्वारा किया जाता है जो प्रणाली कॉल (कर्नेल में कॉल) को रोकता है और कुछ कॉलों के लिए यादृच्छिक रूप से विफलता लौटाता है। इस प्रकार का फॉल्ट इंजेक्शन निम्न-स्तरीय उपयोगकर्ता-मोड सॉफ़्टवेयर के परीक्षण के लिए उपयोगी है। उच्च स्तर के सॉफ़्टवेयर के लिए, विभिन्न विधियाँ फॉल्टों को अंतःक्षेप करती हैं। प्रबंधित कोड में, उपकरण का उपयोग करना सामान्य है। हालांकि फॉल्ट इंजेक्शन हाथ से किया जा सकता है, फॉल्ट इंजेक्शन की प्रक्रिया को स्वचालित करने के लिए कई फॉल्ट इंजेक्शन उपकरण उपस्थित हैं।[30]
उस स्तर के लिए एपीआई (API) की जटिलता पर निर्भर करता है जहां फॉल्ट अंतःक्षेप किए जाते हैं, फॉल्ट इंजेक्शन परीक्षणों को प्रायः असत्य सकारात्मकता की संख्या को कम करने के लिए सावधानी से डिज़ाइन किया जाना चाहिए। यहां तक कि अच्छी तरह से डिज़ाइन किया गया फॉल्ट इंजेक्शन परीक्षण भी कभी-कभी ऐसी स्थिति उत्पन्न कर सकता है जो सॉफ़्टवेयर के सामान्य संचालन में असंभव है। उदाहरण के लिए, कल्पना करें कि दो एपीआई (API) फलन हैं, Commit
और PrepareForCommit
, जैसे कि अकेले, इनमें से प्रत्येक फलन संभवतः विफल हो सकता है, लेकिन यदि PrepareForCommit
को कॉल किया जाता है और सफल होता है, तो Commit
के बाद की कॉल सफल होने की गारंटी है। अब निम्नलिखित कोड पर विचार करें-
error = PrepareForCommit(); if (error == SUCCESS) { error = Commit(); assert(error == SUCCESS); }
प्रायः यह सुनिश्चित करने के लिए पर्याप्त स्थिति का ट्रैक रखने के लिए फॉल्ट इंजेक्शन कार्यान्वयन के लिए संभव नहीं होगा कि एपीआई (API) फलन बनाता है। इस उदाहरण में, उपरोक्त कोड का फॉल्ट इंजेक्शन परीक्षण अभिकथन को आघात कर सकता है, जबकि सामान्य ऑपरेशन में ऐसा कभी नहीं होगा।
यह भी देखें
- बेबगिंग
- उत्परिवर्तन (टेस्टिंग) परीक्षण
- कैओस अभियांत्रिकी
संदर्भ
- ↑ Moradi, Mehrdad; Van Acker, Bert; Vanherpen, Ken; Denil, Joachim (2019). Chamberlain, Roger; Taha, Walid; Törngren, Martin (eds.). "Model-Implemented Hybrid Fault Injection for Simulink (Tool Demonstrations)". Cyber Physical Systems. Model-Based Design. Lecture Notes in Computer Science (in English). Springer International Publishing. 11615: 71–90. doi:10.1007/978-3-030-23703-5_4. ISBN 9783030237035. S2CID 195769468.
- ↑ Shepherd, Carlton; Markantonakis, Konstantinos; Van Heijningen, Nico; Aboulkassimi, Driss; Gaine, Clement; Heckmann, Thibaut; Naccache, David (2021). "Physical fault injection and side-channel attacks on mobile devices: A comprehensive analysis" (PDF). Computers & Security. Elsevier. 111 (102471): 102471. arXiv:2105.04454. doi:10.1016/j.cose.2021.102471. S2CID 236957400.
- ↑ Bar-El, Hagai; Choukri, Hamid; Naccache, David; Tunstall, Michael; Whelan, Claire (2004). "The sorcerer's apprentice guide to fault attacks". Proceedings of the IEEE. IEEE. 94 (2): 370–382. doi:10.1109/JPROC.2005.862424. S2CID 2397174.
- ↑ J. Voas, "Fault Injection for the Masses," Computer, vol. 30, pp. 129–130, 1997.
- ↑ 5.0 5.1 Kaksonen, Rauli. A Functional Method for Assessing Protocol Implementation Security. 2001.
- ↑ A. Avizienis, J.-C. Laprie, Brian Randell, and C. Landwehr, "Basic Concepts and Taxonomy of Dependable and Secure Computing," Dependable and Secure Computing, vol. 1, pp. 11–33, 2004.
- ↑ 7.0 7.1 J. V. Carreira, D. Costa, and S. J. G, "Fault Injection Spot-Checks Computer System Dependability," IEEE Spectrum, pp. 50–55, 1999.
- ↑ Benso, Alfredo; Prinetto, Paolo, eds. (2003). Fault Injection Techniques and Tools for Embedded Systems Reliability Evaluation. Frontiers in Electronic Testing (in English). Springer US. ISBN 978-1-4020-7589-6.
- ↑ "Optimizing fault injection in FMI co-simulation through sensitivity partitioning | Proceedings of the 2019 Summer Simulation Conference". dl.acm.org (in English). Retrieved 2020-06-14.
- ↑ Moradi, M., Oakes, B.J., Saraoglu, M., Morozov, A., Janschek, K. and Denil, J., 2020. EXPLORING FAULT PARAMETER SPACE USING REINFORCEMENT LEARNING-BASED FAULT INJECTION.
- ↑ Rickard Svenningsson, Jonny Vinter, Henrik Eriksson and Martin Torngren, "MODIFI: A MODel-Implemented Fault Injection Tool,", Lecture Notes in Computer Science, 2010, Volume 6351/2010, 210-222.
- ↑ G. A. Kanawati, N. A. Kanawati, and J. A. Abraham, "FERRARI: A Flexible Software-Based Fault and Error Injection System," IEEE Transactions on Computers, vol. 44, pp. 248, 1995.
- ↑ T. Tsai and R. Iyer, "FTAPE: A Fault Injection Tool to Measure Fault Tolerance," presented at Computing in aerospace, San Antonio; TX, 1995.
- ↑ S. Han, K. G. Shin, and H. A. Rosenberg, "DOCTOR: An IntegrateD SOftware Fault InjeCTiOn EnviRonment for Distributed Real-time Systems," presented at International Computer Performance and Dependability Symposium, Erlangen; Germany, 1995.
- ↑ S. Dawson, F. Jahanian, and T. Mitton, "ORCHESTRA: A Probing and Fault Injection Environment for Testing Protocol Implementations," presented at International Computer Performance and Dependability Symposium, Urbana-Champaign, USA, 1996.
- ↑ Grid-FIT Web-site Archived 2 February 2008 at the Wayback Machine
- ↑ N. Looker, B. Gwynne, J. Xu, and M. Munro, "An Ontology-Based Approach for Determining the Dependability of Service-Oriented Architectures," in the proceedings of the 10th IEEE International Workshop on Object-oriented Real-time Dependable Systems, USA, 2005.
- ↑ N. Looker, M. Munro, and J. Xu, "A Comparison of Network Level Fault Injection with Code Insertion," in the proceedings of the 29th IEEE International Computer Software and Applications Conference, Scotland, 2005.
- ↑ LFI Website
- ↑ Flatag (2020-05-16), Flatag/FIBlock, retrieved 2020-05-16
- ↑ beSTORM product information
- ↑ ExhaustiF SWIFI Tool Site
- ↑ Holodeck product overview Archived 13 October 2008 at the Wayback Machine
- ↑ Codenomicon Defensics product overview
- ↑ Mu Service Analyzer
- ↑ Mu Dynamics, Inc.
- ↑ Xception Web Site
- ↑ Critical Software SA
- ↑ Abbasinasab, Ali; Mohammadi, Mehdi; Mohammadi, Siamak; Yanushkevich, Svetlana; Smith, Michael (2011). "Mutant Fault Injection in Functional Properties of a Model to Improve Coverage Metrics". 2011 14th Euromicro Conference on Digital System Design. pp. 422–425. doi:10.1109/DSD.2011.57. ISBN 978-1-4577-1048-3. S2CID 15992130.
- ↑ N. Looker, M. Munro, and J. Xu, "Simulating Errors in Web Services," International Journal of Simulation Systems, Science & Technology, vol. 5, 2004.