फज़िंग: Difference between revisions

From Vigyanwiki
(Created page with "{{Short description|Automated software testing technique}} {{Information security}} [[कंप्यूटर प्रोग्रामिंग]] और सॉफ्...")
 
No edit summary
Line 2: Line 2:
{{Information security}}
{{Information security}}


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


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


== लोकप्रिय फ़ज़र्स की सूची ==
== लोकप्रिय फ़ज़र्स की सूची ==
{{See also|American fuzzy lop (fuzzer)#Forks}}
{{See also|American fuzzy lop (fuzzer)#Forks}}शैक्षिक साहित्य में लोकप्रिय, व्यापक रूप से उपयोग किए जाने वाले या समान के रूप में वर्णित फ़ज़र्स की सूची निम्नलिखित है।<ref name="magma"/><ref name="unifuzz"/>
{{Expand section|date=February 2023}}
 
शैक्षिक साहित्य में लोकप्रिय, व्यापक रूप से उपयोग किए जाने वाले या समान के रूप में वर्णित फ़ज़र्स की सूची निम्नलिखित है।<ref name="magma"/><ref name="unifuzz"/>


{| class="wikitable"
{| class="wikitable"
|-
|-
! Name
! नाम
! White/gray/black-box
! सफेद/ग्रे/ब्लैक-बॉक्स
! Smart/dumb
! स्मार्ट / गूंगा
! Description
! विवरण
! Written in
! इसमें लिखा हुआ
! License
! लाइसेंस


|-
|-
| [[American fuzzy lop (fuzzer)|AFL]]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (AFL, ...)"}}{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..."}}
| [[American fuzzy lop (fuzzer)|एएफएल]]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (AFL, ...)"}}{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..."}}
| Gray
| ग्रे
| Dumb
| गूंगा
|
|
| C
| सी
| [[Apache License|Apache]] 2.0
| [[Apache License|अपाचे]] 2.0




|-
|-
| [[AFL++]]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (..., AFL++, ...)"}}
| [[AFL++|एएफएल ++]]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (..., AFL++, ...)"}}
| Gray
| ग्रे
| Dumb
| गूंगा
|
|
| C
| सी
| [[Apache License|Apache]] 2.0
| [[Apache License|अपाचे]] 2.0




|-
|-
| AFLFast{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, AFLFast, ..."}}
| एएफएलफास्ट{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, AFLFast, ..."}}
| Gray
| ग्रे
| Dumb
| गूंगा
|
|
| C
| सी
| [[Apache License|Apache]] 2.0
| [[Apache License|अपाचे]] 2.0




|-
|-
| Angora{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., Angora, ..."}}
| अंगोरा{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., Angora, ..."}}
| Gray
| ग्रे
| Dumb
| गूंगा
|
|
| C++
| सी++
| [[Apache License|Apache]] 2.0
| [[Apache License|अपाचे]] 2.0


|-
|-
| [https://honggfuzz.dev/ honggfuzz]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (..., honggfuzz, ...)"}}{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., Honggfuzz, ..."}}
| [https://honggfuzz.dev/ हाँगफ़ज़]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (..., honggfuzz, ...)"}}{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., Honggfuzz, ..."}}
| Gray
| ग्रे
| Dumb
| गूंगा
|
|
| C
| सी
| [[Apache License|Apache]] 2.0
| [[Apache License|अपाचे]] 2.0


|-
|-
| QSYM{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., QSYM, ..."}}
| क्यूएसवाईएम{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., QSYM, ..."}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
Line 198: Line 195:


|-
|-
| [https://www.s3.eurecom.fr/tools/symbolic_execution/symcc.html SymCC]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (..., and SymCC-AFL)"}}
| [https://www.s3.eurecom.fr/tools/symbolic_execution/symcc.html सिमसीसी]{{sfn|Hazimeh|Herrera|Payer|2021|loc=p. 1: "We evaluate seven widely-used mutation-based fuzzers (..., and SymCC-AFL)"}}
| White{{sfn|Hazimeh|Herrera|Payer|2021|p=14}}
| सफेद{{sfn|Hazimeh|Herrera|Payer|2021|p=14}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
|
|
| C++
| सी++
| [[GNU General Public License|GPL]], LGPL
| जीपीएल, एलजीपीएल
 


|-
|-
| T-Fuzz{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., T-Fuzz, ..."}}
| टी-फ़ज़{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., T-Fuzz, ..."}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
Line 215: Line 211:


|-
|-
| VUzzer{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., and VUzzer64."}}
| वीउज़र{{sfn|Li|Ji|Chen|Liang|2021|loc=p. 1: "Using UniFuzz, we conduct in-depth evaluations of several prominent fuzzers including AFL, ..., and VUzzer64."}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
| {{Data missing|date=March 2023|?}}
Line 223: Line 219:


|}
|}
== यह भी देखें ==
== यह भी देखें ==



Revision as of 01:58, 18 May 2023

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

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

इतिहास

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

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

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

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