ما الجديد
سجل إصدارًا بإصدار لتطوير Fendix. صدر الإصدار v3.7.0 في أكتوبر 2026: صار إجراء GitHub يُفشل المهمة حين يتعذّر عمل Semgrep، وصار تشغيل Semgrep الذي ينتهي بخطأ فادح يُسجَّل فاشلًا بدل أن يمرّ كأنه فحص نظيف. يذكر كل إدخال أدناه ما تغيّر في ذلك الإصدار.
Documentation
April 2026
- Complete README.md with all 10 required sections
- CONTRIBUTING.md with development setup and check-writing guides
- 11 individual check documentation pages in docs/checks/
- 6 Architecture Decision Records (ADR-001 through ADR-006)
- CHANGELOG.md following Keep a Changelog format
- Full godoc (92 Go symbols) and docstring (16 Python symbols) coverage
Distribution
April 2026
- Python engine embedded into Go binary via go:embed
- Auto-extraction to ~/.fendix/engine/ on first run with version stamp
- Graceful fallback if Python not installed (whitebox skipped with clear message)
- GitHub Actions release workflow: linux/amd64, darwin/amd64, darwin/arm64
- Multi-stage Dockerfile with non-root user
- curl-pipe installer with platform detection and sha256 verification
- Homebrew formula (brew tap fendix/tap && brew install fendix)
Reporting & CI/CD
April 2026
- JSON reporter with full scan metadata (mode, endpoints, source counts)
- Self-contained HTML report with JS sorting, expand/collapse, print CSS
- SARIF 2.1.0 reporter — GitHub Code Scanning compatible
- fendix report command — re-render JSON to HTML/SARIF without re-scanning
- Baseline diff mode: --baseline and --save-baseline for PR workflows
- CI/CD integration docs with GitHub Actions examples
Active Scanner
March 2026
- Safe probe framework with audit log and legal disclaimer
- Time-based blind SQL injection detection (MySQL, PostgreSQL, MSSQL)
- Command injection canary detection with safe echo payloads
- CRLF header injection probes
- Per-endpoint probe rate limiter (max 20 probes/endpoint)
- --enable-active gate ensures probes never run by default
Hybrid Engine & Orchestration
March 2026
- Go subprocess spawner for Python engine with full IPC
- Streaming Finding reader with malformed-line resilience
- Correlator: endpoint normalization, fuzzy matching, severity escalation
- .fendix-ignore suppression with YAML rules and expiry dates
- Baseline diff for tracking new vs. existing findings
- --fail-on exit code logic for CI/CD gates
Auth Scanner
March 2026
- AuthContext model with multi-source credential resolution
- Unauthenticated access detection on protected endpoints
- JWT bypass checks: none algorithm, expired token, signature strip
- IDOR two-account access control verification
- Credential masking ([REDACTED]) in all report formats
- ~/.fendix/profiles/ persistent config system
White-Box Engine
March 2026
- Python engine.py with full IPC contract and error handling
- Secrets analyzer: 7 pattern types (AWS, PEM, API key, JWT, DB URI, etc.)
- OpenAPI spec parser for 2.0 and 3.x with 4 auth checks
- Semgrep rules for auth, injection, and secrets
- AST analyzer for Python and JavaScript code patterns
- Dependency CVE checker via pip-audit and npm audit
Passive Scanner & Reporting
February 2026
- Endpoint crawler with spec parsing, JS discovery, and brute-force
- Security headers, CORS, data exposure, and rate limit checks
- Worker pool concurrency model
- JSON reporter with scan metadata
- Self-contained HTML reporter with color-coded severity
- Orchestrator wiring for all passive checks
صدر الإصدار v3.7.0 في أكتوبر 2026 — صار إجراء GitHub يشترط عمل Semgrep في فحص الشيفرة ويُفشل المهمة حين يتعذّر تشغيله، ولا يثبّت إلا الحزم الجاهزة (wheels)، ولا يرفع SARIF إلا لفحص اكتمل، وصار تشغيل Semgrep المنتهي بخطأ فادح يُسجَّل فاشلًا؛ ولا تغييرات في مخطط التقرير أو SARIF أو البصمات أو سياسة القرار، ويبقى لكل رمز خروج معناه. صدر الإصدار v3.6.5 في أكتوبر 2026 — أصلحت تحديثات Semgrep 1.182.1 وMCP 1.29.0 وgolang.org/x/mod 0.40.0 آخر الثغرات عالية الخطورة القابلة للإصلاح في الصورة الرسمية، ولم يعد Semgrep يتصل بخادم semgrep.dev، وصارت مشغّلات CI ذاتية الاستضافة على Linux تحتاج إلى glibc 2.34 أو أحدث لتشغيل Semgrep؛ ولا تغييرات في الفاحصات أو البصمات أو مخطط التقرير أو سياسة القرار أو رموز الخروج. صدر الإصدار v3.6.4 في أكتوبر 2026 — أُعيد بناؤه باستخدام Go 1.27.3 وبحزمة certifi 2026.10.23، فلم تعد اتصالات TLS تثق بسلطات التصديق الوسيطة الثماني التابعة لـ emSign التي اختُرقت مفاتيحها الخاصة، ولم يعد بإمكان هدف فحص خبيث عبر HTTP/2 أن يستنزف معالج الفاحص؛ ولا تغييرات في الفاحصات أو البصمات أو مخطط التقرير أو سياسة القرار أو رموز الخروج. صدر الإصدار v3.6.3 في أكتوبر 2026 — صارت أربع قواعد Semgrep مضمّنة لم تكن تطابق شيئًا تُبلغ عن نتائجها، بالحالة WARN افتراضيًا مع --fail-on المقيّدة بمستوى الثقة؛ وتنص إرشادات المصادقة في Flask على وضع المُزخرِف أسفل @app.route(...)؛ وصار لإحدى عشرة قاعدة نص ثابت في الفهرس؛ ولا تغيير في هوية النتائج. صدر الإصدار v3.6.2 في أكتوبر 2026 — صارت الفحوصات القائمة على الفروق مع مسار --code نسبي تفحص الملفات المتغيّرة من جديد، ويتحول نطاق الفروق الذي لا يمكن تمثيله بأمان إلى فحص كامل. صدر الإصدار v3.6.1 في أكتوبر 2026 — صار ملف SARIF لفحص بلا نتائج صالحًا، وصار إجراء GitHub يتحقق من توقيع الإصدار قبل تشغيل الملف التنفيذي. صدر الإصدار v3.6.0 في أكتوبر 2026 — صارت خطوط الأساس وقواعد .fendix-ignore وملفات SARIF تعمل على كل وقوع أمني على حدة، فلم يعد بإمكان بيانات اختبار مُدرجة في خط الأساس أو مستبعدة أن تخفي بيانات اعتماد إنتاجية جديدة مجمّعة معها؛ مع صيغة خط الأساس 2، ونتيجة SARIF لكل وقوع، وتتبّع fendix jira وfendix verify لكل وقوع. صدر الإصدار v3.5.1 في أكتوبر 2026 — صار fendix init يكتب ملفات CI تثبّت إصدارًا محددًا من Fendix بعد التحقق من توقيعه، وصار brew upgrade يصل إلى التثبيتات التي سجّلها Homebrew القديم بالإصدار 64، وصار بإمكان المثبّت اشتراط التوقيع أو بصمة SHA-256 محددة؛ ولا تغييرات في الفاحصات أو البصمات أو مخطط التقرير أو سياسة القرار أو رموز الخروج. صدر الإصدار v3.5.0 في أكتوبر 2026 — صارت --fail-on ترفض العتبة غير الصالحة بدل أن تُجري المسح بلا عتبة بصمت، ولم يعد fendix verify يعدّ المدخلات المفقودة دليلًا على الإصلاح، وتُنشر الصور على Docker Hub؛ ولا تغييرات في البصمات أو مخطط التقرير أو سياسة القرار. صدر الإصدار v3.4.1 في سبتمبر 2026 — تُبنى صور المحرك الآن بلغة Go 1.27 وتشحن بها، فيرتفع سقف الوحدات المدعومة في govulncheck من 1.25؛ ولا تغييرات في الفاحصات أو البصمات أو رموز الخروج، ويبقى الحد الأدنى لإصدار وحدات Go عند 1.25. صدر الإصدار v3.4.0 في سبتمبر 2026 — لم يعد بالإمكان أن يبدو المسح مكتملًا وهو ليس كذلك: يسجّل كل محلل ما إذا كان قد عمل ولماذا لم يعمل، ويحمل التقرير كتلة تغطية تسمّي الفجوات، ويكتب مسح URL الذي لا يجد نقاط نهاية تقريره بدل أن يختفي، وتحوّل رايتان اختياريتان فجوة التغطية إلى بناء مُخفق. صدر الإصدار v3.3.0 في سبتمبر 2026 — ولم تعد الترقية تقسم النتيجة التي تتابعها إلى مغلقة وجديدة، وصارت قائمة الفحوص تُبنى مما اكتمل لا مما جرى إعداده. وفي v3.2.0 — وفيه صار كل قرار حظر يشرح نفسه. تحمل نتيجة BLOCK الآن السياسة التي اتُّخذت بموجبها وصنف الدليل الذي برّرها، عبر تخزين Fendix نفسه وحتى ملف SARIF الذي تصدّره، فيصير خط الإنتاج المخفق قابلًا للتفسير من التقرير وحده. وتذكر النتائج المحجوزة سبب حجزها، وتأتي درجات الثقة مصحوبة بالقواعد التي أنتجتها، ويُوسم صراحةً أي بناء حُظر لمجرد أن فرض الثقة كان مُعطَّلًا. وأوقف الإصدار v3.1.0 ادعاء النتائج بأكثر مما أثبتته — من CORS بحرف بدل مع بيانات الاعتماد، إلى ترتيب أولويات تحديد المعدّل، وتقييم الترويسات بحسب نوع الاستجابة، وصياغة اجتياز المسارات، وبيانات الاعتماد الاختبارية، وقابلية تطبيق الاعتماديات. ومنح الإصدار v3.0 النتائج هوية مستقرة مبنية على القاعدة التي أطلقت النتيجة، وفي أي ملف، وداخل أي دالة، وحول أي عملية. أعد حفظ خطوط الأساس مرة واحدة بعد الترقية من إصدار أقدم من v3.0، وأعد كتابة أي قاعدة .fendix-ignore تثبّت قيمة fingerprint: — أما القواعد التي تستخدم محددات المعرّف أو نقطة النهاية أو الفئة المدعومة فلا تتأثر بتغيير البصمة، مع أن معرّفات SEC-NNN موضعية ولا تناسب إلا المعالجة المؤقتة.