njsscan: اسکنر ایستای امنیت کد Node.js
خلاصهٔ کاملتر
njsscan یه ابزار تست ایستای امنیت اپلیکیشن (SAST) برای Node.jsه که سورس رو بدون اجرا میخونه و دنبال الگوهای کدنویسی ناامن میگرده. طبق توضیح مخزن، دو موتور پشتشه: تطبیقگر سادهٔ الگو از libsast و semgrep که یه جستوجوگر الگوی معنایی و آگاه به نحوِ زبونه. نصبش هم با pip install njsscan انجام میشه، به Python 3.10 به بالا نیاز داره و فقط روی macOS و لینوکس کار میکنه.
خروجیش برای هر یافته یه جدول کامل میده: شناسهٔ قانون (مثلاً express_xss)، ردهٔ OWASP، شناسهٔ CWE، توضیح مشکل، شدت (ERROR یا WARNING) و فایل و شمارهخطهایی که تطبیق خورده. مثال خود مستندات یه مورد XSS بازتابیه: جایی که ورودی کنترلنشدهٔ کاربر مستقیم توی پاسخ HTTP برگردونده میشه و به CWE-79 نگاشت میشه.
فرمتهای خروجی همونجاییان که ابزار واقعاً به درد میخوره: JSON، SARIF نسخهٔ 2.1.0، SonarQube، DefectDojo، گزارش SAST بومی GitLab و HTML. سوییچ --missing-controls هم بررسی کنترلهای امنیتی جانیفتاده رو روشن میکنه و -w باعث میشه هشدارها هم کد خروجی غیرصفر بدن — یعنی بیلد رو قرمز کنن.
برای تنظیم، یه فایل .njsscan تو ریشهٔ پروژه میذاری و توش پسوندهای فایل، مسیرها و نامهای نادیدهگرفتنی، قانونهای خاموششده، فیلتر شدت و حتی بازنویسی شدت هر قانون رو مشخص میکنی؛ مثلاً express_xss رو به WARNING تنزل بدی. برای خاموشکردن موردی هم کافیه کامنت // njsscan-ignore: rule_id رو روی همون خط بذاری.
مخزن نمونهٔ آمادهٔ ادغام با GitHub Actions (شامل آپلود SARIF به GitHub Code Scanning)، GitLab CI، Travis و CircleCI داره، بهعلاوهٔ ایمیج آمادهٔ داکر روی DockerHub. اگه رابط کاربری و مدیریت آسیبپذیری هم خواستی، nodejsscan روی همین njsscan سواره و یه داشبورد کامل بهش اضافه میکنه.
نکات کلیدی:
- SAST برای Node.js با ترکیب تطبیق الگوی libsast و جستوجوی معنایی semgrep
- نصب با pip، نیازمند Python 3.10+، فقط macOS و لینوکس
- یافتهها با شناسهٔ قانون، ردهٔ OWASP، CWE، شدت و شمارهخط گزارش میشن
- خروجی SARIF، GitLab SAST، SonarQube، DefectDojo، HTML و JSON
- تنظیم با فایل .njsscan و خاموشکردن موردی با کامنت njsscan-ignore
- نمونهٔ آمادهٔ GitHub Actions، GitLab CI، Travis، CircleCI و ایمیج داکر
- nodejsscan روی همینه و رابط کاربری مدیریت آسیبپذیری اضافه میکنه




