
Escáner SAST de código abierto para JavaScript y Node.js. Un analizador estático para detectar los patrones maliciosos más comunes 🔬.
JS-X-Ray es un SAST (Static Application Security Testing) para JavaScript y TypeScript que identifica patrones maliciosos, vulnerabilidades de seguridad y anomalías en el código. Piense en él como ESLint, pero dedicado al análisis de seguridad. Creado originalmente para NodeSecure CLI, JS-X-Ray se ha convertido en una opción independiente y seria para la protección de la cadena de suministro.
JS-X-Ray analiza código JS o TS en un Árbol de Sintaxis Abstracta (AST) sin un uso extensivo de RegEx o reglas de Semgrep. Esto permite el rastreo de variables, la resolución de importaciones dinámicas y la detección de ofuscación sofisticada que las herramientas de coincidencia de patrones pasan por alto. La contrapartida es que JS-X-Ray está dedicado puramente al ecosistema JavaScript/TypeScript.
require(), import e importaciones dinámicas con rastreo completo de variablesprocess.env, comandos shell inseguroseval(), constructor Function(), expresiones regulares propensas a ReDoS, inyección SQLEstos paquetes están disponibles en el repositorio de paquetes Node y se pueden instalar fácilmente con npm o 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 });
Para la documentación completa de la API, el catálogo de advertencias y el uso avanzado, consulte el README del paquete @nodesecure/js-x-ray.
Si eres un desarrollador que desea contribuir al proyecto, primero debes leer la guía CONTRIBUTING.
Una vez que hayas terminado tu desarrollo, verifica que las pruebas (y el linter) sigan funcionando correctamente ejecutando el siguiente script:
$ npm run check
[!CAUTION] En caso de que introduzcas una nueva funcionalidad o corrijas un error, asegúrate de incluir también pruebas para ello.
Para los colaboradores que trabajan en los internos de JS-X-Ray, los siguientes recursos documentan utilidades de bajo nivel y patrones de manipulación de AST:
El rendimiento de js-x-ray se mide y rastrea utilizando mitata.
Para ejecutar los benchmarks:
workspaces/js-x-ray.npm run bench.Los resultados de los benchmarks se almacenan en workspaces/js-x-ray/benchmark/report.json. No edites este archivo manualmente; se actualiza automáticamente en cada pull request.
Gracias a estas maravillosas personas (clave de emojis):
MIT
![]() tchapacan 💻 ⚠️ |
![]() mkarkkainen 💻 |
![]() Michael Mior 📖 |