फज़िंग: Difference between revisions

From Vigyanwiki
No edit summary
No edit summary
 
(3 intermediate revisions by 3 users not shown)
Line 4: Line 4:
[[कंप्यूटर प्रोग्राम|प्रोग्रामिंग]] और सॉफ्टवेयर विकास में, '''फज़िंग''' या फ़ज़ परीक्षण एक स्वचालित [[सॉफ़्टवेयर परीक्षण]] तकनीक होती है जिसमें कंप्यूटर प्रोग्राम में इनपुट के रूप में अमान्य, अप्रत्याशित या [[यादृच्छिक डेटा]] प्रदान करना सम्मलित होता है। इसके बाद [[क्रैश (कंप्यूटिंग)]], बिल्ट-इन कोड [[अभिकथन (सॉफ्टवेयर विकास)]], या संभावित [[ स्मृति रिसाव |स्मृति रिसाव]] जैसे अपवादों के लिए कार्यक्रम की निगरानी की जाती है। सामान्यतः, फ़ज़र्स का उपयोग उन प्रोग्रामों का परीक्षण करने के लिए किया जाता है जो संरचित इनपुट लेते है। यह संरचना निर्दिष्ट होती है, उदाहरण के लिए, फ़ाइल प्रारूप या [[संचार प्रोटोकॉल|संचार प्रोटो]] में और अमान्य इनपुट से मान्य इनपुट को अलग करती है। एक प्रभावी फ़ज़र अर्ध-वैध इनपुट उत्पन्न करता है जो पर्याप्त रूप से मान्य इनपुट होते है, जिसमें वे सीधे पार्सर द्वारा अस्वीकार नहीं किए जाते है, लेकिन प्रोग्राम में गहरे अनपेक्षित व्यवहार बनाते है।
[[कंप्यूटर प्रोग्राम|प्रोग्रामिंग]] और सॉफ्टवेयर विकास में, '''फज़िंग''' या फ़ज़ परीक्षण एक स्वचालित [[सॉफ़्टवेयर परीक्षण]] तकनीक होती है जिसमें कंप्यूटर प्रोग्राम में इनपुट के रूप में अमान्य, अप्रत्याशित या [[यादृच्छिक डेटा]] प्रदान करना सम्मलित होता है। इसके बाद [[क्रैश (कंप्यूटिंग)]], बिल्ट-इन कोड [[अभिकथन (सॉफ्टवेयर विकास)]], या संभावित [[ स्मृति रिसाव |स्मृति रिसाव]] जैसे अपवादों के लिए कार्यक्रम की निगरानी की जाती है। सामान्यतः, फ़ज़र्स का उपयोग उन प्रोग्रामों का परीक्षण करने के लिए किया जाता है जो संरचित इनपुट लेते है। यह संरचना निर्दिष्ट होती है, उदाहरण के लिए, फ़ाइल प्रारूप या [[संचार प्रोटोकॉल|संचार प्रोटो]] में और अमान्य इनपुट से मान्य इनपुट को अलग करती है। एक प्रभावी फ़ज़र अर्ध-वैध इनपुट उत्पन्न करता है जो पर्याप्त रूप से मान्य इनपुट होते है, जिसमें वे सीधे पार्सर द्वारा अस्वीकार नहीं किए जाते है, लेकिन प्रोग्राम में गहरे अनपेक्षित व्यवहार बनाते है।


सुरक्षा के उद्देश्य से, एक [[विश्वास सीमा]] को पार करने वाला इनपुट अधिकांशतः सबसे उपयोगी होता है।<ref name="neystadt"/> उदाहरण के लिए, फ़ज़ कोड के लिए यह अधिक महत्वपूर्ण है जो किसी भी उपयोगकर्ता द्वारा फ़ाइल के अपलोड को संभालता है, उस कोड को फ़ज़ करता है जो विन्यास फाइल को पार्स करता है जो केवल एक विशेषाधिकार उपयोगकर्ता के योग्य होता है।ka
सुरक्षा के उद्देश्य से, एक [[विश्वास सीमा]] को पार करने वाला इनपुट अधिकांशतः सबसे उपयोगी होता है।<ref name="neystadt"/> उदाहरण के लिए, फ़ज़ कोड के लिए यह अधिक महत्वपूर्ण है जो किसी भी उपयोगकर्ता द्वारा फ़ाइल के अपलोड को संभालता है, उस कोड को फ़ज़ करता है जो विन्यास फाइल को पार्स करता है जो केवल एक विशेषाधिकार उपयोगकर्ता के योग्य होता है।


