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

استخدام سطر الأوامر

الأوامر والرايات الأساسية التي تستخدمها الفرق لتشغيل عمليات الفحص محليًا وفي CI/CD.

نطاق التنفيذ الحالي

بيئة التشغيل
لا تتطلب ملفات Go التنفيذية الجاهزة مترجم Go للفحص الأساسي. يتطلب البناء من المصدر Go 1.25+. لمحركات الفحص الاختيارية متطلبات تشغيل خاصة؛ راجع التغطية للتأكد من تنفيذها.
DAST
يفحص تحليل الروابط وواجهات API السلوك الظاهر أثناء التشغيل. تتطلب الاختبارات النشطة --enable-active. لا تثبت استجابة HTTP 200 وحدها الوصول إلى بيانات حساسة.
SAST
تغطي القواعد الساكنة الأصلية أنماطًا مدعومة في Go وJavaScript وJava والبنية التحتية. يوسع Semgrep ومحرك Python الاختياري الفحوصات المناسبة. دعم اللغة لا يعني تغطية جميع الأطر أو المسارات.
SCA
يستخدم تحليل Go أداة govulncheck. تستخدم محركات تبعيات Python وnpm ملفات التعريف والتثبيت المدعومة، ومنها poetry.lock وPipfile.lock وpackage-lock.json. قد تنقل استعلامات الثغرات أسماء الحزم وإصداراتها.
الأدلة والسياسة
يربط الترابط المشاهدات المتطابقة المدعومة؛ ليست لكل نتيجة مصادر متعددة. قد تكفي أدلة قوية من مصدر واحد. الشدة والثقة وحالة النتيجة وتوصية الإصدار مفاهيم منفصلة.
التغطية والمراجعة البشرية
قد يترك فشل محرك أو غياب أدلة مطلوبة الإصدار غير مكتمل. تعني PASS نتيجة وفق السياسة والتغطية المحددتين وليست ضمانًا للأمان أو موافقة بشرية.

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

اقرأ معالجة البيانات حسب طريقة النشر

الأوامر

fendix scanتشغيل فحص أمني على هدف محدد
fendix initإنشاء سير عمل CI جاهز للاستخدام (.github/ أو GitLab أو CircleCI) + سياسة .fendix.yaml + ملف .fendix-ignore للمستودع الحالي. يكتشف نظام CI تلقائيًا من جذر المشروع؛ استخدم --ci للتجاوز (v0.6+)
fendix demoتشغيل OWASP Juice Shop محليًا داخل Docker، وإجراء فحص نموذجي، و(مع --open) فتح تقرير HTML (v0.6.1+)
fendix reportإعادة عرض النتائج المحفوظة بتنسيق مختلف (json | html | sarif | pdf)
fendix verifyإعادة تشغيل نتيجة واحدة عبر المُعرّف للتحقق منها (رمز الخروج 0 عند الحل، ورمز الخروج 1 عند التأكيد؛ أصلح الإصدار v0.11.1 رموز الخروج المعكوسة)
fendix versionطباعة إصدار Fendix المثبَّت
fendix hook installتثبيت خطّاف pre-commit يُجري فحصًا قائمًا على الفروق (الأسرار + textscan، بأقل من ثانية) على الملفات المُجهَّزة ويمنع الالتزام عند وجود سرّ / نتيجة بخطورة HIGH أو أعلى. يحترم core.hooksPath ويرفض استبدال خطّاف خارجي (v0.16+)
fendix hook uninstallإزالة خطّاف pre-commit الخاص بـ Fendix (v0.16+)
fendix hook statusالإبلاغ عمّا إذا كان خطّاف pre-commit الخاص بـ Fendix مثبَّتًا ونشطًا (v0.16+)
fendix plugins listعرض كل إضافة مُكتشَفة ضمن .fendix/plugins/ و~/.fendix/plugins/ (v0.10+)
fendix plugins install <git>استنساخ مستودع إضافة إلى ~/.fendix/plugins/ والتحقق من بيان manifest الخاص بها (v0.10+)
fendix ignore listعرض كل قاعدة في .fendix-ignore مع حالتها: منتهية الصلاحية / قاربت على الانتهاء / نشطة / بلا انتهاء صلاحية (v0.11+)
fendix ignore validateتحليل .fendix-ignore والإبلاغ عن أخطاء المخطط / التاريخ / القاعدة الفارغة؛ مع رمز خروج غير صفري لبوابة CI (v0.11+)
fendix ignore prune [--dry-run]إزالة القواعد منتهية الصلاحية من .fendix-ignore وإعادة كتابة الملف (v0.11+)
fendix db updateاستيراد ملف JSON لتصدير استشارات OSV إلى لقطة CVE محلية معزولة عن الشبكة. يُستخدم قبل عمليات الفحص دون اتصال (v0.13+)
fendix db listطباعة البيانات الوصفية للقطة CVE المحلية (الطابع الزمني، وعدد المُدخلات، والأنظمة البيئية). استخدم --path لتحديد موقع غير افتراضي (v0.13+)
fendix db verifyطباعة قيمة SHA-256 للقطة CVE المحلية للتحقق من السلامة. استخدم --path لتحديد موقع غير افتراضي (v0.13+)
fendix jiraمزامنة Jira غير متكررة الأثر — تُنشئ مشكلة واحدة لكل نتيجة تتجاوز FENDIX_JIRA_MIN_SEVERITY (الافتراضي HIGH). آمنة للتشغيل المتكرر؛ تستخدم وسم fendix-id كمفتاح لعدم التكرار (v0.13.1+)
fendix notifyإرسال تنبيهات Slack Block Kit + Teams Adaptive Card للنتائج التي تتجاوز FENDIX_NOTIFY_MIN_SEVERITY (الافتراضي CRITICAL). اضبط FENDIX_SLACK_WEBHOOK_URL و/أو FENDIX_TEAMS_WEBHOOK_URL (v0.13.1+)

