تخطٍّ إلى المحتوى
العودة إلى التوثيق

مكتبة الفحوصات

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

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

بيئة التشغيل
لا تتطلب ملفات 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 نتيجة وفق السياسة والتغطية المحددتين وليست ضمانًا للأمان أو موافقة بشرية.

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

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

فحوصات الصندوق الأسود

ماسح HTTP — يرسل طلبات حقيقية إلى واجهة برمجة التطبيقات الخاصة بك.

الفحصما الذي يكتشفهالخطورةنشط
ترويسات الأمانغياب HSTS وCSP وX-Content-Type-Options وX-Frame-Options، والكشف عن إصدار الخادمMEDIUM - INFO-
CORSأصول بأحرف بدل (Wildcard) مع بيانات اعتماد، وأصول منعكسة، وطرق متساهلةCRITICAL - LOW-
المصادقةغياب المصادقة، وقبول JWT مشوّه، وقبول JWT منتهي الصلاحية، وتجاوز alg:noneCRITICAL-
تسريب البياناتكلمات المرور/الأسرار/الرموز في الاستجابات، وتتبّعات الأخطاء (stack traces)، وعناوين IP الداخلية، والمعرّفات المتسلسلة، إضافةً إلى (v0.11+) ملفات الإعداد المكشوفة في المسارات المعروفة — .env و.git/HEAD و.htaccess و.npmrc و.aws/credentials وغيرها — تُصنَّف حرجة (CRITICAL) مع CWE-538 عند تقديم استجابة 2xxCRITICAL - INFO-
تحديد المعدّللم يُكتشف أي تحديد للمعدّل على نقاط النهايةMEDIUM-
أعلام الكوكيزكوكيز تفتقر إلى سمات Secure / HttpOnly / SameSite ‏(CWE-1004/614/1275)MEDIUM - INFO-
IDORتعطّل التحكم في الوصول — مستخدم يصل إلى موارد مستخدم آخرHIGH-
حقن SQLاختبارات مبنية على الوقت العمياء، ومبنية على الأخطاء، واختبارات منطقية (MySQL وPostgres وMSSQL وSQLite وOracle)؛ مع ملاحظات الإثبات ‏(in=query|header|body)HIGH--enable-active
حقن الأوامراكتشاف عبر echo canary — حمولة آمنة وغير مُتلِفةCRITICAL--enable-active
حقن الترويساتحقن CRLF في ترويسات الاستجابة عبر اختبار %0d%0a Set-CookieHIGH--enable-active
إعادة التوجيه المفتوحةهدف إعادة توجيه يتحكم فيه المستخدم يرسل المتصفح إلى موقع خارجي ‏(CWE-601)MEDIUM--enable-active
XSS المنعكسحمولة تنعكس دون تهريب في الاستجابة، فتُنفَّذ داخل المتصفح ‏(CWE-79)HIGH--enable-active
SSRFتزوير طلب من جانب الخادم ضمن النطاق (in-band) — يجلب الخادم عنوان URL يوفّره المهاجم، ويُؤكَّد في الاستجابة ‏(CWE-918)CRITICAL--enable-active
حقن ترويسة Hostترويسة Host / X-Forwarded-Host مسمومة تنعكس في الروابط أو عمليات إعادة التوجيه أو مفاتيح الذاكرة المؤقتة ‏(CWE-644/601)MEDIUM--enable-active
استبطان GraphQLترك استبطان المخطط مفعّلًا، مما يكشف رسم الأنواع الكامل ‏(CWE-200)LOW--enable-active
التلاعب بطرق HTTPقبول طرق HTTP غير آمنة أو تجاوزية (مثل PUT/DELETE/TRACE وX-HTTP-Method-Override) ‏(CWE-650/693/285)MEDIUM--enable-active

فحوصات الصندوق الأبيض

التحليل الساكن — يحلّل الشيفرة المصدرية دون إجراء طلبات شبكية.

