يفحص عنوانًا مصرّحًا به أو مواصفات API أو شيفرة مصدرية، أو يجمع بينها، ثم ينتج تقريرًا أمنيًا خاضعًا للسياسة.
مستقر في v3.7.0
الصيغة
terminal
fendix scan [flags]المعاملات والمدخلات المطلوبة
يلزم تحديد واحد على الأقل من --url أو --spec أو --code. يضيف --import أدلة إلى الفحص ولا يفي بمتطلب الهدف.
أمثلة
فحص API أساسي
terminal
fendix scan --url https://staging.example.comفحص الشيفرة المصدرية
terminal
fendix scan --code . --format json --output results.jsonبوابة التغطية
terminal
fendix scan --code . --require-analyzers pip,npm,govulncheck --fail-on-coverage-gapإخراج SARIF
terminal
fendix scan --code . --format sarif --output results.sarifالأهداف والنطاق
مرّر الجدول أفقيًا للاطلاع على جميع الأعمدة.
| الخيار | النوع | الافتراضي | الإلزام | التهيئة | البيئة | الوصف |
|---|---|---|---|---|---|---|
--url | string | — | اختياري | — | — | عنوان API الأساسي لفحص الصندوق الأسود. |
--spec | string | — | اختياري | — | — | مسار أو عنوان HTTP(S) لمواصفات OpenAPI أو Swagger بصيغة YAML أو JSON. |
--code | string | — | اختياري | — | — | مسار الشيفرة المصدرية لفحص الصندوق الأبيض. |
المصادقة
مرّر الجدول أفقيًا للاطلاع على جميع الأعمدة.
| الخيار | النوع | الافتراضي | الإلزام | التهيئة | البيئة | الوصف |
|---|---|---|---|---|---|---|
--auth | string | — | اختياري | — | FENDIX_AUTH | قيمة بيانات المصادقة المرسلة مع الطلبات. |
--auth-type | string | — | اختياري | — | FENDIX_AUTH_TYPE | آلية إرسال بيانات المصادقة؛ تُكتشف تلقائيًا عند تركها فارغة.bearer · apikey · apikey-query · basic · cookie |
--auth-header | string | Authorization | اختياري | — | FENDIX_AUTH_HEADER | اسم ترويسة المصادقة، أو اسم معامل الاستعلام عند استخدام apikey-query. |
--auth-user2 | string | — | اختياري | — | — | بيانات مستخدم ثانٍ لاختبارات IDOR. |
--profile | string | — | اختياري | auth.profile | — | اسم ملف المصادقة داخل ~/.fendix/profiles/. |
الزحف وضوابط الأمان
مرّر الجدول أفقيًا للاطلاع على جميع الأعمدة.
| الخيار | النوع | الافتراضي | الإلزام | التهيئة | البيئة | الوصف |
|---|---|---|---|---|---|---|
--enable-active | bool | false | اختياري | scan.enable_active | — | يفعّل اختبارات الحقن النشطة بموافقة صريحة. |
--max-probes-per-endpoint | int | 20 | اختياري | — | — | الحد الأقصى للاختبارات النشطة لكل نقطة نهاية. |
-w, --workers | int | 10 | اختياري | scan.workers | — | عدد عمال HTTP المتزامنين. |
--timeout | int | 10 | اختياري | scan.timeout | — | مهلة طلب HTTP بالثواني. |
--delay | int | 100 | اختياري | scan.delay_ms | — | الفاصل بالمللي ثانية بين طلبات HTTP. |
--wordlist | string | — | اختياري | crawler.wordlist_path | — | مسار قائمة كلمات لاكتشاف المسارات بدل القائمة المضمنة. |
--crawl-depth | int | 1 | اختياري | crawler.crawl_depth | — | عمق تتبع الروابط المكتشفة؛ تعني 0 تعطيل الزحف. |
--max-endpoints | int | 500 | اختياري | crawler.max_endpoints | — | الحد الأقصى لنقاط النهاية المكتشفة؛ تعني 0 عدم وجود حد. |
--max-requests | int64 | 0 | اختياري | budgets.max_requests | — | حد لين لإجمالي طلبات HTTP؛ تعني 0 عدم وجود حد. |
--max-duration | duration | 0s | اختياري | budgets.max_duration | — | حد لين للمدة الإجمالية؛ تعني 0 عدم وجود حد. |
--respect-robots | bool | false | اختياري | crawler.respect_robots | — | يعامل تعليمات Disallow في robots.txt كقيود ملزمة. |
--allow-private-targets | bool | false | اختياري | — | — | يسمح بالاتصال بالعناوين الخاصة والمحلية ويعطّل حاجز SSRF للاتصالات الصادرة. |
المحللات والاستيراد
مرّر الجدول أفقيًا للاطلاع على جميع الأعمدة.
| الخيار | النوع | الافتراضي | الإلزام | التهيئة | البيئة | الوصف |
|---|---|---|---|---|---|---|
--checks | stringSlice | auth,injection,deps (runtime) | اختياري · قابل للتكرار | — | — | يستبدل مجموعة فحوصات محرك Python عند تشغيله؛ القيمة الافتراضية auth,injection,deps. يفعّل --code هذه المرحلة تلقائيًا ما لم تمرر --python-engine=false صراحة، بينما تعمل محللات Go الأصلية بصورة مستقلة.auth · injection · deps |
--python-engine | bool | auto-enabled by --code unless explicitly false | اختياري | — | — | يشغّل محرك Python لفحوصات auth وinjection وdeps. يفعّله --code تلقائيًا ما لم تمرر --python-engine=false صراحة. لا تتضمن الملفات التنفيذية المستقلة المحرك؛ وفّر شجرة python محلية أو FENDIX_ENGINE، بينما تتضمنها الحاوية الرسمية. |
--fast | bool | false | اختياري | — | — | يتجاوز Semgrep ومحللات التبعيات الأصلية؛ لا يعطّل محرك Python تلقائيًا. |
--no-native-deps | bool | false | اختياري | — | — | يعطّل محلل ثغرات التبعيات الأصلي المكتوب بلغة Go. |
--use-pip-audit | bool | false | اختياري | — | — | يستخدم pip-audit بدل عميل OSV الأصلي لفحص تبعيات Python. |
--offline | bool | false | اختياري | — | — | يستخدم لقطة offline-db المحلية لثغرات pip وnpm الأصلية ويتجاوز govulncheck الأصلي؛ أنشئ اللقطة عبر fendix db update. لا يصل هذا الخيار إلى فحص تبعيات Python الذي يفعّله --code تلقائيًا وقد يستخدم أدوات متصلة بالشبكة؛ أضف --checks auth,injection أو --python-engine=false للحصول على فحص معزول عن الشبكة. |
--offline-db | string | ~/.fendix/offline-db.json (runtime) | اختياري | — | — | مسار لقطة قاعدة الثغرات المحلية؛ يعمل مع --offline. |
--no-plugins | bool | false | اختياري | — | — | يعطّل اكتشاف الإضافات الخارجية. |
--allow-repo-local-plugins | bool | false | اختياري | — | — | يسمح بتشغيل إضافات المستودع المحلية؛ لا تستخدمه مع طلبات دمج غير موثوقة. |
--import | stringSlice | — | اختياري · قابل للتكرار | — | — | يدمج ملف SARIF 2.1.0 من أداة أخرى؛ الخيار قابل للتكرار. |
القرارات والتغطية
مرّر الجدول أفقيًا للاطلاع على جميع الأعمدة.
| الخيار | النوع | الافتراضي | الإلزام | التهيئة | البيئة | الوصف |
|---|---|---|---|---|---|---|
--fail-on | string | — | اختياري | fail_on | — | يعيد رمز الخروج 1 عندما تصل نتيجة عند هذا الحد أو فوقه إلى BLOCK.CRITICAL · HIGH · MEDIUM · LOW |
--enforce-confidence | bool | true | اختياري | scan.enforce_confidence | — | لا يسمح بوصول نتيجة عند --fail-on أو فوقه إلى BLOCK إلا إذا دعمها نطاق الثقة ودليل مؤيد. يبقى نطاق LOW عند WARN، ولا يحجب نطاق MEDIUM الإصدار إلا بإشارة مستقلة، بينما تحتاج الإشارات البديهية بذاتها إلى نطاق HIGH. لا تُحذف الأدلة. يعيد --enforce-confidence=false بوابة الخطورة القديمة فقط، وتُوسم النتائج التي تحجب بسبب هذا التخفيف وحده بالحقل policy_override. |
--deescalate-tests | bool | true | اختياري | scan.deescalate_tests | — | يعرض نتائج شيفرة الاختبار وبيانات الاختبار عند INFO بدل WARN مع إبقاء الأدلة وعدم إخفائها. يمكن لنتيجة تبلغ --fail-on أن تمنع الإصدار إذا دعمتها أدلة مستقلة، بينما تبقى المطابقة غير المدعومة في شيفرة الاختبار عند WARN. مرّر --deescalate-tests=false لمعاملة شيفرة الاختبار مثل شيفرة الإنتاج. |
--block-on-inapplicable | bool | false | اختياري | — | — | يمنع الإصدار بسبب تبعية مصابة حتى عندما لا تجد Fendix استيرادًا للمكوّن المتأثر. القيمة الافتراضية false تُبقي النتيجة عند WARN مع عرض أدلتها كاملة لأن المسار المصاب غير قابل للتطبيق وفق الأدلة المتاحة. فعّل الخيار عندما تمنع السياسة شحن أي إصدار مصاب بصرف النظر عن قابلية التطبيق، مثل تدقيق SBOM بدل مسار الاستدعاء. |
--fail-on-scanner-error | bool | false | اختياري | — | — | يعيد رمز الخروج 2 إذا بدأ أي محلل مسجل في metadata.scanner_status التنفيذ ثم سجل خطأ. يحوّل ذلك فجوة التغطية الصامتة إلى إخفاق مناسب لـ CI، ولا تُحتسب الإدخالات المتجاوزة. |
--fail-on-coverage-gap | bool | false | اختياري | — | — | يعيد رمز الخروج 2 عندما يتعذر تشغيل محلل جرت تهيئته لهذا الفحص أو يفشل، أي عندما تكون metadata.coverage.configured_complete=false. لا تتسبب المحللات المعطلة أو غير القابلة للتطبيق أو غير المدعومة في هذا الإخفاق. |
--require-analyzers | stringSlice | — | اختياري · قابل للتكرار | — | — | قائمة بأسماء المحللات المطلوبة مفصولة بفواصل. يجب أن يسجل كل محلل الحالة ok أو not_applicable حتى يعيد الفحص الرمز 0، وأي حالة أخرى تعيد الرمز 2. هذا أشد من --fail-on-coverage-gap؛ تعطيل محلل مطلوب بخيار آخر يُعد تعارضًا ويعيد الرمز 2.dast · spec · active-probes · secrets · textscan · semgrep · govulncheck · pip · npm · python-engine · python-engine/auth · python-engine/injection · python-engine/deps · plugins |
السياسة والسجل
مرّر الجدول أفقيًا للاطلاع على جميع الأعمدة.
| الخيار | النوع | الافتراضي | الإلزام | التهيئة | البيئة | الوصف |
|---|---|---|---|---|---|---|
--config | string | .fendix.yaml in cwd (auto-detect) | اختياري | — | — | مسار ملف .fendix.yaml؛ يبحث Fendix عنه في مجلد العمل تلقائيًا عند غياب الخيار. |
--baseline | string | — | اختياري | — | — | مسار تقرير نتائج سابق للمقارنة أو التحقق. |
--save-baseline | string | — | اختياري | — | — | يحفظ النتائج الحالية كخط أساس في المسار المحدد. |
--ignore | string | — | اختياري | ignore_path | — | مسار ملف .fendix-ignore. |
--diff | string | — | اختياري | — | — | يقصر فحص الشيفرة على الملفات المتغيرة مقارنة بمرجع Git. |
--staged | bool | false | اختياري | — | — | يفحص تغييرات Git المرحلية فقط ويضمّن سلوك --diff. |
الإخراج والتشخيص
مرّر الجدول أفقيًا للاطلاع على جميع الأعمدة.
| الخيار | النوع | الافتراضي | الإلزام | التهيئة | البيئة | الوصف |
|---|---|---|---|---|---|---|
-o, --output | string | — | اختياري | — | — | مسار ملف الإخراج؛ يستخدم stdout عند تركه فارغًا. |
-f, --format | string | json | اختياري | scan.format | — | صيغة التقرير الناتج.json · html · sarif · pdf |
--lang | string | en | اختياري | — | — | لغة تقرير HTML؛ تبقى الصيغ الأخرى بالإنجليزية.en · ar |
--debug-bundle | string | — | اختياري | — | — | يكتب حزمة تشخيص منقحة إلى المسار المحدد. |
-v, --verbose | bool | false | اختياري | — | — | يعرض الطلبات والنتائج الخام لأغراض التشخيص. |