رايات الفحص

--urlعنوان URL الأساسي لواجهة API المستهدفة
--specOpenAPI/Swagger: مسار محلي أو عنوان //:https
--codeدليل الشيفرة المصدرية لتحليل الصندوق الأبيض
--authقيمة ترويسة المصادقة، مثل "Bearer token123"
--auth-typeملف تعريف المصادقة: bearer | apikey | apikey-query | basic | cookie (الافتراضي: اكتشاف تلقائي)
--auth-headerاسم ترويسة مصادقة مخصص (الافتراضي: Authorization). مع --auth-type apikey-query، يكون هذا اسم معامل الاستعلام في عنوان URL (الافتراضي: api_key).
--auth-user2مصادقة مستخدم ثانٍ لفحوصات IDOR
--profileملف تعريف المصادقة من ~/.fendix/profiles/
-o, --outputمسار ملف الإخراج (الافتراضي: stdout)
-f, --formatتنسيق الإخراج: json | html | sarif | pdf (الافتراضي: json). لا يتطلب pdf وجود Semgrep (Go خالص). يقبل html الراية --lang ar للعربية/RTL (v0.13+)
--fail-onالخروج برمز 1 فقط عندما تكون النتيجة التي بلغت العتبة (CRITICAL | HIGH | MEDIUM) مدعومة بنطاق ثقتها: نطاق HIGH يحظر، وMEDIUM يحظر فقط مع إشارة مؤيِّدة واحدة على الأقل، وLOW يكتفي بالتنبيه. لم تعد الخطورة وحدها تشكّل بوابة (v2.0+؛ راجع --enforce-confidence)
--enforce-confidenceربط بوابة --fail-on بنطاق الثقة الحتمي إضافةً إلى الخطورة (الافتراضي: مُفعَّل). النتيجة المعلَّمة بأنها غير مؤكَّدة بفحص حي لا تحظر أبدًا دون إشارة مؤيِّدة. وتعيد --enforce-confidence=false التعيين القائم على الخطورة وحدها كما كان بالضبط قبل v2.0 (v2.0+)
--deescalate-testsعرض نتائج شيفرة الاختبارات والتجهيزات بمستوى INFO، وإبقاء النتيجة غير المؤيَّدة التي تبلغ عتبة --fail-on عند WARN بدل BLOCK (الافتراضي: مُفعَّل). أما النتيجة المؤيَّدة — مسار تتبّع مُثبَت أو بيانات اعتماد حية تحقّق منها المزوّد — فما زالت تحظر. وتعيد --deescalate-tests=false الحظر على نتائج شيفرة الاختبارات (v1.2+؛ أُضيف خفض BLOCK إلى WARN في v2.0)
--fail-on-scanner-errorالخروج بقيمة غير صفرية (2) إذا فشل أي فاحص (govulncheck/pip/npm/secrets/semgrep/textscan) أثناء التشغيل — يحوّل فجوة التغطية الصامتة إلى فشل في الـ CI.
--baselineملف JSON للنتائج السابقة للمقارنة — عرض المشكلات الجديدة فقط
--save-baselineحفظ النتائج الحالية في المسار للمقارنات المستقبلية
--diffفحص قائم على الفروق: حصر ماسحات الصندوق الأبيض في الملفات المتغيّرة مقارنةً بـ HEAD (أو --diff=‹ref› مقارنةً بمرجع). يعمل SCA فقط عند تغيّر ملف بيان/قفل. يختلف عن --baseline (الذي يُرشِّح النتائج لا الملفات) (v0.16+)
--stagedمع --diff، الحصر في الملفات المُجهَّزة في git فقط — ما يوشك الالتزام على إدخاله. أساس خطّاف pre-commit (v0.16+)
--fastالأسرار + textscan فقط، بميزانية أقل من ثانية — يقترن مع --diff --staged كبوابة عند كل التزام. نحو 18 مللي ثانية على مستودع أحادي بـ 200 ملف (v0.16+)
--enable-activeتفعيل المسبارات النشطة — الحقن (SQLi وCMDi وCRLF)، وإعادة التوجيه المفتوحة، وثغرات XSS المنعكسة، وثغرات SSRF داخل النطاق، وحقن ترويسة المضيف، واستكشاف GraphQL، والتلاعب بطرق HTTP
--allow-private-targetsالسماح بفحص العناوين الخاصة/المحلية وعنوان بيانات السحابة (يُعطّل حارس SSRF). يُفعّل تلقائيًا عندما يكون --url خاصًا بالفعل.
--max-probes-per-endpointتحديد سقف للحمولات النشطة لكل نقطة نهاية عند --enable-active (الافتراضي: 20)
-w, --workersعُمّال HTTP المتزامنون (الافتراضي: 10)
--timeoutمهلة HTTP بالثواني (الافتراضي: 10)
--delayالمللي ثانية بين الطلبات (الافتراضي: 100)
--ignoreمسار ملف الكبت .fendix-ignore
--wordlistمسار قائمة كلمات مخصصة للقوة الغاشمة؛ يتجاوز القائمة المدمجة المكوّنة من 117 مسارًا
--crawl-depthعمق الزحف العودي لروابط HTML — 0 يُعطّل، 1 = روابط الصفحة الرئيسية (الافتراضي)، 2 أو أكثر = أعمق
--max-endpointsتحديد سقف لنقاط النهاية المُكتشَفة بعد إزالة التكرار (الافتراضي: 500؛ 0 = بلا سقف)
--max-requestsسقف مرن لإجمالي طلبات HTTP خلال مرحلة الفحص؛ الاكتشاف معفى (v0.5؛ 0 = بلا سقف)
--max-durationمهلة زمنية كنص مدّة Go، مثل 5m أو 90s أو 2m30s (v0.5)
--respect-robotsالتعامل مع قواعد Disallow في robots.txt كقيد صارم عبر الاكتشاف (v0.5؛ معطّل افتراضيًا)
--debug-bundleكتابة ملف تشخيصي مُنقّح بصيغة .tar.gz في المسار المحدد — مع إخفاء قيم المصادقة، وتضمين كامل مجرى DEBUG slog + سجل تدقيق المسبارات. لإرفاقه بتقارير الأخطاء (v0.6)
--configمسار ملف سياسة .fendix.yaml (الافتراضي: اكتشاف .fendix.yaml تلقائيًا في الدليل الحالي؛ المسار الصريح مع ملف مفقود خطأ صارم). الأولوية: افتراضي cobra < .fendix.yaml < راية CLI الصريحة (v0.6.1+)
--no-pluginsتعطيل اكتشاف الإضافات الخارجية في .fendix/plugins/ + ~/.fendix/plugins/. يُستخدم في CI المعزول أو عند عزل سلوك المحرك عن إضافات الطرف الثالث (v0.7+)
--allow-repo-local-pluginsتفعيل تشغيل الإضافات المحلية ضمن ‎‹scan-dir›/.fendix/plugins/‎ (غير آمن في طلبات الدمج غير الموثوقة؛ ‎~/.fendix/plugins/‎ موثوق دائمًا).
--no-native-depsتعطيل ماسحات CVE الأصلية داخل العملية للاعتماديات (Go عبر golang.org/x/vuln، وPyPI + npm عبر OSV.dev). يعود المنسّق إلى مسار Python deps.py. مفيد لعمليات الفحص دون اتصال (دون وصول شبكي إلى قاعدة بيانات الثغرات) أو لتصحيح تداخل إزالة التكرار (v0.8+)
--use-pip-auditاستخدام أداة pip-audit لفحص ثغرات اعتماديات Python بدلًا من عميل OSV.dev الأصلي (يعود إلى OSV.dev إذا لم تكن pip-audit متاحة).
--python-engineتشغيل محرك Python للصندوق الأبيض لفحوصات المصادقة / الحقن / الاعتماديات. معطّل افتراضيًا اعتبارًا من v0.9 — أصبحت الأسرار وSemgrep أصلية في Go الآن (تغيير سابق) ولم تعد توزيعة Python المدمجة مُجمَّعة. يتطلب شجرة مصدر python/ محلية (أو FENDIX_ENGINE يشير إليها). تبلغ كلفة البدء البارد نحو 24 مللي ثانية p50 مع تفعيل الراية مقابل نحو 6 مللي ثانية دونها (v0.9+)
--langلغة تقرير HTML: en (الافتراضي) | ar (العربية، من اليمين إلى اليسار). تنطبق على --format html فقط؛ تبقى JSON/SARIF/PDF بالإنجليزية (v0.13+)
--classificationنص لافتة التصنيف المعروض في أعلى يمين كل صفحة PDF (الافتراضي: INTERNAL). النص الفارغ يُعطّل اللافتة. ينطبق فقط على --format pdf (v0.13+)
--offlineتفعيل وضع الفحص المعزول تمامًا عن الشبكة — تستشير فحوصات CVE للاعتماديات لقطة CVE المحلية بدلًا من api.osv.dev. يتطلب --offline-db أو لقطة في المسار الافتراضي. استخدم fendix db update لتعبئة اللقطة (v0.13+)
--offline-dbمسار لقطة CVE المحلية المستخدمة في وضع --offline (الافتراضي: ~/.fendix/osv-snapshot.json). تُنشأ عبر fendix db update (v0.13+)
--ciنظام CI لأمر fendix init: github (الافتراضي) | gitlab | circleci. يكتشف تلقائيًا من جذر المشروع عند الحذف. يُنشئ github الملف .github/workflows/fendix.yml؛ وينشئ gitlab الملف .gitlab-ci.fendix.yml؛ وينشئ circleci الملف .circleci/fendix-config.yml (v0.14+)
-v, --verboseطباعة جميع الطلبات والنتائج الخام

