दोष इंजेक्शन

From alpha
Jump to navigation Jump to search

कंप्यूटर विज्ञान में, फॉल्ट इंजेक्शन यह समझने के लिए एक परीक्षण तकनीक है कि असामान्य तरीकों से तनाव होने पर कंप्यूटिंग सिस्टम कैसे व्यवहार करते हैं। इसे भौतिक- या सॉफ़्टवेयर-आधारित साधनों का उपयोग करके, या हाइब्रिड दृष्टिकोण का उपयोग करके प्राप्त किया जा सकता है।[1] व्यापक रूप से अध्ययन किए गए भौतिक दोष इंजेक्शन में स्मृति और केंद्रीय प्रसंस्करण इकाइयों जैसे इलेक्ट्रॉनिक घटकों पर उच्च वोल्टेज, अत्यधिक तापमान और विद्युत चुम्बकीय दालों का अनुप्रयोग शामिल है।[2][3] घटकों को उनकी इच्छित परिचालन सीमा से परे स्थितियों में उजागर करके, कंप्यूटिंग सिस्टम को निर्देशों को गलत तरीके से निष्पादित करने और महत्वपूर्ण डेटा को दूषित करने के लिए मजबूर किया जा सकता है।

सॉफ्टवेयर परीक्षण में, फॉल्ट इंजेक्शन परीक्षण कोड पथों में दोष पेश करके परीक्षण के कोड कवरेज़ में सुधार करने की एक तकनीक है; विशेष रूप से त्रुटि प्रबंधन कोड पथों में, जिनका अन्यथा शायद ही कभी पालन किया जा सकता है। इसका उपयोग अक्सर तनाव परीक्षण के साथ किया जाता है और इसे व्यापक रूप से रोबस्टनेस (कंप्यूटर विज्ञान) सॉफ़्टवेयर विकसित करने का एक महत्वपूर्ण हिस्सा माना जाता है।[4] मजबूती परीक्षण[5] (सिंटैक्स परीक्षण, फ़ज़िंग या फ़ज़ परीक्षण के रूप में भी जाना जाता है) एक प्रकार का दोष इंजेक्शन है जिसका उपयोग आमतौर पर प्रोटोकॉल, कमांड लाइन पैरामीटर या एपीआई जैसे संचार इंटरफेस में कमजोरियों के परीक्षण के लिए किया जाता है।

