Назад к обновлениям
New releaseJul 14, 2026

js-x-ray v@nodesecure/[email protected]

Открытый SAST-сканер для JavaScript и Node.js. Статический анализатор для обнаружения наиболее распространённых вредоносных шаблонов 🔬.

Поделиться

@nodesecure/js-x-ray

npm version license ossf scorecard slsa level3 github ci workflow

JS-X-Ray — это инструмент статического анализа (SAST) для JavaScript и TypeScript, предназначенный для выявления вредоносных шаблонов, уязвимостей безопасности и аномалий в коде. Можно рассматривать его как ESLint, но сфокусированный на анализе безопасности. Изначально созданный для NodeSecure CLI, JS-X-Ray стал самостоятельным и серьезным вариантом для защиты цепочки поставок.

🔎 Как это работает

JS-X-Ray разбирает JS или TS код в абстрактное синтаксическое дерево (AST) без широкого использования регулярных выражений или правил Semgrep. Это позволяет отслеживать переменные, разрешать динамические импорты и обнаруживать сложную обфускацию, которую пропускают инструменты с паттерн-матчингом. Оборотная сторона — JS-X-Ray полностью ориентирован на экосистему JavaScript/TypeScript.

💡 Возможности

  • Отслеживание require(), import и динамических импортов с полным отслеживанием переменных
  • Обнаружение обфусцированного кода и определение используемого инструмента (jsfuck, jjencode, obfuscator.io и другие)
  • Выявление вредоносных шаблонов: кража данных, сериализация process.env, небезопасные команды оболочки
  • Обнаружение уязвимого кода: eval(), конструктор Function(), регулярные выражения, подверженные ReDoS, SQL-инъекции
  • Выявление слабых криптографических алгоритмов (MD5, SHA1 и т.д.)
  • Извлечение индикаторов инфраструктуры: URL, IP-адреса, имена хостов, email-адреса
  • Настраиваемые режимы чувствительности (консервативный/агрессивный) и расширяемая система зондов
  • Поддержка как JavaScript, так и TypeScript

💃 Начало работы

Эти пакеты доступны в репозитории пакетов 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, каталог предупреждений и расширенное использование см. в README пакета @nodesecure/js-x-ray.

Workspaces

🐥 Руководство для участников

Если вы разработчик и хотите внести свой вклад в проект, сначала необходимо прочитать руководство CONTRIBUTING.

После завершения разработки проверьте, что тесты (и линтер) всё ещё проходят, запустив следующий скрипт:

$ npm run check

[!CAUTION] В случае внедрения новой функции или исправления ошибки обязательно добавьте для неё тесты.

Внутренние API

Для участников, работающих над внутренностями JS-X-Ray, следующие ресурсы документируют низкоуровневые утилиты и шаблоны манипуляции AST:

Тесты производительности (Benchmarks)

Производительность js-x-ray измеряется и отслеживается с помощью mitata.

Для запуска тестов производительности:

  1. Перейдите в workspaces/js-x-ray.
  2. Выполните npm run bench.

Результаты тестов производительности сохраняются в workspaces/js-x-ray/benchmark/report.json. Не редактируйте этот файл вручную; он автоматически обновляется при каждом pull request.

Contributors ✨

All Contributors

Спасибо этим замечательным людям (ключ эмодзи):

Лицензия

MIT

Категории