رايات التقرير

إعادة عرض ملف JSON محفوظ للنتائج بتنسيق مختلف دون إعادة الفحص.

--inputمسار ملف JSON للنتائج (مطلوب)
-f, --formatتنسيق الإخراج: json | html | sarif | pdf (الافتراضي: html)
-o, --outputمسار ملف الإخراج (الافتراضي: stdout)
--langلغة تقرير HTML: en | ar (العربية/RTL) — تنطبق على --format html فقط (v0.13+)
--classificationنص لافتة التصنيف لإخراج PDF (الافتراضي: INTERNAL؛ النص الفارغ يُعطّلها) (v0.13+)

رايات التهيئة

يكتشف fendix init حزمة تقنيات المشروع (Go وPython وNode.js وRuby وRust وJava/Kotlin وPHP) وأي مواصفة OpenAPI/Swagger مُرافقة، ثم يكتب سير عمل CI + .fendix.yaml (انظر مرجع المخطط) + .fendix-ignore. أنظمة CI المدعومة (v0.14+): GitHub Actions وGitLab CI وCircleCI — تُكتشف تلقائيًا من جذر المشروع، أو تجاوزها عبر --ci. يرفض الكتابة فوق الملفات افتراضيًا؛ والفحص المسبق غير قابل للتجزئة عبر الملفات الثلاثة جميعها.

