
ماسح SAST مفتوح المصدر لجافاسكريبت و Node.js. محلل ثابت لكشف أكثر الأنماط الخبيثة شيوعاً 🔬.
JS-X-Ray هو أداة SAST لجافاسكريبت وTypeScript لتحديد الأنماط الخبيثة، والثغرات الأمنية، وشذوذ الشيفرة. فكّر فيه كـ ESLint، لكنه مخصص للتحليل الأمني. أُنشئ في الأصل لـ NodeSecure CLI، وأصبح JS-X-Ray خيارًا مستقلًا وجادًا لحماية سلسلة التوريد.
يقوم JS-X-Ray بتحليل شيفرة JS أو TS إلى شجرة بناء مجردة (AST) دون استخدام مكثف لـ RegEx أو قواعد Semgrep. يتيح ذلك تتبع المتغيرات، وحل الاستيراد الديناميكي، واكتشاف التعتيم المتقدم الذي تفوته أدوات مطابقة الأنماط. المقابل هو أن JS-X-Ray مخصص حصريًا لمنظومة JavaScript/TypeScript.
require() وimport والاستيرادات الديناميكية مع تتبع كامل للمتغيراتprocess.env، أوامر shell غير الآمنةeval()، مُنشئ Function()، تعبيرات نمطية عرضة لـ ReDoS، حقن SQLهذه الحزم متاحة في مستودع حزم Node ويمكن تثبيتها بسهولة باستخدام npm أو yarn.
$ npm i @nodesecure/js-x-ray
# or
$ yarn add @nodesecure/js-x-ray
import { AstAnalyser } from "@nodesecure/js-x-ray";
const scanner = new AstAnalyser();
const { warnings, dependencies } = await scanner.analyseFile("./file.js");
console.log(dependencies);
console.dir(warnings, { depth: null });
للاطلاع على التوثيق الكامل لواجهة API، وكتالوج التحذيرات، والاستخدام المتقدم، راجع @nodesecure/js-x-ray package README.
إذا كنت مطورًا تتطلع إلى المساهمة في المشروع، فيجب عليك أولًا قراءة دليل CONTRIBUTING.
بعد الانتهاء من التطوير، تحقق من أن الاختبارات (والمُدقّق) لا تزال جيدة بتشغيل السكربت التالي:
$ npm run check
[!CAUTION] في حال أضفت ميزة جديدة أو أصلحت خطأً، تأكد من تضمين اختبارات لها أيضًا.
للمساهمين العاملين على الأجزاء الداخلية لـ JS-X-Ray، توثّق الموارد التالية الأدوات منخفضة المستوى وأنماط التعامل مع AST:
تُقاس أداء js-x-ray وتُتتبع باستخدام mitata.
لتشغيل المعايير:
workspaces/js-x-ray.npm run bench.تُخزَّن نتائج المعايير في workspaces/js-x-ray/benchmark/report.json. لا تعدّل هذا الملف يدويًا؛ فهو يُحدَّث تلقائيًا عند كل طلب سحب.
شكرًا لهؤلاء الأشخاص الرائعين (emoji key):