किसी दोष का प्रेक्षणीय विफलता तक प्रसार एक सुपरिभाषित चक्र का अनुसरण करता है। निष्पादित होने पर, किसी गलती के कारण त्रुटि हो सकती है, जो सिस्टम सीमा के भीतर एक अमान्य स्थिति है। एक त्रुटि सिस्टम सीमा के भीतर और त्रुटियों का कारण बन सकती है, इसलिए प्रत्येक नई त्रुटि एक गलती के रूप में कार्य करती है, या यह सिस्टम सीमा तक फैल सकती है और देखने योग्य हो सकती है। जब सिस्टम सीमा पर त्रुटि स्थिति देखी जाती है तो उन्हें विफलता कहा जाता है। इस तंत्र को दोष-त्रुटि-विफलता चक्र कहा जाता है[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 उपकरण विकसित किए गए हैं और इन उपकरणों का चयन यहां दिया गया है। आमतौर पर उपयोग किए जाने वाले छह दोष इंजेक्शन उपकरण फेरारी, एफटीएपीई, डॉक्टर, ऑर्केस्ट्रा, एक्सेप्शन और ग्रिड-फिट हैं।

  • MODIFI (मॉडल-इम्प्लीमेंटेड फॉल्ट इंजेक्शन) सिमुलिंक व्यवहार मॉडल की मजबूती के मूल्यांकन के लिए एक गलती इंजेक्शन उपकरण है। यह डोमेन-विशिष्ट फ़ॉल्ट मॉडल के कार्यान्वयन के लिए XML में फ़ॉल्ट मॉडलिंग का समर्थन करता है।[11]
  • फेरारी (फॉल्ट और एरर या ऑटोमैटिक रीयल-टाइम इंजेक्शन) सॉफ्टवेयर ट्रैप पर आधारित है जो सिस्टम में त्रुटियों को इंजेक्ट करता है। ट्रैप या तो किसी विशिष्ट मेमोरी स्थान पर कॉल या टाइमआउट द्वारा सक्रिय होते हैं। जब जाल को बुलाया जाता है तो हैंडलर सिस्टम में एक खराबी डाल देता है। दोष या तो क्षणिक या स्थायी हो सकते हैं। फेरारी के साथ किए गए शोध से पता चलता है कि त्रुटि का पता लगाना गलती के प्रकार और गलती कहां डाली गई है, इस पर निर्भर करती है।[12]
  • FTAPE (फ़ॉल्ट टॉलरेंस एंड परफॉर्मेंस इवैल्यूएटर) न केवल मेमोरी और रजिस्टरों में, बल्कि डिस्क एक्सेस में भी दोष डाल सकता है। यह सिस्टम में एक विशेष डिस्क ड्राइवर को सम्मिलित करके प्राप्त किया जाता है जो डिस्क इकाई से भेजे और प्राप्त किए गए डेटा में दोष डाल सकता है। FTAPE में एक सिंथेटिक लोड यूनिट भी है जो मजबूती परीक्षण उद्देश्यों के लिए विशिष्ट मात्रा में लोड का अनुकरण कर सकती है।[13]
  • डॉक्टर (इंटीग्रेटडी सॉफ्टवेयर फॉल्ट इंजेक्शन एनवायरनमेंट) मेमोरी के इंजेक्शन और दोषों को रजिस्टर करने के साथ-साथ नेटवर्क संचार दोषों की भी अनुमति देता है। यह टाइम-आउट, ट्रैप और कोड संशोधन के संयोजन का उपयोग करता है। टाइम-आउट ट्रिगर्स क्षणिक मेमोरी दोषों को इंजेक्ट करते हैं और ट्रैप्स रजिस्टर भ्रष्टाचार जैसे क्षणिक अनुकरणीय हार्डवेयर विफलताओं को इंजेक्ट करते हैं। कोड संशोधन का उपयोग स्थायी दोषों को इंजेक्ट करने के लिए किया जाता है।[14]
  • ऑर्केस्ट्रा एक स्क्रिप्ट-संचालित फॉल्ट इंजेक्टर है जो नेटवर्क लेवल फॉल्ट इंजेक्शन पर आधारित है। इसका प्राथमिक उपयोग वितरित प्रोटोकॉल की दोष-सहिष्णुता और समय विशेषताओं का मूल्यांकन और सत्यापन है। ऑर्केस्ट्रा को शुरू में मैक ऑपरेटिंग सिस्टम के लिए विकसित किया गया था और दोष इंजेक्टर द्वारा शुरू की गई विलंबता की भरपाई के लिए इस प्लेटफ़ॉर्म की कुछ विशेषताओं का उपयोग करता है। इसे अन्य ऑपरेटिंग सिस्टम में भी सफलतापूर्वक पोर्ट किया गया है।[15]
  • एक्ससेप्शन को कई आधुनिक प्रोसेसर पर उपलब्ध उन्नत डिबगिंग सुविधाओं का लाभ उठाने के लिए डिज़ाइन किया गया है। यह लिखा गया है कि सिस्टम स्रोत में किसी संशोधन की आवश्यकता नहीं है और न ही सॉफ़्टवेयर ट्रैप को सम्मिलित करने की आवश्यकता है, क्योंकि प्रोसेसर की अपवाद हैंडलिंग क्षमताएं गलती इंजेक्शन को ट्रिगर करती हैं। ये ट्रिगर विशिष्ट मेमोरी स्थानों तक पहुंच पर आधारित हैं। ऐसी पहुंच या तो डेटा के लिए हो सकती है या निर्देश प्राप्त करने के लिए हो सकती है। इसलिए परीक्षण रन को सटीक रूप से पुन: उत्पन्न करना संभव है क्योंकि ट्रिगर को टाइमआउट के बजाय विशिष्ट घटनाओं से जोड़ा जा सकता है।[7]* ग्रिड-फिट (ग्रिड - फॉल्ट इंजेक्शन टेक्नोलॉजी)[16] गलती इंजेक्शन द्वारा ग्रिड सेवाओं का आकलन करने के लिए एक निर्भरता मूल्यांकन विधि और उपकरण है। ग्रिड-FIT एक पुराने फॉल्ट इंजेक्टर WS-FIT से लिया गया है[17] जिसे अपाचे एक्सिस ट्रांसपोर्ट का उपयोग करके कार्यान्वित जावा वेब सेवाओं की ओर लक्षित किया गया था। ग्रिड-एफआईटी एक नवीन फॉल्ट इंजेक्शन तंत्र का उपयोग करता है जो कम आक्रामक होते हुए भी कोड इंसर्शन फॉल्ट इंजेक्शन के समान नियंत्रण स्तर देने के लिए नेटवर्क-स्तरीय फॉल्ट इंजेक्शन का उपयोग करने की अनुमति देता है।[18]
  • एलएफआई (लाइब्रेरी-स्तरीय फॉल्ट इंजेक्टर)[19] एक स्वचालित परीक्षण उपकरण सूट है, जिसका उपयोग नियंत्रित परीक्षण वातावरण में असाधारण परिस्थितियों का अनुकरण करने के लिए किया जाता है, जिन्हें प्रोग्राम को रनटाइम पर संभालने की आवश्यकता होती है, लेकिन अकेले इनपुट परीक्षण के माध्यम से जांचना आसान नहीं होता है। एलएफआई स्वचालित रूप से साझा पुस्तकालयों द्वारा उजागर की गई त्रुटियों की पहचान करता है, प्रोग्राम बायनेरिज़ में संभावित रूप से खराब त्रुटि पुनर्प्राप्ति कोड ढूंढता है और साझा पुस्तकालयों और अनुप्रयोगों के बीच की सीमा पर वांछित दोषों को इंजेक्ट करता है।
  • FIBlock (फॉल्ट इंजेक्शन ब्लॉक),[20] एक मॉडल-आधारित दोष इंजेक्शन विधि को अत्यधिक अनुकूलन योग्य सिमुलिंक ब्लॉक के रूप में कार्यान्वित किया गया है। यह सेंसर, कंप्यूटिंग हार्डवेयर और नेटवर्क जैसे साइबर-भौतिक प्रणालियों के आवश्यक विषम घटकों के विशिष्ट दोषों को MATLAB सिमुलिंक मॉडल में इंजेक्शन का समर्थन करता है। ब्लॉक के अतिरिक्त ट्रिगर इनपुट और आउटपुट सशर्त दोषों के मॉडलिंग को सक्षम करते हैं। इसके अलावा, ट्रिगर सिग्नल से जुड़े दो या दो से अधिक FIBlocks तथाकथित जंजीर त्रुटियों को मॉडल कर सकते हैं।

वाणिज्यिक उपकरण

  • सिक्योरिटी बेस्टस्टॉर्म से परे[21] एक व्यावसायिक सॉफ़्टवेयर परीक्षण#परीक्षण दृष्टिकोण सॉफ़्टवेयर सुरक्षा विश्लेषण उपकरण है। इसका उपयोग अक्सर मूल उपकरण निर्माताओं द्वारा विकास के दौरान किया जाता है, लेकिन कार्यान्वयन से पहले उत्पादों के परीक्षण के लिए भी इसका उपयोग किया जाता है, विशेष रूप से एयरोस्पेस, बैंकिंग और रक्षा में। beSTORM की परीक्षण प्रक्रिया सबसे संभावित हमले के परिदृश्यों से शुरू होती है, फिर संपूर्ण पीढ़ी आधारित फ़ज़ परीक्षण का सहारा लेती है। beSTORM सामान्य प्रोटोकॉल और 'ऑटो लर्न' नए या मालिकाना प्रोटोकॉल के लिए मॉड्यूल प्रदान करता है, जिसमें उत्परिवर्तन-आधारित हमले भी शामिल हैं। मुख्य विशेषताएं: बाइनरी और टेक्स्टुअल विश्लेषण, कस्टम प्रोटोकॉल परीक्षण, डिबगिंग और स्टैक ट्रेसिंग, विकास भाषा स्वतंत्र, सीवीई अनुरूप।
  • ExhaustiF एक व्यावसायिक सॉफ़्टवेयर उपकरण है जिसका उपयोग सॉफ़्टवेयर-गहन प्रणालियों की विश्वसनीयता में सुधार के लिए सॉफ़्टवेयर फ़ॉल्ट इंजेक्शन (SWIFI) पर आधारित ग्रे बॉक्स परीक्षण के लिए किया जाता है। टूल का उपयोग किसी भी सॉफ़्टवेयर विकास जीवनचक्र के सिस्टम एकीकरण और सिस्टम परीक्षण चरणों के दौरान किया जा सकता है, साथ ही अन्य परीक्षण टूल का पूरक भी हो सकता है। ExhaustiF सॉफ़्टवेयर और हार्डवेयर दोनों में दोष उत्पन्न करने में सक्षम है। सॉफ़्टवेयर में सिम्युलेटेड दोष इंजेक्ट करते समय, ExhaustiF निम्नलिखित दोष प्रकार प्रदान करता है: परिवर्तनीय भ्रष्टाचार और प्रक्रिया भ्रष्टाचार। हार्डवेयर दोष इंजेक्शन के कैटलॉग में मेमोरी (आई/ओ, रैम) और सीपीयू (इंटीजर यूनिट, फ्लोटिंग यूनिट) में दोष शामिल हैं। आरटीईएमएस/ईआरसी32, आरटीईएमएस/पेंटियम, लिनक्स/पेंटियम और एमएस-विंडोज/पेंटियम के लिए अलग-अलग संस्करण उपलब्ध हैं।[22]
  • होलोडेक[23] सिक्योरिटी इनोवेशन द्वारा विकसित एक परीक्षण उपकरण है जो विंडोज़ अनुप्रयोगों और सेवाओं के लिए वास्तविक दुनिया के एप्लिकेशन और सिस्टम त्रुटियों का अनुकरण करने के लिए फॉल्ट इंजेक्शन का उपयोग करता है। होलोडेक के ग्राहकों में माइक्रोसॉफ्ट, सिमेंटेक, ईएमसी और एडोब सहित कई प्रमुख वाणिज्यिक सॉफ्टवेयर विकास कंपनियां शामिल हैं। यह एक नियंत्रित, दोहराने योग्य वातावरण प्रदान करता है जिसमें नाजुकता और सुरक्षा परीक्षण के लिए त्रुटि-हैंडलिंग कोड और एप्लिकेशन अटैक सतहों का विश्लेषण और डिबग किया जा सकता है। यह फ़ाइल और नेटवर्क फ़ज़िंग दोषों के साथ-साथ अन्य संसाधन, सिस्टम और कस्टम-परिभाषित दोषों की एक विस्तृत श्रृंखला का अनुकरण करता है। यह कोड का विश्लेषण करता है और परीक्षण योजनाओं की सिफारिश करता है और फ़ंक्शन कॉल लॉगिंग, एपीआई इंटरसेप्शन, तनाव परीक्षण, कोड कवरेज विश्लेषण और कई अन्य एप्लिकेशन सुरक्षा आश्वासन कार्य भी करता है।
  • प्रूफ़डॉक के कैओस इंजीनियरिंग प्लेटफ़ॉर्म का फोकस Microsoft Azure क्लाउड प्लेटफ़ॉर्म पर है। यह बुनियादी ढांचे के स्तर, प्लेटफ़ॉर्म स्तर और एप्लिकेशन स्तर पर विफलताओं को इंजेक्ट करता है।
  • ग्रेमलिन एक सेवा के रूप में विफलता मंच है जो कंपनियों को अराजकता इंजीनियरिंग के अभ्यास के माध्यम से अधिक लचीलापन (नेटवर्क) सिस्टम बनाने में मदद करता है। ग्रेमलिन अज्ञात दोषों को सक्रिय रूप से पहचानने और ठीक करने के लिए सिस्टम में विफलता को सुरक्षित रूप से इंजेक्ट करके तीन श्रेणियों - कम्प्यूटेशनल संसाधन, दूरसंचार नेटवर्क और राज्य (कंप्यूटर विज्ञान) में सबसे आम विफलताओं को फिर से बनाता है।
  • कोडनोमिकॉन डिफेंसिक्स[24] एक ब्लैक-बॉक्स टेस्ट ऑटोमेशन फ्रेमवर्क है जो नेटवर्क प्रोटोकॉल, एपीआई इंटरफेस, फाइलों और एक्सएमएल संरचनाओं सहित 150 से अधिक विभिन्न इंटरफेस में गलती इंजेक्शन करता है। सॉफ्टवेयर फॉल्ट इंजेक्शन के क्षेत्र में औलू विश्वविद्यालय में पांच साल के शोध के बाद, 2001 में वाणिज्यिक उत्पाद लॉन्च किया गया था। प्रयुक्त फ़ज़िंग सिद्धांतों की व्याख्या करने वाला एक थीसिस कार्य PROTOS कंसोर्टियम सदस्यों में से एक, VTT द्वारा प्रकाशित किया गया था।[5]* म्यू सेवा विश्लेषक[25] गतिशीलता में द्वारा विकसित एक व्यावसायिक सेवा परीक्षण उपकरण है।[26] म्यू सर्विस एनालाइजर सॉफ्टवेयर टेस्टिंग#टेस्टिंग दृष्टिकोण और सॉफ्टवेयर टेस्टिंग#टेस्टिंग अप्रोच सेवाओं का उनके उजागर सॉफ्टवेयर इंटरफेस के आधार पर परीक्षण करता है, सेवा से इनकार सिमुलेशन, सेवा-स्तरीय ट्रैफ़िक विविधताओं (अमान्य इनपुट उत्पन्न करने के लिए) और ज्ञात के रीप्ले का उपयोग करता है। भेद्यता ट्रिगर. ये सभी तकनीकें इनपुट सत्यापन और त्रुटि प्रबंधन का अभ्यास करती हैं और सॉफ्टवेयर सिस्टम पर परीक्षण ट्रैफ़िक के प्रभावों को चिह्नित करने के लिए वैध प्रोटोकॉल मॉनिटर और एसएनएमपी के साथ संयोजन में उपयोग की जाती हैं। म्यू सर्विस एनालाइज़र उपयोगकर्ताओं को किसी भी उजागर प्रोटोकॉल कार्यान्वयन के लिए सिस्टम-स्तरीय विश्वसनीयता, उपलब्धता और सुरक्षा मेट्रिक्स स्थापित करने और ट्रैक करने की अनुमति देता है। यह उपकरण 2005 से उत्तरी अमेरिका, एशिया और यूरोप में ग्राहकों के लिए बाजार में उपलब्ध है, विशेष रूप से नेटवर्क ऑपरेटरों (और उनके विक्रेताओं) और औद्योगिक नियंत्रण प्रणालियों (महत्वपूर्ण बुनियादी ढांचे सहित) के महत्वपूर्ण बाजारों में।
  • अपवाद[27] क्रिटिकल सॉफ्टवेयर एसए द्वारा विकसित एक व्यावसायिक सॉफ्टवेयर टूल है[28] सॉफ़्टवेयर परीक्षण#परीक्षण दृष्टिकोण और सॉफ़्टवेयर परीक्षण#परीक्षण दृष्टिकोण परीक्षण के लिए सॉफ़्टवेयर फ़ॉल्ट इंजेक्शन (SWIFI) और स्कैन चेन फ़ॉल्ट इंजेक्शन (SCIFI) पर आधारित उपयोग किया जाता है। एक्ससेप्शन उपयोगकर्ताओं को अपने सिस्टम या उसके कुछ हिस्से की मजबूती का परीक्षण करने की अनुमति देता है, जिससे आर्किटेक्चर के एक विशिष्ट सेट के लिए सॉफ्टवेयर फॉल्ट इंजेक्शन और हार्डवेयर फॉल्ट इंजेक्शन दोनों की अनुमति मिलती है। यह उपकरण 1999 से बाजार में उपयोग किया जा रहा है और इसके अमेरिकी, एशियाई और यूरोपीय बाजारों में ग्राहक हैं, विशेष रूप से एयरोस्पेस और दूरसंचार बाजार के महत्वपूर्ण बाजार में। पूर्ण एक्सेप्शन उत्पाद परिवार में शामिल हैं: ए) मुख्य एक्सेप्शन टूल, सॉफ्टवेयर इंप्लीमेंटेड फॉल्ट इंजेक्शन (एसडब्ल्यूआईएफआई) तकनीक में अत्याधुनिक नेता; बी) ईज़ी फॉल्ट डेफिनिशन (ईएफडी) और एक्सट्रैक्ट (एक्सेप्शन एनालिसिस टूल) ऐड-ऑन टूल; सी) स्कैन चेन और पिन-लेवल फोर्सिंग के लिए फॉल्ट इंजेक्शन एक्सटेंशन के साथ विस्तारित एक्सेप्शन टूल (ईएक्सेप्शन)।
  • AWS फॉल्ट इंजेक्शन सर्विस अमेज़ॅन वेब सेवाओं पर फॉल्ट इंजेक्शन प्रयोगों को चलाने के लिए एक पूरी तरह से प्रबंधित सेवा है जो किसी एप्लिकेशन के प्रदर्शन, अवलोकन और लचीलेपन में सुधार करना आसान बनाती है। फॉल्ट इंजेक्शन प्रयोगों का उपयोग कैओस इंजीनियरिंग में किया जाता है, जो विघटनकारी घटनाओं जैसे कि सीपीयू या मेमोरी खपत में अचानक वृद्धि, सिस्टम कैसे प्रतिक्रिया करता है, और सुधारों को लागू करके परीक्षण या उत्पादन वातावरण में किसी एप्लिकेशन पर जोर देने का अभ्यास है।

पुस्तकालय

  • libfiu (यूजरस्पेस में फॉल्ट इंजेक्शन), स्रोत कोड को संशोधित किए बिना POSIX रूटीन में दोषों का अनुकरण करने के लिए सी लाइब्रेरी। प्रोग्राम के किसी भी बिंदु पर रन-टाइम पर मनमाने दोषों का अनुकरण करने के लिए एक एपीआई शामिल किया गया है।
  • TestApi एक साझा-स्रोत एपीआई लाइब्रेरी है, जो .NET अनुप्रयोगों के लिए फॉल्ट इंजेक्शन परीक्षण के साथ-साथ अन्य परीक्षण प्रकारों, डेटा-संरचनाओं और एल्गोरिदम की सुविधाएं प्रदान करती है।
  • Fuzzino एक ओपन सोर्स लाइब्रेरी है, जो फ़ज़िंग अनुमानों का एक समृद्ध सेट प्रदान करती है जो एक प्रकार के विनिर्देश और/या मान्य मानों से उत्पन्न होते हैं।
  • krf एक खुला स्रोत लिनक्स कर्नेल मॉड्यूल है जो सिस्टम कॉल के लिए विफलता मानों को संभावित रूप से वापस करने के लिए एक कॉन्फ़िगर करने योग्य सुविधा प्रदान करता है। ब्लॉग पोस्ट में आगे बताया गया है।
  • nlfaultinjection को एक सरल, पोर्टेबल फॉल्ट इंजेक्शन फ्रेमवर्क प्रदान करने के लिए डिज़ाइन किया गया है, जो किसी भी सिस्टम पर चलने में सक्षम है, चाहे कितना भी बाधित हो और केवल सी स्टैंडर्ड लाइब्रेरी पर निर्भर करता है।

कार्यात्मक गुणों या परीक्षण मामलों में दोष इंजेक्शन

पारंपरिक उत्परिवर्तन परीक्षण के विपरीत जहां उत्परिवर्ती दोष उत्पन्न होते हैं और मॉडल के कोड विवरण में इंजेक्ट किए जाते हैं, मॉडल कोड के बजाय सीधे मॉडल गुणों पर नए परिभाषित उत्परिवर्तन ऑपरेटरों की एक श्रृंखला के अनुप्रयोग की भी जांच की गई है।[29] उत्परिवर्ती गुण जो प्रारंभिक गुणों (या परीक्षण मामलों) से उत्पन्न होते हैं और मॉडल चेकर द्वारा मान्य होते हैं, उन्हें नए गुणों के रूप में माना जाना चाहिए जो प्रारंभिक सत्यापन प्रक्रिया के दौरान छूट गए हैं। इसलिए, इन नई पहचानी गई संपत्तियों को संपत्तियों की मौजूदा सूची में जोड़ने से औपचारिक सत्यापन की कवरेज मीट्रिक में सुधार होता है और परिणामस्वरूप अधिक विश्वसनीय डिज़ाइन प्राप्त होता है।

दोष इंजेक्शन का अनुप्रयोग

दोष इंजेक्शन कई रूप ले सकता है। उदाहरण के लिए ऑपरेटिंग सिस्टम के परीक्षण में, गलती इंजेक्शन अक्सर ड्राइवर (कर्नेल (कंप्यूटर विज्ञान) -मोड सॉफ़्टवेयर) द्वारा किया जाता है जो सिस्टम कॉल (कर्नेल में कॉल) को रोकता है और कुछ कॉलों के लिए यादृच्छिक रूप से विफलता लौटाता है। इस प्रकार का दोष इंजेक्शन निम्न-स्तरीय उपयोगकर्ता-मोड सॉफ़्टवेयर के परीक्षण के लिए उपयोगी है। उच्च स्तरीय सॉफ़्टवेयर के लिए, विभिन्न विधियाँ दोष उत्पन्न करती हैं। प्रबंधित कोड में, इंस्ट्रूमेंटेशन (कंप्यूटर प्रोग्रामिंग) का उपयोग करना आम है। हालाँकि फ़ॉल्ट इंजेक्शन हाथ से किया जा सकता है, फ़ॉल्ट इंजेक्शन की प्रक्रिया को स्वचालित करने के लिए कई फ़ॉल्ट इंजेक्शन उपकरण मौजूद हैं।[30] जिस स्तर पर दोष इंजेक्ट किए जाते हैं, उसके लिए एपीआई की जटिलता के आधार पर, गलत सकारात्मकता की संख्या को कम करने के लिए गलती इंजेक्शन परीक्षणों को अक्सर सावधानीपूर्वक डिजाइन किया जाना चाहिए। यहां तक ​​कि एक अच्छी तरह से डिज़ाइन किया गया दोष इंजेक्शन परीक्षण भी कभी-कभी ऐसी स्थितियाँ उत्पन्न कर सकता है जो सॉफ़्टवेयर के सामान्य संचालन में असंभव हैं। उदाहरण के लिए, कल्पना करें कि दो एपीआई फ़ंक्शन (कंप्यूटर विज्ञान) हैं, Commit और PrepareForCommit, जैसे कि अकेले, इनमें से प्रत्येक फ़ंक्शन संभवतः विफल हो सकता है, लेकिन यदि PrepareForCommit कॉल किया जाता है और सफल होता है, बाद में कॉल किया जाता है Commit सफल होने की गारंटी है. अब निम्नलिखित कोड पर विचार करें:

  error = PrepareForCommit();
  if (error == SUCCESS) {
    error = Commit();
    assert(error == SUCCESS);
  }

अक्सर, एपीआई फ़ंक्शंस की गारंटी के लिए पर्याप्त स्थिति का ट्रैक रखना फ़ॉल्ट इंजेक्शन कार्यान्वयन के लिए संभव नहीं होगा। इस उदाहरण में, उपरोक्त कोड का दोष इंजेक्शन परीक्षण अभिकथन (कंप्यूटिंग) को प्रभावित कर सकता है, जबकि सामान्य ऑपरेशन में ऐसा कभी नहीं होगा।

यह भी देखें

संदर्भ

  1. Moradi, Mehrdad; Van Acker, Bert; Vanherpen, Ken; Denil, Joachim (2019). "Model-Implemented Hybrid Fault Injection for Simulink (Tool Demonstrations)". In Chamberlain, Roger; Taha, Walid; Törngren, Martin (eds.). साइबर फिजिकल सिस्टम. मॉडल-आधारित डिज़ाइन. Lecture Notes in Computer Science. Vol. 11615. Springer International Publishing. pp. 71–90. doi:10.1007/978-3-030-23703-5_4. ISBN 9783030237035. S2CID 195769468.
  2. 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". Computers & Security. Elsevier. 111 (102471): 102471. arXiv:2105.04454. doi:10.1016/j.cose.2021.102471. S2CID 236957400.
  3. Bar-El, Hagai; Choukri, Hamid; Naccache, David; Tunstall, Michael; Whelan, Claire (2004). "गलती से होने वाले हमलों के लिए जादूगर की प्रशिक्षु मार्गदर्शिका". Proceedings of the IEEE. IEEE. 94 (2): 370–382. doi:10.1109/JPROC.2005.862424. S2CID 2397174.
  4. J. Voas, "Fault Injection for the Masses," Computer, vol. 30, pp. 129–130, 1997.
  5. 5.0 5.1 Kaksonen, Rauli. A Functional Method for Assessing Protocol Implementation Security. 2001.
  6. 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. 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.
  8. Benso, Alfredo; Prinetto, Paolo, eds. (2003). एंबेडेड सिस्टम विश्वसनीयता मूल्यांकन के लिए दोष इंजेक्शन तकनीक और उपकरण. Frontiers in Electronic Testing. Springer US. ISBN 978-1-4020-7589-6.
  9. "Optimizing fault injection in FMI co-simulation through sensitivity partitioning | Proceedings of the 2019 Summer Simulation Conference". dl.acm.org. Retrieved 2020-06-14.
  10. 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.
  11. 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.
  12. 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.
  13. T. Tsai and R. Iyer, "FTAPE: A Fault Injection Tool to Measure Fault Tolerance," presented at Computing in aerospace, San Antonio; TX, 1995.
  14. 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.
  15. 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.
  16. Grid-FIT Web-site Archived 2 February 2008 at the Wayback Machine
  17. 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.
  18. 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.
  19. LFI Website
  20. Flatag (2020-05-16), Flatag/FIBlock, retrieved 2020-05-16
  21. beSTORM product information
  22. ExhaustiF SWIFI Tool Site
  23. Holodeck product overview Archived 13 October 2008 at the Wayback Machine
  24. Codenomicon Defensics product overview
  25. Mu Service Analyzer
  26. Mu Dynamics, Inc.
  27. Xception Web Site
  28. Critical Software SA
  29. 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.
  30. N. Looker, M. Munro, and J. Xu, "Simulating Errors in Web Services," International Journal of Simulation Systems, Science & Technology, vol. 5, 2004.


बाहरी संबंध