== इतिहास ==
== इतिहास ==
Line 276: Line 276:


{{Software testing}}
{{Software testing}}
[[Category: सॉफ़्टवेयर परीक्षण]] [[Category: सुरक्षा परीक्षण]]


 
[[Category:All articles with lists with data missing]]
 
[[Category:Articles with hatnote templates targeting a nonexistent page]]
[[Category: Machine Translated Page]]
[[Category:Articles with invalid date parameter in template]]
[[Category:CS1 Deutsch-language sources (de)]]
[[Category:CS1 English-language sources (en)]]
[[Category:Collapse templates]]
[[Category:Created On 11/05/2023]]
[[Category:Created On 11/05/2023]]
[[Category:Data missing from March 2023]]
[[Category:Lua-based templates]]
[[Category:Machine Translated Page]]
[[Category:Navigational boxes| ]]
[[Category:Navigational boxes without horizontal lists]]
[[Category:Pages with script errors]]
[[Category:Sidebars with styles needing conversion]]
[[Category:Template documentation pages|Documentation/doc]]
[[Category:Templates Vigyan Ready]]
[[Category:Templates generating microformats]]
[[Category:Templates that add a tracking category]]
[[Category:Templates that are not mobile friendly]]
[[Category:Templates that generate short descriptions]]
[[Category:Templates using TemplateData]]
[[Category:Wikipedia metatemplates]]
[[Category:सुरक्षा परीक्षण]]
[[Category:सॉफ़्टवेयर परीक्षण]]

Latest revision as of 15:54, 29 May 2023

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

सुरक्षा के उद्देश्य से, एक विश्वास सीमा को पार करने वाला इनपुट अधिकांशतः सबसे उपयोगी होता है।[1] उदाहरण के लिए, फ़ज़ कोड के लिए यह अधिक महत्वपूर्ण है जो किसी भी उपयोगकर्ता द्वारा फ़ाइल के अपलोड को संभालता है, उस कोड को फ़ज़ करता है जो विन्यास फाइल को पार्स करता है जो केवल एक विशेषाधिकार उपयोगकर्ता के योग्य होता है।

इतिहास

फ़ज़ शब्द की उत्पत्ति 1988 के पतन वर्ग की परियोजना से हुई थी[2] स्नातक उन्नत ऑपरेटिंग उपकरण वर्ग (CS736) में, विस्कॉन्सिन विश्वविद्यालय में प्रोफेसर बार्टन मिलर द्वारा पढ़ाया गया था, जिसके परिणाम बाद में 1990 में प्रकाशित हुए थे।[3] यूटिलिटी के लिए स्वचालित रूप से यादृच्छिक इनपुट और कमांड-लाइन पैरामीटर उत्पन्न करने के लिए एक यूनिक्स उपयोगिता का परीक्षण करने के लिए होता है। प्रोजेक्ट को यूनिक्स कमांड लाइन कार्यक्रमों की विश्वसनीयता का परीक्षण करने के लिए डिज़ाइन किया गया था जब तक कि वे दुर्घटनाग्रस्त होने तक त्वरित उत्तराधिकार में बड़ी संख्या में यादृच्छिक इनपुट निष्पादित कर सकते है। मिलर की टीम 25 से 33 प्रतिशत उपयोगिताओं को क्रैश करने में सक्षम थी, जिनका उन्होंने परीक्षण किया था। फिर उन्होंने कारण निर्धारित करने के लिए प्रत्येक क्रैश को डिबग किया था और प्रत्येक ज्ञात विफलता को वर्गीकृत किया था। अन्य शोधकर्ताओं को अन्य सॉफ्टवेयर के साथ समान प्रयोग करने की अनुमति देने के लिए, उपकरणों के स्रोत कोड, परीक्षण प्रक्रियाओं और कच्चे परिणाम डेटा को सार्वजनिक रूप से उपलब्ध कराया गया था।[4] इस प्रारंभिक फ़ज़िंग को अब ब्लैक बॉक्स, जेनरेशनल, अनस्ट्रक्चर्ड फ़ज़िंग कहा जाता है।

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