--forceالكتابة فوق سير عمل CI الموجود، أو .fendix.yaml، أو .fendix-ignore (الافتراضي: الرفض والخروج؛ الفحص المسبق غير قابل للتجزئة عبر الثلاثة جميعها)
--printتشغيل تجريبي: عرض القوالب على stdout دون المساس بالقرص
--ciنظام CI المستهدف: github (الافتراضي) | gitlab | circleci. يُكتشف تلقائيًا من جذر المشروع؛ تجاوزه بهذه الراية (v0.14+)

رايات العرض التجريبي

يُشغّل fendix demo الصورة bkimminich/juice-shop:v17.1.1 داخل Docker على localhost:3000، ويُجري fendix scan قياسيًا عليها، ويعرض تقرير HTML. تُنظَّف الحاوية دائمًا عند الخروج (نجاحًا أو فشلًا). مفيد للمُقيّمين لأول مرة الراغبين في رؤية فحص حقيقي دون توجيه fendix إلى بيئة الإنتاج.

--openفتح تقرير HTML المعروض في متصفحك الافتراضي عند انتهاء الفحص
--portالمنفذ المحلي لربط juice-shop به (الافتراضي: 3000)
--outputمسار إخراج تقرير HTML (الافتراضي: $TMPDIR/fendix-demo-‹unix›.html)
--imageمرجع صورة Docker لـ juice-shop (الافتراضي: bkimminich/juice-shop:v17.1.1، مثبَّت لضمان قابلية التكرار)

