फॉल्ट इंजेक्शन
कंप्यूटर विज्ञान में, फॉल्ट इंजेक्शन यह समझने के लिए एक परीक्षण तकनीक है कि कंप्यूटिंग प्रणालियाँ कैसे व्यवहार करती है जब असामान्य तरीके से बल दिया जाता है। यह भौतिक या सॉफ़्टवेयर-आधारित साधनों का उपयोग करके या संकर दृष्टिकोण का उपयोग करके प्राप्त किया जा सकता है।[1] व्यापक रूप से अध्ययन किए गए भौतिक फॉल्ट इंजेक्शन में उच्च वोल्टेज, अत्यधिक तापमान और इलेक्ट्रॉनिक घटकों, जैसे कंप्यूटर मेमोरी और केंद्रीय प्रसंस्करण इकाइयों पर विद्युत चुम्बकीय स्पंदों का अनुप्रयोग सम्मिलित है।[2][3] घटकों को उनकी इच्छित परिचालन सीमाओं से परे स्थितियों में उजागर करके, कंप्यूटिंग प्रणाली को गलत निष्पादन निर्देशों और महत्वपूर्ण डेटा को दूषित करने के लिए बाध्य किया जा सकता है।
सॉफ़्टवेयर परीक्षण में, फॉल्ट इंजेक्शन परीक्षण के क्षेत्र में सुधार के लिए एक तकनीक है, जो विशेष रूप से त्रुटि प्रबंधन कोड पथों में कोड पथों का परीक्षण करने के लिए फॉल्टों का परिचय देती है, जो कि संभवतया ही कभी पालन किया जा सकता है। यह प्रायः तनाव परीक्षण के साथ प्रयोग किया जाता है और व्यापक रूप से सुदृढ़ सॉफ्टवेयर विकसित करने का एक महत्वपूर्ण हिस्सा माना जाता है।[4] दृढ़ता परीक्षण[5] (सिंटैक्स परीक्षण, अस्पष्टता या अस्पष्टता परीक्षण के रूप में भी जाना जाता है) एक प्रकार का फॉल्ट इंजेक्शन है जो प्रायः संचार इंटरफेस जैसे प्रोटोकॉल, कमांड लाइन पैरामीटर या एपीआई (APIs) में कमजोरियों के परीक्षण के लिए उपयोग किया जाता है।
स्पष्ट विफलता के माध्यम से दोष का प्रसार अच्छी तरह से परिभाषित चक्र का अनुसरण करता है। निष्पादित होने पर, फॉल्ट एक त्रुटि का कारण बन सकता है, जो कि प्रणाली सीमा के भीतर अमान्य स्थिति है। त्रुटि प्रणाली सीमा के भीतर और अधिक त्रुटियां उत्पन्न कर सकती है, इसलिए प्रत्येक नई त्रुटि फॉल्ट के रूप में कार्य करती है, या यह प्रणाली सीमा तक फैल सकती है और देखने योग्य हो सकती है। जब प्रणाली सीमा पर त्रुटि स्थितियाँ देखी जाती है तो उन्हें विफलता कहा जाता है। इस तंत्र को फॉल्ट-त्रुटि-विफलता चक्र कहा जाता है[6] और यह निर्भरता में एक महत्वपूर्ण तंत्र है।
इतिहास
फॉल्ट इंजेक्शन की तकनीक 1970 के दशक की है[7] जब इसका उपयोग पहली बार हार्डवेयर स्तर पर दोषों को प्रेरित करने के लिए किया गया था। इस प्रकार के फॉल्ट इंजेक्शन को हार्डवेयर कार्यान्वित फॉल्ट इंजेक्शन (HWIFI) कहा जाता है और प्रणाली के भीतर हार्डवेयर विफलताओं का अनुकरण करने का प्रयास करता है। हार्डवेयर फॉल्ट में पहले प्रयोगों में परिपथ बोर्डों पर संयोजन को छोटा करने और प्रणाली (त्रुटियों को दूर करना) पर प्रभाव को देखने के अलावा कुछ भी सम्मिलित नहीं था। इसका उपयोग मुख्य रूप से हार्डवेयर प्रणाली की निर्भरता के परीक्षण के रूप में किया गया था। बाद में इस तकनीक का विस्तार करने के लिए विशेष हार्डवेयर विकसित किया गया, जैसे भारी विकिरण वाले परिपथ बोर्ड के विशिष्ट क्षेत्रों पर बमबारी करने वाले उपकरण। जल्द ही यह पाया गया कि सॉफ्टवेयर तकनीकों से दोष उत्पन्न हो सकते हैं और इस तकनीक के पहलू सॉफ्टवेयर प्रणाली का आकलन करने के लिए उपयोगी हो सकते हैं। सामूहिक रूप से इन तकनीकों को सॉफ्टवेयर इम्प्लीमेंटेड फॉल्ट इंजेक्शन (SWIFI) के रूप में जाना जाता है।
मॉडल कार्यान्वित फॉल्ट इंजेक्शन
साइबर-भौतिक प्रणालियों की बढ़ती जटिलता के कारण, पारंपरिक फॉल्ट इंजेक्शन विधियों को कार्यान्वित करना अब कुशल नहीं है, इसलिए परीक्षक मॉडल स्तर पर फॉल्ट इंजेक्शन का उपयोग करने की कोशिश कर रहे है।
सॉफ्टवेयर कार्यान्वित फॉल्ट इंजेक्शन
सॉफ्टवेयर फॉल्ट इंजेक्शन के लिए SWIFI तकनीकों को दो प्रकारों में वर्गीकृत किया जा सकता है: कंपाइल-टाइम इंजेक्शन और रनटाइम इंजेक्शन।
कंपाइल-टाइम इंजेक्शन एक इंजेक्शन तकनीक है जहां सिस्टम में सिम्युलेटेड दोषों को इंजेक्ट करने के लिए स्रोत कोड को संशोधित किया जाता है। एक विधि को उत्परिवर्तन परीक्षण कहा जाता है जो कोड की मौजूदा पंक्तियों को बदल देता है ताकि उनमें दोष हों। इस तकनीक का एक सरल उदाहरण बदल सकता है a = a + 1
को a = a – 1
कोड म्यूटेशन उन दोषों को उत्पन्न करता है जो प्रोग्रामर्स द्वारा अनजाने में जोड़े गए दोषों के समान हैं।
कोड म्यूटेशन का परिशोधन कोड इंसर्शन फॉल्ट इंजेक्शन है जो मौजूदा कोड को संशोधित करने के बजाय कोड जोड़ता है। यह आमतौर पर परेशानी कार्यों के उपयोग के माध्यम से किया जाता है जो सरल कार्य होते हैं जो मौजूदा मूल्य लेते हैं और इसे कुछ तर्क के माध्यम से दूसरे मूल्य में परेशान करते हैं, उदाहरण के लिए
<वाक्यविन्यास प्रकाश लैंग = सी>
इंट pFunc (इंट वैल्यू) { वापसी मूल्य + 20; }
इंट मेन (इंट एआरजीसी, चार * एआरजीवी []) { int a = pFunc(aFunction(atoi(argv[1]))); अगर (ए> 20) { /* कुछ करो */ } अन्य { /* कुछ और करें */ } }
</वाक्यविन्यास हाइलाइट>
इस मामले में, pFunc गड़बड़ी फ़ंक्शन है और इसे फ़ंक्शन के रिटर्न वैल्यू पर लागू किया जाता है जिसे सिस्टम में गलती शुरू करने के लिए कहा जाता है।
'रनटाइम इंजेक्शन' तकनीक एक चल रहे सॉफ़्टवेयर सिस्टम में गलती को इंजेक्ट करने के लिए सॉफ़्टवेयर ट्रिगर का उपयोग करती है। दोषों को कई भौतिक विधियों के माध्यम से इंजेक्ट किया जा सकता है और ट्रिगर्स को कई तरीकों से कार्यान्वित किया जा सकता है, जैसे: समय आधारित ट्रिगर्स (जब टाइमर एक निर्दिष्ट समय तक पहुंचता है तो एक रुकावट उत्पन्न होती है और टाइमर से जुड़ा इंटरप्ट हैंडलर इंजेक्ट कर सकता है। गलती। ); इंटरप्ट बेस्ड ट्रिगर्स (हार्डवेयर एक्सेप्शन और सॉफ्टवेयर ट्रैप मैकेनिज्म का उपयोग सिस्टम कोड में किसी विशिष्ट स्थान पर या सिस्टम के भीतर किसी विशेष घटना पर, उदाहरण के लिए, किसी विशिष्ट मेमोरी लोकेशन तक पहुंच) उत्पन्न करने के लिए किया जाता है।
रनटाइम इंजेक्शन तकनीक एक ट्रिगर के माध्यम से सिस्टम में दोष डालने के लिए कई अलग-अलग तकनीकों का उपयोग कर सकती है।
- मेमोरी स्पेस का करप्शन: इस तकनीक में रैम, प्रोसेसर रजिस्टर और आई/ओ मैप को करप्ट करना शामिल है।
- सिस्कल इंटरपोजिशन तकनीक: यह ऑपरेटिंग सिस्टम कर्नेल इंटरफेस से सिस्टम सॉफ्टवेयर को निष्पादित करने के लिए गलती प्रसार से संबंधित है। यह उपयोगकर्ता-स्तर के सॉफ़्टवेयर द्वारा किए गए ऑपरेटिंग सिस्टम कॉल को इंटरसेप्ट करके और उनमें दोष इंजेक्ट करके किया जाता है।
- नेटवर्क लेवल फॉल्ट इंजेक्शन: यह तकनीक नेटवर्क इंटरफेस पर नेटवर्क पैकेट के भ्रष्टाचार, हानि या पुनर्व्यवस्था से संबंधित है।
ये तकनीकें अक्सर कंप्यूटर प्रोसेसर आर्किटेक्चर द्वारा प्रदान की गई डिबगिंग सुविधाओं के आसपास आधारित होती हैं।
प्रोटोकॉल सॉफ्टवेयर गलती इंजेक्शन
जटिल सॉफ्टवेयर सिस्टम, विशेष रूप से खुले मानकों के आधार पर बहु-विक्रेता वितरित सिस्टम, संचार प्रोटोकॉल के रूप में ज्ञात स्टेटफुल, संरचित एक्सचेंजों के माध्यम से डेटा का आदान-प्रदान करने के लिए इनपुट/आउटपुट संचालन करते हैं। एक प्रकार का दोष इंजेक्शन जो विशेष रूप से प्रोटोकॉल कार्यान्वयन का परीक्षण करने के लिए उपयोगी होता है (एक प्रकार का सॉफ़्टवेयर कोड जिसमें असामान्य विशेषता होती है कि यह अपने इनपुट की भविष्यवाणी या नियंत्रण नहीं कर सकता है) फ़ज़ परीक्षण है। फ़ज़िंग ब्लैक-बॉक्स परीक्षण का एक विशेष रूप से उपयोगी रूप है क्योंकि सॉफ़्टवेयर सिस्टम को सबमिट किए गए विभिन्न अमान्य इनपुट सिस्टम के अंदर चल रहे कोड के विवरण पर निर्भर नहीं होते हैं, और ज्ञान के आधार पर नहीं बनाए जाते हैं।
हार्डवेयर कार्यान्वित दोष इंजेक्शन
यह तकनीक एक हार्डवेयर प्रोटोटाइप पर लागू की गई थी। परीक्षक सर्किट में कुछ हिस्सों के वोल्टेज को बदलकर, तापमान को बढ़ाकर या घटाकर, उच्च ऊर्जा विकिरण द्वारा बोर्ड पर बमबारी आदि करके गलती को इंजेक्ट करते हैं।
गलती इंजेक्शन के लक्षण
दोषों के तीन मुख्य पैरामीटर हैं।[8] * प्रकार: किस प्रकार का दोष इंजेक्ट किया जाना चाहिए? उदाहरण के लिए अटके हुए मूल्य, देरी, कुछ कार्यों की अनदेखी, कुछ मापदंडों / चर, यादृच्छिक दोष, पूर्वाग्रह दोष, शोर आदि की अनदेखी करना। प्रत्येक दोष का आयाम भी महत्वपूर्ण है।
- समय: कब सक्रिय किया जाना चाहिए? उदाहरण के लिए गलती का सक्रियण समय या गलती की सक्रियता की स्थिति।
- स्थान: व्यवस्था में कहाँ होना चाहिए? उदाहरण के लिए सिस्टम के बीच लिंक/कनेक्शन में दोष, सिस्टम/सबसिस्टम/फंक्शन आदि के भीतर दोष।
ये पैरामीटर फॉल्ट स्पेस क्षेत्र बनाते हैं। सिस्टम की जटिलता बढ़ने से फॉल्ट स्पेस दायरे में तेजी से वृद्धि होगी। इसलिए, पारंपरिक गलती इंजेक्शन विधि आधुनिक साइबर-भौतिक प्रणालियों में उपयोग के लिए लागू नहीं होगी, क्योंकि वे इतने धीमे होंगे, और उन्हें कम संख्या में दोष (कम दोष कवरेज) मिलेंगे। इसलिए, परीक्षकों को महत्वपूर्ण दोषों का चयन करने के लिए एक कुशल एल्गोरिदम की आवश्यकता होती है जो सिस्टम व्यवहार पर अधिक प्रभाव डालते हैं। इस प्रकार, मुख्य शोध प्रश्न यह है कि फॉल्ट स्पेस दायरे में महत्वपूर्ण दोषों का पता कैसे लगाया जाए, जिनका सिस्टम व्यवहार पर विनाशकारी प्रभाव पड़ता है। यहां कुछ तरीके दिए गए हैं जो कम अनुकार समय में उच्च दोष कवरेज तक पहुंचने के लिए दोष स्थान का कुशलतापूर्वक पता लगाने के लिए गलती इंजेक्शन की सहायता कर सकते हैं।
- संवेदनशीलता का विश्लेषण:[9] इस पद्धति में, संवेदनशीलता विश्लेषण का उपयोग उन सबसे महत्वपूर्ण संकेतों की पहचान करने के लिए किया गया है जिनका सिस्टम के विनिर्देशन पर अधिक प्रभाव पड़ता है। उन महत्वपूर्ण संकेतों या मापदंडों की पहचान करके, दोष इंजेक्शन उपकरण सिस्टम में सभी संकेतों पर ध्यान केंद्रित करने के बजाय उन प्रभावी संकेतों पर ध्यान केंद्रित करेगा।
- सुदृढीकरण सीखना:[10] इस पद्धति में, सुदृढीकरण सीखने के एल्गोरिथ्म का उपयोग गलती स्थान का कुशलतापूर्वक पता लगाने और महत्वपूर्ण दोषों को खोजने के लिए किया गया है।
दोष इंजेक्शन उपकरण
यद्यपि इस प्रकार के दोषों को हाथ से इंजेक्ट किया जा सकता है, एक अनपेक्षित दोष को पेश करने की संभावना अधिक होती है, इसलिए प्रोग्राम को स्वचालित रूप से पार्स करने और दोषों को सम्मिलित करने के लिए उपकरण मौजूद हैं।
अनुसंधान उपकरण
कई SWIFI उपकरण विकसित किए गए हैं और इन उपकरणों का चयन यहां दिया गया है। छह आमतौर पर इस्तेमाल किए जाने वाले दोष इंजेक्शन उपकरण हैं फेरारी, एफटीएपीई, डॉक्टर, ऑर्केस्ट्रा, एक्ससेप्शन और ग्रिड-फिट।
- MODIFI (MODel-Implemented Fault Injection) सिमुलिंक व्यवहार मॉडल की मजबूती के मूल्यांकन के लिए एक दोष इंजेक्शन उपकरण है। यह डोमेन-विशिष्ट दोष मॉडल के कार्यान्वयन के लिए XML में दोष मॉडलिंग का समर्थन करता है।[11]
- फरारी (फॉल्ट और एरर या स्वचालित रीयल-टाइम इंजेक्शन) सॉफ्टवेयर ट्रैप पर आधारित है जो सिस्टम में त्रुटियों को इंजेक्ट करता है। जाल या तो एक विशिष्ट मेमोरी स्थान या टाइमआउट पर कॉल करके सक्रिय होते हैं। जब किसी ट्रैप को कॉल किया जाता है तो हैंडलर सिस्टम में एक फॉल्ट डाल देता है। दोष या तो क्षणिक या स्थायी हो सकते हैं। फेरारी के साथ किए गए शोध से पता चलता है कि त्रुटि का पता लगाना गलती के प्रकार और जहां गलती डाली गई है, पर निर्भर है।[12]
- FTAPE (फॉल्ट टॉलरेंस एंड परफॉर्मेंस इवैल्यूएटर) न केवल मेमोरी और रजिस्टरों में, बल्कि डिस्क एक्सेस में भी खराबी को इंजेक्ट कर सकता है। यह सिस्टम में एक विशेष डिस्क ड्राइवर डालने से प्राप्त होता है जो डिस्क यूनिट से भेजे और प्राप्त किए गए डेटा में दोषों को इंजेक्ट कर सकता है। FTAPE में एक सिंथेटिक लोड यूनिट भी है जो मजबूती परीक्षण उद्देश्यों के लिए लोड की विशिष्ट मात्रा का अनुकरण कर सकती है।[13]
- डॉक्टर (इंटीग्रेटेड सॉफ्टवेयर फॉल्ट इंजेक्शन एनवायरनमेंट) मेमोरी के इंजेक्शन की अनुमति देता है और दोषों को पंजीकृत करता है, साथ ही साथ नेटवर्क संचार दोष भी। यह टाइम-आउट, ट्रैप और कोड संशोधन के संयोजन का उपयोग करता है। टाइम-आउट ट्रिगर क्षणिक मेमोरी दोषों को इंजेक्ट करता है और ट्रैप इंजेक्षन ट्रांसिएंट एमुलेटेड हार्डवेयर विफलताओं, जैसे रजिस्टर भ्रष्टाचार। कोड संशोधन का उपयोग स्थायी दोषों को इंजेक्ट करने के लिए किया जाता है।[14]
- ऑर्केस्ट्रा एक स्क्रिप्ट-चालित फॉल्ट इंजेक्टर है जो नेटवर्क लेवल फॉल्ट इंजेक्शन के आसपास आधारित है। इसका प्राथमिक उपयोग वितरित प्रोटोकॉल की दोष-सहिष्णुता और समय विशेषताओं का मूल्यांकन और सत्यापन है। आर्केस्ट्रा को शुरू में मैक ऑपरेटिंग सिस्टम के लिए विकसित किया गया था और गलती इंजेक्टर द्वारा शुरू की गई विलंबता की भरपाई के लिए इस प्लेटफॉर्म की कुछ विशेषताओं का उपयोग करता है। इसे अन्य ऑपरेटिंग सिस्टम में भी सफलतापूर्वक पोर्ट किया गया है।[15]
- एक्ससेप्शन को कई आधुनिक प्रोसेसरों पर उपलब्ध उन्नत डिबगिंग सुविधाओं का लाभ उठाने के लिए डिज़ाइन किया गया है। यह लिखा गया है कि सिस्टम स्रोत में कोई संशोधन की आवश्यकता नहीं है और न ही सॉफ्टवेयर ट्रैप को सम्मिलित करने की आवश्यकता है, क्योंकि प्रोसेसर की अपवाद हैंडलिंग क्षमताएं फॉल्ट इंजेक्शन को ट्रिगर करती हैं। ये ट्रिगर विशिष्ट मेमोरी स्थानों तक पहुंच पर आधारित होते हैं। इस तरह की पहुंच या तो डेटा या निर्देशों को प्राप्त करने के लिए हो सकती है। इसलिए टेस्ट रन को सटीक रूप से पुन: पेश करना संभव है क्योंकि ट्रिगर्स को टाइमआउट के बजाय विशिष्ट घटनाओं से जोड़ा जा सकता है।[7]* ग्रिड-फिट (ग्रिड - फॉल्ट इंजेक्शन टेक्नोलॉजी)[16] फॉल्ट इंजेक्शन द्वारा ग्रिड सेवाओं का आकलन करने के लिए एक निर्भरता मूल्यांकन पद्धति और उपकरण है। ग्रिड-फिट को पहले के फॉल्ट इंजेक्टर WS-FIT से लिया गया है[17] जिसे अपाचे एक्सिस ट्रांसपोर्ट का उपयोग करके लागू की गई जावा वेब सेवाओं की ओर लक्षित किया गया था। ग्रिड-फिट एक नए फॉल्ट इंजेक्शन मैकेनिज्म का उपयोग करता है जो नेटवर्क-लेवल फॉल्ट इंजेक्शन को कोड इंसर्शन फॉल्ट इंजेक्शन के समान नियंत्रण का स्तर देने के लिए उपयोग करने की अनुमति देता है, जबकि कम इनवेसिव होता है।[18]
- LFI (लाइब्रेरी-लेवल फॉल्ट इंजेक्टर)[19] एक स्वचालित परीक्षण उपकरण सूट है, जिसका उपयोग नियंत्रित परीक्षण वातावरण में अनुकरण करने के लिए किया जाता है, असाधारण परिस्थितियाँ जिन्हें प्रोग्राम को रनटाइम पर संभालने की आवश्यकता होती है, लेकिन केवल इनपुट परीक्षण के माध्यम से जांचना आसान नहीं होता है। LFI स्वचालित रूप से साझा पुस्तकालयों द्वारा उजागर की गई त्रुटियों की पहचान करता है, प्रोग्राम बायनेरिज़ में संभावित त्रुटि पुनर्प्राप्ति कोड पाता है और साझा पुस्तकालयों और अनुप्रयोगों के बीच सीमा पर वांछित दोषों को इंजेक्ट करता है।
- FIBlock (दोष इंजेक्शन ब्लॉक),[20] एक उच्च-अनुकूलन योग्य सिमुलिंक ब्लॉक के रूप में कार्यान्वित एक मॉडल-आधारित गलती इंजेक्शन विधि। यह MATLAB सिमुलिंक मॉडल में इंजेक्शन का समर्थन करता है जो साइबर-भौतिक प्रणालियों जैसे सेंसर, कंप्यूटिंग हार्डवेयर और नेटवर्क के आवश्यक विषम घटकों के विशिष्ट दोष हैं। अतिरिक्त ट्रिगर इनपुट और ब्लॉक के आउटपुट सशर्त दोषों के मॉडलिंग को सक्षम करते हैं। इसके अलावा, ट्रिगर सिग्नल से जुड़े दो या अधिक FIBlocks तथाकथित श्रृंखलित त्रुटियों को मॉडल कर सकते हैं।
वाणिज्यिक उपकरण
- सुरक्षा से परे तूफान[21] एक वाणिज्यिक सॉफ्टवेयर परीक्षण है # परीक्षण दृष्टिकोण सॉफ्टवेयर सुरक्षा विश्लेषण उपकरण। इसका उपयोग अक्सर मूल उपकरण निर्माताओं द्वारा विकास के दौरान किया जाता है, लेकिन कार्यान्वयन से पहले उत्पादों के परीक्षण के लिए भी इसका उपयोग किया जाता है, विशेष रूप से एयरोस्पेस, बैंकिंग और रक्षा में। beSTORM की परीक्षण प्रक्रिया सबसे संभावित हमले परिदृश्यों से शुरू होती है, फिर संपूर्ण पीढ़ी आधारित फ़ज़ परीक्षण का सहारा लेती है। beSTORM म्यूटेशन-आधारित हमलों सहित सामान्य प्रोटोकॉल और 'ऑटो लर्न' नए या मालिकाना प्रोटोकॉल के लिए मॉड्यूल प्रदान करता है। हाइलाइट्स: बाइनरी और टेक्स्टुअल एनालिसिस, कस्टम प्रोटोकॉल टेस्टिंग, डिबगिंग और स्टैक ट्रेसिंग, डेवलपमेंट लैंग्वेज इंडिपेंडेंट, सीवीई कंप्लेंट।
- ExhaustiF एक व्यावसायिक सॉफ्टवेयर टूल है जिसका उपयोग सॉफ्टवेयर-इंटेंसिव सिस्टम की विश्वसनीयता में सुधार के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) पर आधारित ग्रे बॉक्स परीक्षण के लिए किया जाता है। उपकरण का उपयोग किसी भी सॉफ़्टवेयर विकास जीवनचक्र के सिस्टम एकीकरण और सिस्टम परीक्षण चरणों के दौरान किया जा सकता है, साथ ही साथ अन्य परीक्षण उपकरणों का पूरक भी हो सकता है। ExhaustiF सॉफ्टवेयर और हार्डवेयर दोनों में दोषों को इंजेक्ट करने में सक्षम है। सॉफ़्टवेयर में सिम्युलेटेड दोषों को इंजेक्ट करते समय, ExhaustiF निम्न प्रकार के दोष प्रदान करता है: चर भ्रष्टाचार और प्रक्रिया भ्रष्टाचार। हार्डवेयर फॉल्ट इंजेक्शन के लिए कैटलॉग में मेमोरी (I/O, RAM) और CPU (इंटीजर यूनिट, फ्लोटिंग यूनिट) में दोष शामिल हैं। आरटीईएमएस/ईआरसी32, आरटीईएमएस/पेंटियम, लिनक्स/पेंटियम और एमएस-विंडोज/पेंटियम के लिए अलग-अलग संस्करण उपलब्ध हैं।[22]
- होलोडेक[23] सिक्योरिटी इनोवेशन द्वारा विकसित एक परीक्षण उपकरण है जो विंडोज अनुप्रयोगों और सेवाओं के लिए वास्तविक दुनिया के अनुप्रयोग और सिस्टम त्रुटियों का अनुकरण करने के लिए दोष इंजेक्शन का उपयोग करता है। होलोडेक के ग्राहकों में माइक्रोसॉफ्ट, सिमेंटेक, ईएमसी और एडोब सहित कई प्रमुख व्यावसायिक सॉफ्टवेयर विकास कंपनियां शामिल हैं। यह एक नियंत्रित, दोहराने योग्य वातावरण प्रदान करता है जिसमें नाजुकता और सुरक्षा परीक्षण के लिए एरर-हैंडलिंग कोड और एप्लिकेशन अटैक सतहों का विश्लेषण और डिबग किया जाता है। यह फ़ाइल और नेटवर्क फ़ज़िंग दोषों के साथ-साथ अन्य संसाधनों, सिस्टम और कस्टम-परिभाषित दोषों की एक विस्तृत श्रृंखला का अनुकरण करता है। यह कोड का विश्लेषण करता है और परीक्षण योजनाओं की सिफारिश करता है और फ़ंक्शन कॉल लॉगिंग, एपीआई इंटरसेप्शन, तनाव परीक्षण, कोड कवरेज विश्लेषण और कई अन्य एप्लिकेशन सुरक्षा आश्वासन कार्य भी करता है।
- प्रूफडॉक के कैओस इंजीनियरिंग प्लेटफॉर्म का फोकस माइक्रोसॉफ्ट एज़्योर क्लाउड प्लेटफॉर्म पर है। यह इंफ्रास्ट्रक्चर स्तर, प्लेटफॉर्म स्तर और एप्लिकेशन स्तर पर विफलताओं को इंजेक्ट करता है।
- ग्रेमलिन एक फेल्योर-एज-ए-सर्विस प्लेटफॉर्म है जो कैओस इंजीनियरिंग के अभ्यास के माध्यम से कंपनियों को अधिक लचीलापन (नेटवर्क) सिस्टम बनाने में मदद करता है। ग्रेमलिन तीन श्रेणियों में सबसे आम विफलताओं को फिर से बनाता है - कम्प्यूटेशनल संसाधन, दूरसंचार नेटवर्क, और राज्य (कंप्यूटर विज्ञान) - अज्ञात दोषों को सक्रिय रूप से पहचानने और ठीक करने के लिए सिस्टम में विफलता को सुरक्षित रूप से इंजेक्ट करता है।
- कोडनोमिकॉन डिफेंसिक्स[24] एक ब्लैक-बॉक्स टेस्ट ऑटोमेशन फ्रेमवर्क है जो नेटवर्क प्रोटोकॉल, एपीआई इंटरफेस, फाइलों और एक्सएमएल संरचनाओं सहित 150 से अधिक विभिन्न इंटरफेस में गलती इंजेक्शन करता है। सॉफ्टवेयर फॉल्ट इंजेक्शन के क्षेत्र में औलू विश्वविद्यालय में पांच साल के शोध के बाद वाणिज्यिक उत्पाद 2001 में लॉन्च किया गया था। उपयोग किए गए फ़ज़िंग सिद्धांतों की व्याख्या करने वाला एक शोध कार्य VTT द्वारा प्रकाशित किया गया था, जो PROTOS संघ के सदस्यों में से एक है।[5]* म्यू सेवा विश्लेषक[25] गतिकी में द्वारा विकसित एक वाणिज्यिक सेवा परीक्षण उपकरण है।[26] म्यू सर्विस एनालाइज़र सॉफ्टवेयर टेस्टिंग#टेस्टिंग अप्रोच और सॉफ्टवेयर टेस्टिंग#टेस्टिंग अप्रोच टेस्टिंग करता है सेवाओं का उनके एक्सपोज्ड सॉफ्टवेयर इंटरफेस के आधार पर, डिनायल-ऑफ-सर्विस सिमुलेशन, सर्विस-लेवल ट्रैफिक वेरिएशन (अमान्य इनपुट उत्पन्न करने के लिए) और ज्ञात के रिप्ले का उपयोग करके भेद्यता ट्रिगर। ये सभी तकनीकें इनपुट सत्यापन और त्रुटि से निपटने का अभ्यास करती हैं और सॉफ्टवेयर सिस्टम पर परीक्षण यातायात के प्रभावों को चिह्नित करने के लिए वैध प्रोटोकॉल मॉनिटर और एसएनएमपी के साथ संयोजन में उपयोग की जाती हैं। म्यू सर्विस एनालाइज़र उपयोगकर्ताओं को किसी भी उजागर प्रोटोकॉल कार्यान्वयन के लिए सिस्टम-स्तरीय विश्वसनीयता, उपलब्धता और सुरक्षा मेट्रिक्स को स्थापित करने और ट्रैक करने की अनुमति देता है। यह उपकरण 2005 से उत्तरी अमेरिका, एशिया और यूरोप के ग्राहकों द्वारा विशेष रूप से नेटवर्क ऑपरेटरों (और उनके विक्रेताओं) और औद्योगिक नियंत्रण प्रणालियों (नाजूक आधारभूत श्रंचना सहित) के महत्वपूर्ण बाजारों में उपलब्ध है।
- अपवाद[27] क्रिटिकल सॉफ्टवेयर एसए द्वारा विकसित एक व्यावसायिक सॉफ्टवेयर टूल है[28] सॉफ्टवेयर टेस्टिंग # टेस्टिंग अप्रोच और सॉफ्टवेयर टेस्टिंग # टेस्टिंग एप्रोच टेस्टिंग ऑन सॉफ्टवेयर फॉल्ट इंजेक्शन (SWIFI) और स्कैन चेन फॉल्ट इंजेक्शन (SCIFI) के लिए इस्तेमाल किया जाता है। एक्ससेप्शन उपयोगकर्ताओं को अपने सिस्टम की मजबूती या उनके सिर्फ एक हिस्से का परीक्षण करने की अनुमति देता है, जिससे आर्किटेक्चर के एक विशिष्ट सेट के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन और हार्डवेयर फॉल्ट इंजेक्शन दोनों की अनुमति मिलती है। उपकरण का उपयोग 1999 से बाजार में किया गया है और इसके ग्राहक अमेरिकी, एशियाई और यूरोपीय बाजारों में हैं, विशेष रूप से एयरोस्पेस और दूरसंचार बाजार के महत्वपूर्ण बाजार में। पूर्ण एक्ससेप्शन उत्पाद परिवार में शामिल हैं: ए) मुख्य एक्ससेप्शन टूल, सॉफ्टवेयर इम्प्लीमेंटेड फॉल्ट इंजेक्शन (एसडब्ल्यूआईएफआई) तकनीक में अत्याधुनिक लीडर; बी) ईज़ी फॉल्ट डेफिनिशन (ईएफडी) और एक्सट्रैक्ट (एक्सेप्शन एनालिसिस टूल) ऐड-ऑन टूल्स; c) स्कैन चेन और पिन-लेवल फोर्सिंग के लिए फॉल्ट इंजेक्शन एक्सटेंशन के साथ एक्सटेंडेड एक्ससेप्शन टूल (एक्ससेप्शन)।
पुस्तकालय
- libfiu (यूजरस्पेस में दोष इंजेक्शन), सी लाइब्रेरी स्रोत कोड को संशोधित किए बिना POSIX रूटीन में दोषों का अनुकरण करने के लिए। कार्यक्रम के किसी भी बिंदु पर रन-टाइम पर मनमाना दोषों का अनुकरण करने के लिए एक एपीआई शामिल है।
- TestApi एक साझा-स्रोत एपीआई लाइब्रेरी है, जो फॉल्ट इंजेक्शन परीक्षण के साथ-साथ .NET अनुप्रयोगों के लिए अन्य परीक्षण प्रकारों, डेटा-संरचनाओं और एल्गोरिदम के लिए सुविधाएं प्रदान करती है।
- Fuzzino एक ओपन सोर्स लाइब्रेरी है, जो एक प्रकार के विनिर्देश और/या मान्य मानों से उत्पन्न होने वाले फ़ज़िंग ह्यूरिस्टिक्स का एक समृद्ध सेट प्रदान करता है।
- krf एक खुला स्रोत लिनक्स कर्नेल मॉड्यूल है जो सिस्टम कॉल के लिए संभावित रूप से विफलता मान वापस करने के लिए एक विन्यास योग्य सुविधा प्रदान करता है। आगे ब्लॉग पोस्ट में समझाया गया है।
- nlfaultinjection को एक सरल, पोर्टेबल फॉल्ट इंजेक्शन फ्रेमवर्क प्रदान करने के लिए डिज़ाइन किया गया है, जो लगभग किसी भी सिस्टम पर चलने में सक्षम है, चाहे वह कितना भी सीमित क्यों न हो और केवल C मानक लाइब्रेरी पर निर्भर करता है।
कार्यात्मक गुणों या परीक्षण मामलों में दोष इंजेक्शन
पारंपरिक उत्परिवर्तन परीक्षण के विपरीत जहां उत्परिवर्ती दोष उत्पन्न होते हैं और मॉडल के कोड विवरण में इंजेक्ट किए जाते हैं, मॉडल कोड के बजाय सीधे मॉडल गुणों के लिए नए परिभाषित उत्परिवर्तन ऑपरेटरों की एक श्रृंखला के आवेदन की भी जांच की गई है।[29] उत्परिवर्ती गुण जो प्रारंभिक गुणों (या परीक्षण मामलों) से उत्पन्न होते हैं और मॉडल चेकर द्वारा मान्य किए जाते हैं, उन्हें नए गुणों के रूप में माना जाना चाहिए जो प्रारंभिक सत्यापन प्रक्रिया के दौरान छूट गए हैं। इसलिए, इन नई पहचान की गई संपत्तियों को संपत्तियों की मौजूदा सूची में जोड़ने से औपचारिक सत्यापन के कवरेज मीट्रिक में सुधार होता है और इसके परिणामस्वरूप एक अधिक विश्वसनीय डिजाइन तैयार होता है।
गलती इंजेक्शन का आवेदन
दोष इंजेक्शन कई रूप ले सकता है। उदाहरण के लिए ऑपरेटिंग सिस्टम के परीक्षण में, गलती इंजेक्शन अक्सर ड्राइवर (कर्नेल (कंप्यूटर साइंस) -मोड सॉफ़्टवेयर) द्वारा किया जाता है जो सिस्टम कॉल (कर्नेल में कॉल) को रोकता है और कुछ कॉलों के लिए यादृच्छिक रूप से विफलता लौटाता है। इस प्रकार का दोष इंजेक्शन निम्न-स्तरीय उपयोगकर्ता-मोड सॉफ़्टवेयर के परीक्षण के लिए उपयोगी है। उच्च स्तर के सॉफ़्टवेयर के लिए, विभिन्न विधियाँ दोषों को इंजेक्ट करती हैं। प्रबंधित कोड में, इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग) का उपयोग करना सामान्य है। हालांकि गलती इंजेक्शन हाथ से किया जा सकता है, गलती इंजेक्शन की प्रक्रिया को स्वचालित करने के लिए कई गलती इंजेक्शन उपकरण मौजूद हैं।[30]
उस स्तर के लिए एपीआई की जटिलता के आधार पर जहां दोष इंजेक्ट किए जाते हैं, गलती इंजेक्शन परीक्षणों को अक्सर झूठी सकारात्मकता की संख्या को कम करने के लिए सावधानीपूर्वक डिज़ाइन किया जाना चाहिए। यहां तक कि एक अच्छी तरह से डिज़ाइन किया गया दोष इंजेक्शन परीक्षण भी कभी-कभी ऐसी स्थिति उत्पन्न कर सकता है जो सॉफ़्टवेयर के सामान्य संचालन में असंभव है। उदाहरण के लिए, कल्पना कीजिए कि दो एपीआई फ़ंक्शन (कंप्यूटर साइंस) हैं, Commit
और PrepareForCommit
, जैसे कि अकेले, इनमें से प्रत्येक कार्य संभवतः विफल हो सकता है, लेकिन यदि PrepareForCommit
कॉल किया जाता है और सफल होता है, बाद की कॉल Commit
सफल होने की गारंटी है। अब निम्नलिखित कोड पर विचार करें:
<वाक्यविन्यास प्रकाश लैंग = सी>
त्रुटि = तैयारफॉरकॉमिट (); अगर (त्रुटि == सफलता) { त्रुटि = प्रतिबद्ध (); मुखर (त्रुटि == सफलता); }
</वाक्यविन्यास हाइलाइट>
अक्सर, यह सुनिश्चित करने के लिए पर्याप्त स्थिति का ट्रैक रखने के लिए गलती इंजेक्शन कार्यान्वयन के लिए अक्षम होगा कि एपीआई फ़ंक्शन बनाते हैं। इस उदाहरण में, उपरोक्त कोड का एक दोष इंजेक्शन परीक्षण अभिकथन (कंप्यूटिंग) को हिट कर सकता है, जबकि सामान्य ऑपरेशन में ऐसा कभी नहीं होगा।
यह भी देखें
- Bebugging
- उत्परिवर्तन परीक्षण
- अराजकता इंजीनियरिंग
संदर्भ
- ↑ 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.