मूल फज़ परियोजना ने 1995, 2000, 2006 और हाल ही में 2020 में योगदान दिया:

  • 1995:[5]फ़ज़ रिविज़िटेड पेपर में चार भाग होते है।
    1. यूनिक्स उपकरण की व्यापक विविधता और अधिक उपयोगिताओं सहित मूल कमांड लाइन अध्ययन को पुन: प्रस्तुत किया था। अध्ययन से पता चला था कि विश्वसनीयता खराब हो गई थी। यह पहला अध्ययन था जिसमें ओपन सोर्स जीएनयू और लिनक्स उपयोगिताओं को सम्मलित किया गया था, जो रोचक रूप से वाणिज्यिक यूनिक्स उपकरण की तुलना में अधिक विश्वसनीय थे।
    2. एक्स-विंडोज़ के अनुसार जीयूआई (विंडो आधारित) अनुप्रयोगों के फ़ज़ परीक्षण का परिचय दिया था। इस अध्ययन में असंरचित और संरचित (माउस और कीबोर्ड घटनाओं के मान्य अनुक्रम) इनपुट डेटा दोनों का उपयोग किया गया था। वे एक्स विंडोज अनुप्रयोगों के 25% को क्रैश करने में सक्षम थे। इसके अतिरिक्त, उन्होंने एक्स-विंडोज सर्वर का परीक्षण किया था और दिखाया कि यह क्रैश के लिए लचीला था।
    3. संरचित परीक्षण इनपुट के आधार पर फिर से नेटवर्क सेवाओं की फ़ज़ परीक्षण को प्रारंभ किया था। इनमें से कोई भी सेवा दुर्घटनाग्रस्त नहीं हुई थी।
    4. उपकरण लाइब्रेरी के यादृच्छिक परीक्षण का परिचय दिया कि, विशेष रूप से फ़ंक्शन के मॉलोक परिवार से यादृच्छिक रूप से शून्य लौटता है। लगभग आधे मानक यूनिक्स प्रोग्राम ऐसे वापसी मूल्यों की ठीक से जाँच करने में विफल रहते है।
  • 2000:[6] हाल ही में जारी किए गए विंडोज एनटी ऑपरेटिंग उपकरण के लिए प्रयुक्त फज़ परीक्षण, Win32 विंडो उपकरण के अनुसार चलने वाले अनुप्रयोगों का परीक्षण था। वे 21% अनुप्रयोगों को क्रैश करने में सक्षम थे। फिर से, अनुप्रयोग असंरचित और संरचित इनपुट दोनों के साथ परीक्षण कर रहे थे, उन अनुप्रयोगों में से लगभग आधे को क्रैश कर दिया था, जिनका उन्होंने परीक्षण किया था। उन्होंने विफलताओं के कारणों की पहचान की थी और उन्हें पिछले अध्ययनों के समान पाया था।
  • 2001:[7] दो लोकप्रिय यूनिक्स वेरिएंट्स, एक जीएनयू/लिनक्स प्लेटफॉर्म और एक सोलारिस प्लेटफॉर्म के अनुसार 87 यूनिक्स उपयोगिताओं के लिए फ़ज़ परीक्षण लागू किया गया था, जो SunOS 1990 पर 29% दुर्घटनाग्रस्त हो गया था, लेकिन परीक्षण किए गए रेड हैट 6.2 पर केवल 4% था। सबसे आम विफलता मोड पॉइंटर अंकगणितीय था, इसके बाद रिटर्न कोड की जांच नहीं की गई थी और पुराने इनपुट फ़ंक्शंस का उपयोग किया गया था।
  • 2006:[8] कमांड लाइन और विंडो आधारित अनुप्रयोगों दोनों के लिए मैक ओएस एक्स पर फ़ज़ परीक्षण होता है। उन्होंने 135 कमांड लाइन उपयोगिता कार्यक्रमों का परीक्षण किया था, जिनमें से 7% परीक्षण किए गए थे। इसके अतिरिक्त, उन्होंने मैक ओएस एक्वा विंडो उपकरण के अंतर्गत चलने वाले 30 अनुप्रयोगों का परीक्षण किया, जिनमें से 73% परीक्षण किए गए थे।
  • 2020:[9] हाल ही में, उन्होंने यह देखने के लिए कि क्या मूल तकनीकें अभी भी प्रासंगिक थीं और क्या वर्तमान उपयोगिता कार्यक्रम इस प्रकार के परीक्षण के लिए प्रतिरोधी थे, क्लासिक जेनरेशनल, ब्लैक बॉक्स, वर्तमान यूनिक्स उपकरण, विशेष रूप से लिनक्स, फ्री बीएसडी और मैक ओएस पर असंरचित परीक्षण लागू किया था। उन्होंने प्रत्येक प्लेटफॉर्म पर लगभग 75 उपयोगिताओं का परीक्षण किया था, लिनक्स पर 12% की विफलता दर, मैकओएस पर 16% और फ्रीबीएसडी पर 19% था। जब उन्होंने प्रत्येक विफलता का विश्लेषण किया और उन्हें वर्गीकृत किया, तो उन्होंने पाया कि विफलताओं की क्लासिक श्रेणियां, जैसे सूचक और सरणी त्रुटियां और रिटर्न कोड की जांच नहीं करना, नए परिणामों में मोटे तौर पर अभी भी उपस्थित थे। इसके अतिरिक्त, नई विफलता जटिल प्रोग्राम स्थिति और एल्गोरिदम से उत्पन्न होती है जो इनपुट आकार या जटिलता के साथ स्केल नहीं करती थी। उन्होंने हाल ही में रस्ट में लिखी गई यूनिक्स उपयोगिताओं का भी परीक्षण किया और पाया कि वे सी में लिखी गई समान विश्वसनीयता की थीं, जिसमे स्मृति त्रुटियों की संभावना कम थी।