الفحصما الذي يكتشفه
الأسرارمفاتيح AWS/GitHub/npm/Stripe/OpenAI، وكتل JSON الخاصة بحسابات خدمة GCP، ومفاتيح GCP API ‏(AIza…)، وSlack ‏(xoxa/b/p/r/s)، وAnthropic، وتسريبات NAME=value في .env، ورموز الحامل (bearer tokens) — إضافةً إلى تراكبات Semgrep
قواعد Semgrepحزمة مجمّعة من 24 قاعدة ‏(v0.14+؛ كانت 9 في v0.9). المصادقة: غياب مزخرفات Flask/Django/FastAPI؛ الحقن: SQL خام في Django، وSSTI عبر render_template_string في Flask، وsubprocess(shell=True)، وpickle.loads، وyaml.load غير الآمن؛ الأسرار: GCP SA JSON، ومفتاح AWS، وSlack webhook، ومفتاح PEM؛ التعمية: MD5/SHA1 لكلمات المرور، وشيفرات DES/3DES/RC4، واستخدام وحدة random لتوليد الرموز
Textscan ‏(Go/JS/IaC)محرك SAST موحّد بالتعبيرات النمطية ‏(v0.12+). Go: حقن SQL عبر الدمج، واستدعاء الصدفة بـ exec.Command، وMD5/SHA1 لكلمات المرور، ومفتاح AWS مكتوب صراحةً. JS/TS: eval/innerHTML/document.write بقيمة غير حرفية، وchild_process.exec، وrequire بمسار متغيّر، ومفتاح AWS مكتوب صراحةً. IaC: تعليمة FROM في Dockerfile تفتقر إلى إسقاط الامتيازات، وADD مقابل COPY، وتثبيت :latest؛ Kubernetes: privileged/hostNetwork/allowPrivilegeEscalation/runAsUser=0
محلّل المواصفاتغياب مخططات الأمان في مواصفة OpenAPI، ومفاتيح API في معاملات الاستعلام، ونقاط نهاية غير مُصادَق عليها، واستخدام HTTP بدل HTTPS، ومخططات مصادقة ضعيفة
تحليل ASTتحليل AST لـ Python/JS: تحميل pickle/yaml غير الآمن، وSSRF، وعمليات إعادة التوجيه المفتوحة، والوثوق بترويسات مصادقة يتحكم فيها العميل، وتجزئة كلمات المرور الضعيفة، وقيم subprocess/eval/HTML/SQL الحرفية — إضافةً إلى XSS قابل للوصول عبر Markup/mark_safe/render_template_string ‏(v0.8)، وحقن أوامر قابل للوصول عبر os.system/subprocess(shell=True)/os.popen ‏(v0.8)، واجتياز مسارات قابل للوصول عبر open/Path/send_file/send_from_directory ‏(v0.11). يحتوي المحرك على 7 أصناف من المصارف (sinks) ضمن سلاسل التلوّث القابلة للوصول — حُسبت SQLi وSSRF وإعادة التوجيه المفتوحة وXSS واجتياز المسارات وحقن الأوامر بوصفها ثلاثة مصارف صدفة متمايزة. تحمل النتائج القابلة للوصول سلسلة تلوّث (taint_chain) تُثبت تدفّق البيانات داخل الدالة من مصدر الطلب إلى المصرف. يوسّع Proven Path v1 ‏(v0.16) ذلك ليشمل Django/Flask/FastAPI: استخراج جدول المسارات يربط مسار HTTP بمعالجه بحيث تمتدّ السلسلة عبر المسار ← المعالج ← المصدر ← المصرف عبر الملفات، ويُصدَّر بصيغة SARIF عبر codeFlows/threadFlows (يعرض GitHub التتبّع خطوة بخطوة بشكل مضمّن)، وتحمل كل نتيجة وسم مصدر (source_tier) للتأكيد على المنشأ ‏(native_go / tree_sitter_sidecar / semgrep_shim)
الاعتمادياتثغرات CVE معروفة في وحدات Go (داخل العملية عبر golang.org/x/vuln — بنفس قابلية الوصول عبر رسم الاستدعاء التي يوفّرها أداة govulncheck الأصلية)، وPyPI ‏(OSV.dev /v1/query لكل تثبيت ==، مع ذاكرة مؤقتة محلية لمدة 24 ساعة)، وnpm ‏(OSV.dev مقابل package-lock.json بإصداريه v2/v3، مع دعم الحزم النطاقية، وذاكرة مؤقتة 24 ساعة) — جميعها ماسحات أصلية داخل العملية (لا تتطلب اعتماديات ثنائية). اعتبارًا من v0.16، يُحلَّل poetry.lock وPipfile.lock بوصفهما الإغلاق المحلول الكامل، فتُلتقط ثغرات Python العابرة لا التثبيتات المباشرة في requirements.txt فحسب. اعتبارًا من v0.9 لم تعد توزيعة Python المضمّنة مرفقة؛ ويصبح مسار deps.py القديم في Python اختياريًا عبر --python-engine. عطّل الماسحات الأصلية باستخدام --no-native-deps

تعيين خطورة SARIF

كيف تُعيَّن مستويات خطورة Fendix إلى مستويات SARIF 2.1.0 للتكامل مع CI/CD.

خطورة Fendixمستوى SARIF
CRITICALerror
HIGHerror
MEDIUMwarning
LOWnote
INFOnote