Atheris ، مجموعة أدوات اختبار كود Python

كشف النقاب عن جوجل مؤخرا الافراج عن مشروع اثيرس، وهو تطور مجموعة من الأدوات مفتوحة المصدر متخصص للتشويش على اختبارات كود بايثون وملحقات CPython المكتوبة بلغة C / C ++.

المشروع يستخدم محرك قائم على libFuzzer ويمكن استخدامها جنبًا إلى جنب مع أدوات مطهر العنوان ومعقم السلوك غير المحدد لاكتشاف الأخطاء الإضافية. الرمز مفتوح بموجب ترخيص Apache 2.0.

حول Google Atheris

على حد تعبير Google Atheris ، إنها مجموعة أدوات يمكن استخدامها للعثور تلقائيًا على أخطاء في كود Python والامتدادات الأصلية. Atheris عبارة عن fuzzer "مدفوعة بالتغطية" ، مما يعني أن Atheris سيحاول بشكل متكرر مدخلات مختلفة لبرنامجك أثناء مشاهدته وهو يعمل ومحاولة إيجاد مسارات مثيرة للاهتمام.

يتم دعم مراجعة التعليمات البرمجية لـ Python 2.7 و Python 3.3+، ولكن للتغطية الكاملة والموجهة ، نوصي باستخدام فرعي Python 3.8 و 3.9 ، اللذين يدعمان الآن إحصائيات كود التشغيل حسب كود التشغيل.

فى المعالجة، يسرد Atheris المجموعات المحتملة لبيانات الإدخال ويقوم بإنشاء تقرير على جميع الأعطال المكتشفة والاستثناءات غير المكتشفة.

على سبيل المثال ، عند التحقق من مكتبة تحليل YAML في Atheris ، وجد أن بعض تراكيب YAML ، مثل تحديد "-_" بدلاً من قيمة عدد صحيح أو استخدام قائمة بدلاً من مفتاح ، تطرح استثناءً غير متوقع بدلاً من معيار YAMLErrors خطأ.

اختبار الزغب هو تقنية معروفة لاكتشاف أخطاء البرمجة. العديد من هذه الأخطاء التي يمكن اكتشافها لها آثار أمنية خطيرة. اكتشفت Google آلاف الثغرات الأمنية وغيرها من الأخطاء عند استخدام هذه التقنية. يستخدم Fuzzing بشكل تقليدي في اللغات الأصلية مثل C أو C ++ ، لكننا في العام الماضي أنشأنا محركًا جديدًا لإرباك Python. اليوم ، أطلقنا محرك Atheris المزعج كمصدر مفتوح.

اثيرس يمكن استخدامها أيضًا لتحديد الاختلافات في السلوك من المكتبات التي تستهدف المهام المماثلة. على سبيل المثال ، وجد فحص موجز لحزمة Python "idna" والمكتبة "libidn2" ، اللتين تؤديان مهمة فك تشفير أسماء النطاقات الدولية ، أنهما لا ينتجان دائمًا نفس النتيجة.

أحد أفضل استخدامات Atheris هو الموزعات التفاضلية. هذه هي الألغاز التي تبحث عن الاختلافات في سلوك مكتبتين تهدف إلى فعل الشيء نفسه. أحد الأمثلة على fuzzles المجمعة مع Atheris يفعل هذا بالضبط لمقارنة حزمة Python "idna" بحزمة C "libidn2".

على وجه الخصوص ، إذا كان المجال يستخدم تسلسلات Unicode ، فسيقوم "idna" و "libidn2" بتحويل اسم المجال الدولي إلى مضيفين مختلفين.

بشكل عام ، Atheris مفيد في كود Python الصافي طالما أن لديه طريقة للتعبير عن السلوك "الصحيح" ، أو على الأقل التعبير عن السلوكيات غير الصحيحة بالتأكيد. قد يكون هذا معقدًا مثل الكود المخصص في fuzzer الذي يقيم دقة إخراج المكتبة ، أو بسيطًا مثل التحقق من عدم ظهور استثناءات غير متوقعة.

من المهم أن تأخذ في الاعتبار ذلك تولد اختبارات التشويش مجموعة من جميع أنواع التوليفات العشوائية لبيانات الإدخال ، قريبة من البيانات الفعلية (مثل صفحات html ذات معلمات العلامات العشوائية أو الملفات أو الصور ذات العناوين غير الطبيعية ، وما إلى ذلك) وإصلاح مواطن الخلل المحتملة في العملية.

إذا أدى أي تسلسل إلى استثناء أو لم يتطابق مع الاستجابة المتوقعة ، فمن المرجح أن يشير هذا السلوك إلى خطأ أو ثغرة أمنية.

أخيرا ، كما ذكرنا يعمل Atheris مع كود Python في الإصدار 2.7 و 3.3+ ، على الرغم من أن Google توصي بشدة باستخدام 3.8+ والإضافات الأصلية المكتوبة لـ CPython.

لم يعد Windows من بين أنظمة التشغيل المدعومة، لذا فإن المحرك مهم فقط لمستخدمي Linux و Mac OS X في الوقت الحالي.

لاستخدامه على هذه الأنظمة الأساسية ، يجب أن يكون لدى المطورين إصدار حالي من الواجهة الأمامية لمجمع Clang.

إذا كنت تريد معرفة المزيد عنها، يمكنك التحقق من الملاحظة الأصلية بتنسيق الرابط التالي.


محتوى المقال يلتزم بمبادئنا أخلاقيات التحرير. للإبلاغ عن خطأ انقر فوق هنا.

كن أول من يعلق

اترك تعليقك

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها ب *

*

*

  1. المسؤول عن البيانات: ميغيل أنخيل جاتون
  2. الغرض من البيانات: التحكم في الرسائل الاقتحامية ، وإدارة التعليقات.
  3. الشرعية: موافقتك
  4. توصيل البيانات: لن يتم إرسال البيانات إلى أطراف ثالثة إلا بموجب التزام قانوني.
  5. تخزين البيانات: قاعدة البيانات التي تستضيفها شركة Occentus Networks (الاتحاد الأوروبي)
  6. الحقوق: يمكنك في أي وقت تقييد معلوماتك واستعادتها وحذفها.