अप्रैल 2012 में, गूगल ने क्रोमियम वेब ब्राउज़र के सुरक्षा-महत्वपूर्ण घटकों के लिए क्लाउड-आधारित फ़ज़िंग आधारिक संरचना क्लस्टरफ़ज़ की घोषणा की थी।[10] यदि क्लस्टरफ़ज़ को अपलोड किए गए फ़ज़र के साथ क्रैश होने का पता चलता है, तो सुरक्षा शोधकर्ता अपने स्वयं के फ़ज़र्स अपलोड कर सकते है और बग बाउंटी एकत्र कर सकते है।

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

अप्रैल 2015 में, हन्नो बॉक ने दिखाया कि कैसे फजर एएफएल 2014 हार्टब्लीड भेद्यता को ढूंढ सकता था।[14][15] (अप्रैल 2014 में हार्दिक भेद्यता का खुलासा किया गया था। यह एक गंभीर भेद्यता है जो विरोधियों को अन्यथा एन्क्रिप्टेड संचार को समझने की अनुमति देता है। भेद्यता को गलती से ओपनएसएसएल में प्रस्तुत किया गया था जो परिवहन परत सुरक्षा को लागू करता है और इंटरनेट पर अधिकांश सर्वरों द्वारा उपयोग किया जाता है। शोडान (वेबसाइट) ने अप्रैल 2016 में 238,000 मशीनों के अभी भी असुरक्षित होने की सूचना दी थी,[16] जनवरी 2017 में 200,000।[17])

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

