
RESTler هي أول أداة تشويب لواجهات برمجة تطبيقات REST ذات الحالة لاختبار الخدمات السحابية تلقائيًا عبر واجهات REST API الخاصة بها واكتشاف الثغرات الأمنية وأخطاء الموثوقية في هذه الخدمات.
RESTler هي أداة اختبار اختراق (fuzzing) لحالات API RESTful الحالة الأولى لاختبار الخدمات السحابية تلقائيًا عبر واجهات REST API الخاصة بها، واكتشاف أخطاء الأمان والموثوقية في هذه الخدمات. بالنسبة لخدمة سحابية معينة تحتوي على مواصفات OpenAPI (المعروفة سابقًا باسم Swagger)، يقوم RESTler بتحليل مواصفاتها بالكامل، ثم ينشئ وينفذ اختبارات تُمرر من خلال واجهة REST API الخاصة بالخدمة.
يستنتج RESTler بذكاء التبعيات بين المنتج والمستهلك بين أنواع الطلبات من تعريف OpenAPI. أثناء الاختبار، يتحقق من فئات محددة من الأخطاء ويتعلم ديناميكيًا كيفية تصرف الخدمة من الاستجابات السابقة للخدمة. يسمح هذا الذكاء لـ RESTler باستكشاف حالات خدمة أعمق لا يمكن الوصول إليها إلا من خلال تسلسلات طلبات محددة، والعثور على المزيد من الأخطاء.
تم وصف RESTler في هذه الأوراق البحثية التي خضعت لمراجعة الأقران:
إذا كنت تستخدم RESTler في بحثك، يرجى الاستشهاد بورقة ICSE'2019 (الافتراضية) (BibTeX).
يتضمن RESTler استراتيجيات متعددة لتوليد الاختبارات. من أجل الحصول على رؤية مقارنة شاملة فيما يتعلق بـ (i) الكفاءة (أي مدى سرعة العثور على الأعطال بواسطة RESTler) و (ii) الفعالية (أي عدد الأعطال التي يمكن لـ RESTler العثور عليها في إطار زمني معين)، نوصي بالمقارنة مع جميع fuzzing_mode(s) الموثقة لأن كل منها يوفر مقايضة مختلفة بين اتساع وعمق استكشاف مساحة الحالة. نوصي أيضًا بتشغيل وضع test قبل أي اختبار fuzzing، كما هو موضح أدناه، لاكتشاف وإصلاح مشكلات الإعداد (مثل إضافة قيم المعلمات المطلوبة مسبقًا إلى القاموس) قبل fuzzing.
تم إنشاء RESTler في Microsoft Research ولا يزال قيد التطوير النشط.
للحصول على نظرة عامة وعرض توضيحي حول كيفية البدء، راجع Webinar - Fuzzing to Improve the Security and Reliability of Cloud Services.

