تخطٍّ إلى المحتوى

أسئلة الإصدار التي تجيب عنها Fendix

تعرض أدوات الفحص ما وجدته. أما الإصدار فيحتاج إلى إجابة مختلفة: بناءً على الأدلة التي تشترطها، والأدلة المتوفرة فعلًا، والمخاطر التي قبلتها، والسياسة التي اتفقت عليها، هل يُنشر؟ هذه هي الأسئلة التي تستخدم الفرق Fendix للإجابة عنها.

ستة أسئلة ومسار قرار واحد

تبدأ كل حالة استخدام بالسؤال الذي يطرحه مسؤول الإصدار فعلًا، ثم توضح كيف تجيب عنه Fendix وأين توثَّق التفاصيل.

1

هل يمكن نشر هذا الإصدار؟

قرار إصدار واحد، PASS أو WARN أو BLOCK أو INCOMPLETE، مع أسبابه، بدل قائمة نتائج يُترك تفسيرها لك.

كيف تجيب Fendix

تقيّم Fendix أدلة الإصدار مقابل سياسة الإصدار لديك. وافتراضيًا لا تحظر النتيجة الأمنية الإصدار إلا إذا بلغت خطورتها العتبة المحددة ودعمت أدلتها هذا الادعاء، فلا تكفي الخطورة وحدها للحظر. ويُرتَّب القرار المستضاف بحيث يتقدم الحظر المؤكد دائمًا، ولا يُعرض غياب الأدلة المطلوبة على أنه نجاح.

ما الذي تحصل عليه

  • قرار واحد لكل إصدار مرتب: BLOCK ثم INCOMPLETE ثم WARN ثم PASS
  • سبب كل نتيجة حاظرة أو مؤجَّلة
  • فجوات التغطية مسمّاة بدل أن تختفي خلف بناء ناجح
كيف يعمل نموذج القرار
2

هل عمل كل فحص مطلوب فعلًا؟

غياب النتائج لا يعني أن الإصدار نظيف. تتحقق Fendix من وجود الأدلة التي تشترطها قبل أن ينجح الإصدار.

كيف تجيب Fendix

يسجّل كل محلل ما إذا كان قد عمل، وإن لم يعمل فلماذا. في مساحة العمل المستضافة، إذا أخفق محلل مطلوب أو تعذّر أو لم يرسل نتيجته، يصبح القرار INCOMPLETE لا PASS. وفي CLI تحوّل --require-analyzers و--fail-on-coverage-gap الفجوات نفسها إلى رمز خروج مُخفق.

ما الذي تحصل عليه

  • حالة كل محلل مع سبب عدم تشغيله
  • INCOMPLETE عند غياب الأدلة المطلوبة، لا PASS صامت
  • فجوات التغطية منقولة إلى التقرير والقرار
ما المقصود بالتغطية المطلوبة
3

ما المخاطر التي قُبلت، ومن قبلها، وهل ما زالت قائمة؟

تبقى المخاطر المقبولة في السجل مع سبب وتاريخ انتهاء، ولا تختفي بصمت.

كيف تجيب Fendix

يتطلب قبول المخاطر في مساحة العمل المستضافة سببًا وتاريخ انتهاء مستقبليًا؛ وتبقى النتيجة ظاهرة، ويسقط القبول تلقائيًا في موعده لإعادة المراجعة. أما استثناء الإصدار لقرار BLOCK أو WARN أو INCOMPLETE فيجب أن يعتمده مسؤول آخر، وينتهي خلال 30 يومًا، ويبطل إذا تغيّرت الأدلة. ولا يُستبدل التقييم الأصلي أبدًا.

ما الذي تحصل عليه

  • سبب وصاحب وتاريخ انتهاء لكل قبول
  • استثناءات إصدار يعتمدها شخص غير مقدّم الطلب
  • إعادة فتح المخاطر المقبولة تلقائيًا عند انتهائها
اعتماد الإصدارات والاستثناءات
4

هل أُصلحت الثغرة فعلًا، وهل يبقى الإصلاح قائمًا؟

لا يُحتسب الإصلاح إلا إذا أعادت Fendix اختباره، أو لم يعد فحص لاحق مكتمل التغطية يجده.

كيف تجيب Fendix

يعيد fendix verify اختبار كل موضع للنتيجة، ولا يعدّها محلولة إلا إذا حُلّت جميع مواضعها. وفي مساحة العمل المستضافة لا تُغلق النتيجة كمُصلحة إلا بعد تحقق ناجح أو فحص لاحق مكتمل التغطية، وتُوسم بأنها تراجعت إذا عادت.

ما الذي تحصل عليه

  • إعادة اختبار كل المواضع، لا الموضع الأول فقط
  • لا إصلاح يُحتسب من فحص جزئي أو تفاضلي
  • رصد التراجع عند عودة نتيجة سبق إصلاحها
المعالجة والتحقق من الإصلاح
5

هل يمكن لكل مسار CI/CD فرض سياسة الإصدار نفسها؟

احفظ السياسة بجانب الشيفرة، وشغّل التقييم الحتمي نفسه في كل مسار.

كيف تجيب Fendix