सितंबर 2016 में, माइक्रोसॉफ्ट ने प्रोजेक्ट स्प्रिंगफील्ड की घोषणा की थी, जो सॉफ्टवेयर में सुरक्षा संबंधी महत्वपूर्ण बग खोजने के लिए क्लाउड-आधारित फ़ज़ परीक्षण सेवा है।[20]

दिसंबर 2016 में, गूगल ने ओएसएस-फ़ज़ की घोषणा की थी जो कई सुरक्षा-महत्वपूर्ण ओपन-सोर्स परियोजनाओं की निरंतर फज़िंग की अनुमति देता है।[21]

ब्लैक हैट 2018 में, क्रिस्टोफर डोमस ने एक प्रोसेसर में कम किए गए निर्देश सेट कंप्यूटर कोर के अस्तित्व को उजागर करने के लिए फज़िंग के उपयोग का प्रदर्शन किया था।[22] यह कोर रिंग 3 से सुरक्षा रिंग कमांड को निष्पादित करने के लिए उपस्थिता सुरक्षा जांच को बायपास करने में सक्षम था।

सितंबर 2020 में, माइक्रोसॉफ्ट ने वनफज जारी किया, जो एक सेल्फ-होस्टिंग (वेब ​​सर्विसेज) | सेल्फ-होस्टेड फ़ज़िंग-एज़-ए-सर्विस प्लेटफ़ॉर्म है जो सॉफ्टवेयर बग का पता लगाने को स्वचालित करता है।[23] यह खिड़कियाँ और लिनक्स को सपोर्ट करता है।[24]

प्रारंभिक यादृच्छिक परीक्षण

यादृच्छिक इनपुट के साथ परीक्षण कार्यक्रम 1950 के दशक के है जब डेटा अभी भी पंच कार्ड युग में कंप्यूटर प्रोग्रामिंग पर संग्रहीत था।[25]प्रोग्रामर कंप्यूटर प्रोग्राम के इनपुट के रूप में छिद्रित कार्ड का उपयोग करेंगे जो यादृच्छिक संख्याओं के ट्रैश या कार्ड डेक से खींचे गए थे। यदि किसी निष्पादन से अवांछित व्यवहार का पता चलता है, तो एक सॉफ़्टवेयर बग का पता चला था।

रैंडम इनपुट के निष्पादन को यादृच्छिक परीक्षण या बंदर परीक्षण भी कहा जाता है।

1981 में, डुरान और नताफोस ने औपचारिक रूप से यादृच्छिक इनपुट के साथ एक कार्यक्रम के परीक्षण की प्रभावशीलता की जांच की थी।[26][27] जबकि यादृच्छिक परीक्षण व्यापक रूप से एक कार्यक्रम के परीक्षण का सबसे खराब साधन माना जाता था, लेखक यह दिखा सकते थे कि यह अधिक व्यवस्थित परीक्षण तकनीकों के लिए एक लागत प्रभावी विकल्प है।

1983 में, एप्पल में स्टीव कैप्स ने द मंकी को विकसित किया था,[28] एक उपकरण जो मैकपेंट जैसे क्लासिक मैक ओएस अनुप्रयोगों के लिए यादृच्छिक इनपुट उत्पन्न करता है।[29] आलंकारिक बंदर अनंत बंदर प्रमेय को संदर्भित करता है जिसमें कहा गया है कि एक बंदर एक टाइपराइटर कीबोर्ड पर यादृच्छिक रूप से असीमित समय के लिए चाबियों को मारता है, अंततः शेक्सपियर के पूरे कार्यों को टाइप करेगा। परीक्षण के स्थिति में, बंदर इनपुट के विशेष अनुक्रम को लिखेंगे जो दुर्घटना को ट्रिगर करता है।

1991 में, क्रैशमे उपकरण जारी किया गया था, जिसका उद्देश्य बेतरतीब ढंग से चुने गए मापदंडों के साथ उपकरण को बेतरतीब ढंग से निष्पादित करके यूनिक्स और यूनिक्स जैसी