
JAW: إطار تحليل أمني قائم على الرسوم البيانية لجافا سكريبت من جانب العميل
جيه إيه دبليو
الموقع الإلكتروني | الوثائق | الإعداد | الزاحف | بداية سريعة دوكر (مثال)
إطار عمل مفتوح المصدر، ونموذج أولي لرسوم الخصائص البيانية (property graphs) للجافا سكريبت استناداً إلى محلل esprima، ومواصفات EsTree SpiderMonkey. يمكن استخدام JAW لتحليل الجانب العميل من تطبيقات الويب والبرامج المستندة إلى JavaScript.
هذا المشروع مرخص بموجب GNU AFFERO GENERAL PUBLIC LICENSE V3.0. راجع هنا لمزيد من المعلومات.
يحتوي JAW على موقع إلكتروني على صفحات Github متاح على https://soheilkhodayari.github.io/JAW/.
ملاحظات الإصدارات:
JAW-V2.JAW-V1.هندسة JAW موضحة أدناه.
يمكن استخدام JAW بطريقتين مختلفتين:
تحليل جافا سكريبت عشوائي: استخدم JAW لنمذجة وتحليل أي برنامج جافا سكريبت عن طريق تحديد path (مسار) نظام الملفات للبرنامج.
تحليل تطبيق ويب: تحليل تطبيق ويب من خلال توفير عنوان URL بذرة واحد.
استخدم موارد الويب التي تم جمعها لإنشاء رسم بياني للبرنامج الهجين (HPG)، والذي سيتم استيراده إلى قاعدة بيانات Neo4j.
اختيارياً، قم بتزويد وحدة بناء HPG بتعيين من الأنواع الدلالية (semantic types) إلى رموز لغة جافا سكريبت المخصصة، مما يسهل تصنيف دوال جافا سكريبت بناءً على غرضها (على سبيل المثال، دوال طلبات HTTP).
استعلم عن قاعدة بيانات الرسم البياني Neo4j التي تم بناؤها لإجراء تحليلات متنوعة. يقدم JAW عمليات اجتياز مساعدة لتحليل تدفق البيانات، وتحليل تدفق التحكم، وتحليل الوصول، ومطابقة الأنماط. يمكن استخدام هذه العمليات لتطوير تحليلات أمنية مخصصة.
يتضمن JAW أيضاً عمليات اجتياز مدمجة لاكتشاف ثغرات CSRF من جانب العميل، و DOM Clobbering واختراق الطلبات.
سيتم تخزين المخرجات في نفس مجلد الإدخال.
يعتمد نص التثبيت على المتطلبات الأساسية التالية:
npm package manager (node js)python 3.xpipبعد ذلك، قم بتثبيت التبعيات اللازمة عبر:
$ ./install.sh
للحصول على تعليمات تثبيت مفصلة، يرجى الاطلاع هنا.
يمكنك تشغيل مثيل من خط الأنابيب في شاشة خلفية عبر:
$ python3 -m run_pipeline --conf=config.yaml
توفر واجهة سطر الأوامر الخيارات التالية:
$ python3 -m run_pipeline -h
usage: run_pipeline.py [-h] [--conf FILE] [--site SITE] [--list LIST] [--from FROM] [--to TO]
This script runs the tool pipeline.
optional arguments:
-h, --help show this help message and exit
--conf FILE, -C FILE pipeline configuration file. (default: config.yaml)
--site SITE, -S SITE website to test; overrides config file (default: None)
--list LIST, -L LIST site list to test; overrides config file (default: None)
--from FROM, -F FROM the first entry to consider when a site list is provided; overrides config file (default: -1)
--to TO, -T TO the last entry to consider when a site list is provided; overrides config file (default: -1)
تكوين الإدخال: يتوقع JAW ملف تكوين .yaml كإدخال. راجع config.yaml للحصول على مثال.
تلميح. يحدد ملف التكوين مراحل مختلفة (مثل الزحف، التحليل الثابت، إلخ) والتي يمكن تشغيلها أو تعطيلها لكل فئة من فئات الثغرات الأمنية. هذا يسمح بتشغيل اللبنات الأساسية للأداة بشكل فردي، أو بترتيب مختلف (على سبيل المثال، قم بالزحف إلى جميع تطبيقات الويب أولاً، ثم قم بإجراء التحليل الأمني).
لتشغيل مثال سريع يوضح كيفية بناء رسم بياني للخصائص وتشغيل استعلامات Cypher عليه، قم بما يلي:
$ python3 -m analyses.example.example_analysis --input=$(pwd)/data/test_program/test.js
تقوم هذه الوحدة بجمع البيانات (أي كود جافا سكريبت وقيم حالة صفحات الويب) اللازمة للاختبار. إذا كنت تريد اختبار ملف جافا سكريبت محدد لديك بالفعل على نظام الملفات الخاص بك، يمكنك تخطي هذه الخطوة.
يحتوي JAW على زاحفات تعتمد على Selenium (JAW-v1)، و Puppeteer (JAW-v2, v3) و Playwright (JAW-v3). للحصول على أحدث الميزات، يوصى باستخدام الإصدارات المستندة إلى Puppeteer أو Playwright.