فحص هجين

fendix scan \
  --url https://api.example.com \
  --spec ./openapi.yaml \
  --code ./src \
  --format html \
  --fail-on HIGH

يُجري تحليلي الصندوق الأسود والصندوق الأبيض معًا ويربط النتائج.

الفحص النشط بالمسبارات

fendix scan \
  --url https://api.example.com \
  --enable-active \
  --fail-on CRITICAL \
  --save-baseline ./baseline.json

يُفعّل المسبارات النشطة — حقن SQLi/CMDi/CRLF إضافةً إلى إعادة التوجيه المفتوحة، وثغرات XSS المنعكسة، وثغرات SSRF داخل النطاق، وحقن ترويسة المضيف، واستكشاف GraphQL، والتلاعب بطرق HTTP. يتطلب تصريحًا صريحًا.

تقرير PDF + مزامنة Jira (v0.13+)

fendix scan \
  --code ./src --format pdf \
  --classification "CONFIDENTIAL" \
  --output report.pdf

export FENDIX_JIRA_URL=https://org.atlassian.net
export FENDIX_JIRA_PROJECT_KEY=SEC
export FENDIX_JIRA_EMAIL=you@example.com
export FENDIX_JIRA_API_TOKEN=<token>
fendix scan --format json --output f.json
fendix jira --findings f.json

تقرير تنفيذي بصيغة PDF مع لافتة تصنيف + مزامنة مشكلات Jira غير متكررة الأثر.

فحص دون اتصال معزول عن الشبكة (v0.13+)

# One-time: populate CVE snapshot (internet-connected machine)
fendix db update --source osv-export.json

# Copy ~/.fendix/osv-snapshot.json to air-gapped host

# Air-gapped scan — no outbound network calls
fendix scan \
  --code ./src \
  --offline \
  --offline-db ./osv-snapshot.json

تغطية كاملة لثغرات CVE في الاعتماديات دون وصول إلى الإنترنت.

يعكس سلوك واجهة سطر الأوامر عقد الواجهة الخلفية والإعدادات الافتراضية الآمنة.