
أداة سطر أوامر تقوم بتدقيق مواصفات OpenAPI، والتحقق من صحتها وفقًا لأفضل الممارسات، وتشغيل اختبارات أمنية آلية لاكتشاف الثغرات والسلوك غير المحدد في واجهات برمجة التطبيقات.
Cherrybomb هي أداة سطر أوامر (CLI) مكتوبة بلغة Rust تساعد في منع تنفيذ الكود غير الصحيح في وقت مبكر من التطوير. تعمل عن طريق التحقق من صحة واختبار API الخاص بك باستخدام ملف OpenAPI. هدفها الرئيسي هو تقليل أخطاء الأمان وضمان أن API يعمل كما هو مقصود.
يتأكد Cherrybomb من أن API الخاص بك يعمل بشكل صحيح. يتحقق من ملف مواصفات API (OpenAPI Specification) للتأكد من اتباع الممارسات الجيدة واتباع قواعد OAS. ثم يختبر API الخاص بك بحثًا عن المشكلات والثغرات الشائعة. إذا تم العثور على أي مشاكل، يقدم لك Cherrybomb تقريرًا مفصلاً مع الموقع الدقيق للمشكلة حتى تتمكن من إصلاحها بسهولة.
DEPRECATED FOR NOW
يتطلب البرنامج النصي أذونات sudo لنقل ملف cherrybomb الثنائي إلى /usr/local/bin/.
(إذا كنت تريد عرض البرنامج النصي (أو حتى المساعدة في تحسينه) - /scripts/install.sh)
يمكنك الحصول على Cherrybomb من خلال الإصدار المحوّى المستضاف على AWS ECR، والذي يتطلب مفتاح API يمكنك الحصول عليه من ذلك العنوان (التحميل بطيء بعض الشيء) - غير متاح حالياً
docker run --mount type=bind,source=[PATH TO OAS],destination=/home public.ecr.aws/blst-security/cherrybomb:latest cherrybomb -f /home/[OAS NAME] --api-key=[API-KEY]
cargo install cherrybomb
إذا لم يكن لديك cargo مثبتًا، يمكنك تثبيته من هنا
يمكنك أيضًا بناء Cherrybomb من المصدر عن طريق استنساخ هذا المستودع، وبنائه باستخدام cargo.
git clone https://github.com/blst-security/cherrybomb && cd cherrybomb
يستخدم ملف Cargo.toml في الفرع الرئيسي cherrybomb-engine و cherrybomb-oas من crates.io.
إذا كنت ترغب في بنائهما أيضًا من المصدر، يمكنك تغيير الملفات التالية:
(أزل رقم الإصدار واستبدله بمسار المستودع المحلي)
cherrybomb/Cargo.toml:
cherrybomb-engine = version => { path = "cherrybomb-engine" }
cherrybomb/cherrybomb-engine/Cargo.toml:
cherrybomb-oas = version => { path = "../cherrybomb-oas" }
cargo build --release
sudo mv ./target/release/cherrybomb /usr/local/bin # or any other directory in your PATH
تسمح لك الملفات الشخصية باختيار نوع الفحص الذي تريد استخدامه.
- info: يولد فقط جداول المعلمات ونقاط النهاية
- normal: الفحوصات النشطة والسلبية معًا
- intrusive: الفحوصات النشطة والتطفلية [قيد التطوير]
- passive: الفحوصات السلبية فقط
- full: جميع الخيارات
باستخدام ملف إعدادات، يمكنك بسهولة تعديل وعرض خيارات Cherrybomb. يسمح لك ملف الإعداد بتعيين ملف التشغيل الشخصي، موقع ملف OAS، مستوى التفاصيل وتجاهل خطأ TLS.
يسمح الإعداد أيضًا بتجاوز عنوان URL الخاص بالخادم بمصفوفة من الخوادم، وإضافة أمان إلى الطلب [قيد التطوير].
لاحظ أن وسائط سطر الأوامر ستتجاوز خيارات الإعداد إذا تم تعيين كليهما.
يمكنك أيضًا إضافة أو إزالة الفحوصات من ملف شخصي باستخدام passive/active-include/exclude. [قيد التطوير]
cherrybomb --config <CONFIG_FILE>
هيكل ملف الإعداد:
{
"file" : "open-api.json",
"verbosity" : "normal",
"profile" : "Normal",
"passive_include" : ["check1, checks2"],
"active_include": ["check3, check4"],
"servers_override" : ["http://server/"],
"security": [{
"auth_type": "Basic",
"auth_value" : token_value,
"auth_scope" : scope_name
}],
"ignore_tls_errors" : true,
"no_color" : false,
}
بعد التثبيت، تحقق من أنه يعمل عن طريق تشغيل
cherrybomb --version
cherrybomb --file <PATH> --profile passive
مثال على الإخراج السلبي:

cherrybomb --file <PATH> --profile info
إخراج جدول المعلمات:

إخراج جدول نقاط النهاية:

غير متاح حالياً - سيتم استبداله قريباً
يمكنك تضمينه في خط أنابيب CI الخاص بك، وإذا كنت تخطط للقيام بذلك، فإنني أوصي بالذهاب إلى موقعنا الإلكتروني، والتسجيل، والمرور عبر معالج دمج خط أنابيب CI، ونسخ مقتطف groovy/GitHub actions المخصص لك.
مثال:

إذا كانت لديك أي أسئلة، يمكنك أن تسألنا على خادم الديسكورد.
نرحب أيضًا بفتح مشكلة (Issue) هنا على GitHub.