تعيش بوابة الإصدار في ملف .fendix.yaml داخل المستودع: العتبة، وفرض الثقة، والتعامل مع شيفرة الاختبار، والاستثناءات. ويعمل المحرك نفسه في GitHub Actions وGitLab CI وCircleCI وJenkins، فيُفشل المهمة عندما تحظر نتيجةٌ الإصدار، وينشر ملفات SARIF في واجهة فحص الشيفرة لديك. وتسجّل القرارات المستضافة إصدار السياسة الذي اتُّخذت بموجبه.

ما الذي تحصل عليه

  • السياسة كشيفرة تُراجَع مثل أي تغيير آخر
  • الأدلة نفسها والسياسة نفسها تعطيان النتيجة نفسها دائمًا
  • مخرجات SARIF 2.1.0 وJSON للأدوات اللاحقة
كيف تفرضها في مسارات CI/CD
6

هل يمكننا أن نُري العميل ما الذي فُحص ولماذا اعتُمد الإصدار؟

سلّم القرار وأدلته وتغطيته، لا لقطة شاشة من لوحة أداة فحص.

كيف تجيب Fendix

يُصدَّر كل فحص كتقرير HTML مستقل أو SARIF أو JSON يحمل أساس القرار للنتائج الحاظرة، والتغطية المتحققة، وإصدار السياسة المطبّقة. وتفصل مساحات العمل المنفصلة مشاريع كل عميل وأعضاءه وسجله.

ما الذي تحصل عليه

  • تقرير HTML مستقل يفتحه العميل دون حساب
  • أساس القرار منقول إلى SARIF وJSON
  • مساحة عمل منفصلة لكل عميل
Fendix لشركات البرمجيات

الفحص هو طريقة وصول الأدلة

تشغّل Fendix محلّلاتها الخاصة وتستقبل نتائج الأدوات التي تستخدمها أصلًا. يتحول كل مصدر إلى دليل يغذّي القرار نفسه، ولا يمثّل أيٌّ منها القرار.

  • DAST: واجهات API العاملة

    تسرّب الإعدادات، وترويسات الأمان، وCORS، وكشف البيانات، وتحديد المعدّل، وخصائص ملفات تعريف الارتباط؛ وفحوص التفويض وIDOR باستخدام بيانات اعتماد؛ واختبارات نشطة اختيارية للحقن وXSS وSSRF وإعادة التوجيه المفتوح وترويسة Host وGraphQL والتلاعب بطرق HTTP.

  • SAST: الشيفرة المصدرية

    قواعد Semgrep مضمّنة، وتحليل تتبع البيانات في Python من مدخلات الطلب إلى المواضع الخطرة، وقواعد أنماط لـGo وJavaScript وTypeScript وJava وملفات Dockerfile وبيانات Kubernetes.

  • SCA: الاعتماديات

    الثغرات المعروفة في حزم PyPI وnpm (عبر OSV) ووحدات Go (عبر govulncheck)، مع دليل على ما إذا كانت الحزمة المعرّضة مستوردة فعلًا.

  • الأسرار

    بيانات الاعتماد المضمّنة في الشيفرة والإعدادات، تُحجب لحظة اكتشافها فلا تدخل القيمة نفسها أي تقرير.

  • ملفات SARIF المستوردة

    نتائج CodeQL وSemgrep وTrivy أو أي أداة تُنتج SARIF 2.1.0، تُستورد كأدلة وتبقى موسومة بأنها مستوردة.

  • التشغيل المحلي وما قبل الإيداع

    تعمل أداة CLI مفتوحة المصدر محليًا دون حساب ودون قياس استخدام؛ ويضيف fendix hook install فحصًا للتغييرات المجهّزة قبل كل إيداع.

من الأدلة إلى قرار يمكنك تفسيره

تقف الخطوات الست نفسها خلف كل حالة استخدام أعلاه.

  1. 1

    الأدلة الأمنية

    نتائج محللات Fendix وملفات SARIF المستوردة.

  2. 2

    التغطية المطلوبة

    هل عمل كل محلل تشترطه السياسة وأرسل نتيجته؟

  3. 3

    تصنيف النتائج والمخاطر

    الثقة، والاستثناءات، والمخاطر المقبولة، واستثناءات الإصدار.

  4. 4

    سياسة الإصدار

    العتبة، وفرض الثقة، والمحللات المطلوبة.

  5. 5

    قرار الإصدار

    PASS أو WARN أو BLOCK أو INCOMPLETE، مع الأسباب.

  6. 6

    سجل القرار

    ما الذي تقرر، وبموجب أي سياسة، وعلى أي أدلة.

تحفظ مساحات العمل المستضافة كل قرار مع مبرراته. أما سجلات القرار الأمني غير القابلة للتعديل والقابلة للتحقق بالبصمة فهي جزء من Managed CI المتاح حاليًا بشكل محدود.

شاهد القرار على أحد إصداراتك

في الجولة التقنية نشغّل Fendix على هدف تحدده ونراجع معك القرار الناتج. ولتقييم أطول، تغطي التجربة المُدارة مستودعًا واحدًا على مدى 14 يومًا.