एथिरिस, एक पायथन कोड परीक्षण टूलकिट

Google ने अनावरण किया हाल ही में की रिलीज एथेरिस परियोजना, जिसका एक विकास है ओपन सोर्स टूल्स का एक सेट विशेष पायथन कोड के फ़र्ज़ी परीक्षणों के लिए और CPython के लिए एक्सटेंशन C / C ++ में लिखे गए हैं।

अल proyecto एक libFuzzer आधारित इंजन का उपयोग करता है और अतिरिक्त त्रुटियों का पता लगाने के लिए एड्रेस सैनिटाइजर और अनफाइंड बिहेवियर सैनिटाइजर टूल्स के साथ संयोजन में उपयोग किया जा सकता है। कोड Apache 2.0 लाइसेंस के तहत खुला है।

Google Atheris के बारे में

Google Atheris के शब्दों में, यह एक टूलकिट है जिसका उपयोग पायथन कोड और मूल एक्सटेंशन में त्रुटियों को स्वचालित रूप से खोजने के लिए किया जा सकता है। एथिरिस एक 'कवरेज से संचालित' फ़ज़र है, जिसका अर्थ है कि एथेरिस बार-बार आपके प्रोग्राम के विभिन्न इनपुट्स का परीक्षण करेगा, जबकि इसे चलाते हुए और दिलचस्प रास्तों को खोजने की कोशिश करेगा।

पायथन 2.7 और पायथन 3.3+ के लिए कोड समीक्षा समर्थित है, लेकिन पूर्ण निर्देशित कवरेज के लिए, पायथन 3.8 और 3.9 शाखाओं का उपयोग करने की सिफारिश की जाती है, जो अब opcode द्वारा ओपोड के आँकड़ों का समर्थन करते हैं।

मे बया, एथेरिस इनपुट डेटा के संभावित संयोजनों को सूचीबद्ध करता है और एक रिपोर्ट तैयार करता है सभी ज्ञात दोषों और अनिर्धारित अपवादों पर।

उदाहरण के लिए, जब एथेरिस में YAML पार्सिंग लाइब्रेरी की जाँच करते हुए, यह पाया गया कि कुछ YAML निर्माण, जैसे कि पूर्णांक मान के बजाय "-_" निर्दिष्ट करना या कुंजी के बजाय सूची का उपयोग करना, एक के बजाय एक अप्रत्याशित अपवाद फेंकना। YAMLErrors मानक त्रुटि।

प्रोग्रामिंग त्रुटियों की खोज के लिए फ़ज़ टेस्ट एक प्रसिद्ध तकनीक है। इन पता लगाने योग्य त्रुटियों में से कई में गंभीर सुरक्षा निहितार्थ हैं। इस तकनीक का उपयोग करते समय Google ने हजारों सुरक्षा भेद्यताएं और अन्य कीड़े पाए हैं। फ़ज़िंग पारंपरिक रूप से C या C ++ जैसी देशी भाषाओं में उपयोग किया जाता है, लेकिन पिछले साल हमने एक नया पायथन फ़ज़िंग इंजन बनाया। आज, हमने खुले स्रोत के रूप में एथिरिस फ़ज़िंग इंजन जारी किया।

Atheris व्यवहार में अंतर की पहचान करने के लिए भी इस्तेमाल किया जा सकता है समान कार्यों को लक्षित पुस्तकालयों की। उदाहरण के लिए, पायथन पैकेज "इडना" और लाइब्रेरी "लिबिड्न 2" का सारांश चेक, जो अंतर्राष्ट्रीय डोमेन नामों को डिकोड करने का कार्य करता है, ने पाया कि वे हमेशा एक ही परिणाम नहीं देते हैं।

एथेरिस के लिए सबसे अच्छा उपयोग अंतर डिफ्यूज़र के लिए है। ये फ़र्ज़ी हैं जो दो पुस्तकालयों के व्यवहार में अंतर की तलाश करते हैं जो एक ही काम करने के लिए हैं। एथरिस के साथ पैक किए गए एक उदाहरण फ़ज़र्स, पायथन के "इडना" पैकेज की तुलना C "libidn2" पैकेज के साथ करने के लिए करता है।

विशेष रूप से, यदि डोमेन यूनिकोड अनुक्रमों का उपयोग करता है, तो "इडना" और "लिबिड्न 2" ने अंतर्राष्ट्रीय डोमेन नाम को विभिन्न होस्टों में बदल दिया।

सामान्य तौर पर, एथिर शुद्ध पायथन कोड में उपयोगी है जब तक आपके पास "सही" व्यवहार को व्यक्त करने का एक तरीका है, या कम से कम यह व्यक्त करना कि कौन से व्यवहार निश्चित रूप से सही नहीं हैं। यह फ़्यूज़र में कस्टम कोड जितना जटिल हो सकता है जो किसी लाइब्रेरी के आउटपुट की सटीकता का मूल्यांकन करता है, या यह जाँचने के रूप में सरल है कि कोई अप्रत्याशित अपवाद नहीं उठाया गया है।

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

यदि कोई अनुक्रम अपवाद है या अपेक्षित प्रतिक्रिया से मेल नहीं खाता है, तो यह व्यवहार सबसे अधिक संभावना बग या भेद्यता को इंगित करता है।

अंत में, जैसा कि उल्लेख किया गया है एथरिस 2.7 और 3.3+ संस्करण में पायथन कोड के साथ काम करता है, हालाँकि Google CPython के लिए लिखे गए 3.8+ और देशी एक्सटेंशन का उपयोग करने की दृढ़ता से अनुशंसा करता है।

विंडोज अभी तक समर्थित ऑपरेटिंग सिस्टम के बीच नहीं है, इसलिए इंजन अब केवल लिनक्स और मैक ओएस एक्स उपयोगकर्ताओं के लिए ही रुचि है।

इन प्लेटफार्मों पर इसका उपयोग करने के लिए, डेवलपर्स के पास क्लैंग कंपाइलर फ्रंटेंड का वर्तमान संस्करण स्थापित होना चाहिए।

अगर आप इसके बारे में और जानना चाहते हैं, आप मूल नोट की जांच कर सकते हैं निम्नलिखित लिंक।


पहली टिप्पणी करने के लिए

अपनी टिप्पणी दर्ज करें

आपका ईमेल पता प्रकाशित नहीं किया जाएगा। आवश्यक फ़ील्ड के साथ चिह्नित कर रहे हैं *

*

*

  1. डेटा के लिए जिम्मेदार: मिगुएल elngel Gatón
  2. डेटा का उद्देश्य: नियंत्रण स्पैम, टिप्पणी प्रबंधन।
  3. वैधता: आपकी सहमति
  4. डेटा का संचार: डेटा को कानूनी बाध्यता को छोड़कर तीसरे पक्ष को संचार नहीं किया जाएगा।
  5. डेटा संग्रहण: ऑकेंटस नेटवर्क्स (EU) द्वारा होस्ट किया गया डेटाबेस
  6. अधिकार: किसी भी समय आप अपनी जानकारी को सीमित, पुनर्प्राप्त और हटा सकते हैं।