تم تصميم RESTler للعمل على أجهزة 64 بت مع Windows أو Linux. الدعم التجريبي لـ macOS متاح أيضًا.
في جذر هذا المستودع، قم بتشغيل
docker build -t restler .
ستتوفر أداة RESTler في الحاوية الناتجة في الدليل /RESTler/restler مع الملف الثنائي الرئيسي Restler. يمكنك بعد ذلك استخدام صورة Docker هذه كأساس لإضافة التطبيق قيد الاختبار لتنفيذ fuzzing داخل حاويات Docker منفصلة.
المتطلبات الأساسية: قم بتثبيت Python 3.12.8 و .NET 8.0، وفقًا لنظام التشغيل المناسب لك.
أنشئ دليلًا حيث ترغب في وضع ملفات RESTler الثنائية:
mkdir restler_bin
انتقل إلى الدليل الجذر للمستودع وقم بتشغيل سكربت Python التالي:
python ./build-restler.py --dest_dir <المسار الكامل إلى restler_bin أعلاه>
ملاحظة: إذا تلقيت خطأ nuget NU1403 أثناء البناء، فإن الحل السريع هو مسح ذاكرة التخزين المؤقت الخاصة بك باستخدام الأمر التالي
dotnet nuget locals all --clear
يعمل RESTler في 4 أوضاع رئيسية (بالترتيب):
للحصول على مقدمة سريعة مع أمثلة بسيطة، راجع هذا البرنامج التعليمي.
لتجربة RESTler بسرعة على واجهة API الخاصة بك، راجع Quick Start.
يوجد حاليًا فئتان من الأخطاء التي وجدها RESTler.
500 ("خطأ داخلي في الخادم")، يتم الإبلاغ عن خطأ.عند العثور على خطأ، يبلغ RESTler عن الأخطاء التي تم فرزها في مجموعات، ويوفر سجل إعادة تشغيل يمكن استخدامه لإعادة إنتاج الخطأ (راجع Replay).
للحصول على نصائح حول استخدام RESTler بفعالية، يرجى الاطلاع على Best Practices و Improving API Coverage.
راجع أيضًا الأسئلة الشائعة.
إذا كنت مهتمًا باستخدام RESTler على نطاق واسع كجزء من خط أنابيب CI/CD الخاص بك، فراجع خدمة REST API Fuzz Testing المستضافة ذاتيًا.
إذا كان لديك طلب/اقتراح/سؤال، يرجى إنشاء مشكلة (issue). راجع Contributing.md للحصول على التعليمات.
نرحب بالمساهمات والاقتراحات. تتطلب معظم المساهمات منك الموافقة على اتفاقية ترخيص المساهم (CLA) التي تعلن أن لديك الحق، وأنك بالفعل تمنحنا الحق في استخدام مساهمتك. للحصول على التفاصيل، قم بزيارة https://cla.microsoft.com.
عند تقديم طلب سحب (pull request)، سيقوم روبوت CLA تلقائيًا بتحديد ما إذا كنت بحاجة إلى تقديم CLA وتزيين PR بشكل مناسب (مثل التسمية، التعليق). ما عليك سوى اتباع التعليمات المقدمة من الروبوت. ستحتاج فقط إلى القيام بذلك مرة واحدة عبر جميع المستودعات التي تستخدم CLA الخاص بنا.
اعتمد هذا المشروع مدونة قواعد السلوك مفتوحة المصدر من Microsoft. لمزيد من المعلومات، راجع الأسئلة الشائعة حول مدونة قواعد السلوك أو اتصل بـ [email protected] مع أي أسئلة أو تعليقات إضافية.
لمزيد من المعلومات، راجع Contributing.md.
قد يحتوي هذا المشروع على علامات تجارية أو شعارات للمشاريع أو المنتجات أو الخدمات. يخضع الاستخدام المصرح به للعلامات التجارية أو الشعارات الخاصة بشركة Microsoft لسياسة العلامات التجارية والعلامات التجارية الخاصة بشركة Microsoft ويجب اتباعها. يجب ألا يسبب استخدام العلامات التجارية أو الشعارات الخاصة بشركة Microsoft في إصدارات معدلة من هذا المشروع أي التباس أو الإيحاء برعاية Microsoft. أي استخدام للعلامات التجارية أو الشعارات التابعة لجهات خارجية يخضع لسياسات هذه الجهات الخارجية.
قد يقوم البرنامج بجمع معلومات عنك وعن استخدامك للبرنامج وإرسالها إلى Microsoft. قد تستخدم Microsoft هذه المعلومات لتقديم الخدمات وتحسين منتجاتنا وخدماتنا. يمكنك إيقاف تشغيل القياس عن بُعد كما هو موصوف في المستودع. هناك أيضًا بعض الميزات في البرنامج التي قد تمكنك وMicrosoft من جمع البيانات من مستخدمي تطبيقاتك. إذا كنت تستخدم هذه الميزات، فيجب عليك الامتثال للقانون المعمول به، بما في ذلك تقديم الإشعارات المناسبة لمستخدمي تطبيقاتك جنبًا إلى جنب مع نسخة من بيان الخصوصية من Microsoft. يقع بيان الخصوصية الخاص بنا على https://go.microsoft.com/fwlink/?LinkID=824704. يمكنك معرفة المزيد حول جمع البيانات واستخدامها في وثائق المساعدة وبيان الخصوصية الخاص بنا. يعتبر استخدامك للبرنامج موافقة على هذه الممارسات.
لمزيد من المعلومات، راجع Telemetry.md.
يجب الإبلاغ عن مشكلات الأمان والأخطاء بشكل خاص عبر البريد الإلكتروني إلى مركز استجابة الأمان من Microsoft (MSRC) على [email protected]. يجب أن تتلقى ردًا خلال 24 ساعة. إذا لم تتلق ردًا لسبب ما، يرجى المتابعة عبر البريد الإلكتروني لضمان استلامنا لرسالتك الأصلية. يمكن العثور على مزيد من المعلومات، بما في ذلك مفتاح MSRC PGP، في مركز أمان التقنية.
للحصول على تفاصيل إضافية، راجع Security.md.