
js-x-ray @nodesecure/[email protected]
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 para JavaScript y TypeScript diseñado para identificar patrones maliciosos, vulnerabilidades de seguridad y anomalías en el código. Piénsalo 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.
🔎 Cómo funciona
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 exclusivamente al ecosistema JavaScript/TypeScript.
💡 Características
- Rastrea
require(),importe importaciones dinámicas con rastreo completo de variables - Detecta código ofuscado e identifica la herramienta utilizada (jsfuck, jjencode, obfuscator.io y más)
- Señala patrones maliciosos: exfiltración de datos, serialización de
process.env, comandos de shell inseguros - Detecta código vulnerable:
eval(), constructorFunction(), regexes propensas a ReDoS, inyección SQL - Señala algoritmos criptográficos débiles (MD5, SHA1, etc.)
- Extrae indicadores de infraestructura: URLs, IPs, nombres de host, correos electrónicos
- Modos de sensibilidad configurables (conservador/agresivo) y sistema de sondas extensible
- Compatible tanto con JavaScript como con TypeScript
💃 Primeros pasos
Estos paquetes están disponibles en el repositorio de paquetes de Node y se pueden instalar fácilmente con npm o yarn.
$ npm i @nodesecure/js-x-ray
# or
$ yarn add @nodesecure/js-x-ray
👀 Uso
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, consulta el README del paquete @nodesecure/js-x-ray.
Espacios de trabajo
🐥 Guía para colaboradores
Si eres un desarrollador que busca contribuir al proyecto, primero debes leer la guía de CONTRIBUTING.
Una vez que hayas terminado tu desarrollo, verifica que las pruebas (y el linter) sigan funcionando 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 las pruebas correspondientes.
APIs internas
Para los colaboradores que trabajan en las partes internas de JS-X-Ray, los siguientes recursos documentan utilidades de bajo nivel y patrones de manipulación de AST:
- Utilidades de ESTree - Ayudantes de bajo nivel para manipular nodos AST de ESTree
- Patrones de asignación y declaración de ESTree (francés) - Guía de referencia para patrones de asignación y declaración de JavaScript en forma de AST
Benchmarks
El rendimiento de js-x-ray se mide y rastrea utilizando mitata.
Para ejecutar los benchmarks:
- Navega a
workspaces/js-x-ray. - Ejecuta
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.
Colaboradores ✨
Gracias a estas maravillosas personas (clave de emojis):
Licencia
MIT

























