
js-x-ray @nodesecure/[email protected]
JavaScript & Node.js scanner SAST open-source. Un analyseur statique pour détecter les motifs malveillants les plus courants 🔬.
JS-X-Ray est un outil SAST pour JavaScript et TypeScript, destiné à identifier les motifs malveillants, les vulnérabilités de sécurité et les anomalies de code. Voyez-le comme ESLint, mais dédié à l'analyse de sécurité. Initialement créé pour NodeSecure CLI, JS-X-Ray est devenu une option indépendante et sérieuse pour la protection de la chaîne d'approvisionnement.
🔎 Fonctionnement
JS-X-Ray analyse le code JS ou TS en un Abstract Syntax Tree (AST) sans recourir massivement aux RegEx ou aux règles Semgrep. Cela permet le suivi des variables, la résolution des imports dynamiques et la détection d'obsuscations sophistiquées que les outils de correspondance de motifs manquent. La contrepartie est que JS-X-Ray est purement dédié à l'écosystème JavaScript/TypeScript.
💡 Fonctionnalités
- Suivre
require(),importet les imports dynamiques avec un traçage complet des variables - Détecter le code obscurci et identifier l'outil utilisé (jsfuck, jjencode, obfuscator.io, et plus encore)
- Signaler les motifs malveillants : exfiltration de données, sérialisation de
process.env, commandes shell non sécurisées - Détecter le code vulnérable :
eval(), constructeurFunction(), regex sujettes au ReDoS, injection SQL - Signaler les algorithmes cryptographiques faibles (MD5, SHA1, etc.)
- Extraire les indicateurs d'infrastructure : URLs, IPs, noms d'hôtes, emails
- Modes de sensibilité configurables (conservateur/agressif) et système de sondes extensible
- Prend en charge JavaScript et TypeScript
💃 Pour commencer
Ces paquets sont disponibles dans le dépôt de paquets Node et peuvent être facilement installés avec npm ou yarn.
$ npm i @nodesecure/js-x-ray
# or
$ yarn add @nodesecure/js-x-ray
👀 Utilisation
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 });
Pour la documentation complète de l'API, le catalogue des avertissements et l'utilisation avancée, consultez le README du paquet @nodesecure/js-x-ray.
Workspaces
🐥 Guide des contributeurs
Si vous êtes un développeur souhaitant contribuer au projet, vous devez d'abord lire le guide CONTRIBUTING.
Une fois votre développement terminé, vérifiez que les tests (et le linter) sont toujours bons en exécutant le script suivant :
$ npm run check
[!CAUTION] Si vous introduisez une nouvelle fonctionnalité ou corrigez un bug, assurez-vous d'inclure également des tests pour celle-ci.
APIs internes
Pour les contributeurs travaillant sur les internes de JS-X-Ray, les ressources suivantes documentent les utilitaires de bas niveau et les motifs de manipulation d'AST :
- Utilitaires ESTree - Aides de bas niveau pour manipuler les nœuds AST ESTree
- Motifs d'affectation et de déclaration ESTree (français) - Guide de référence pour les motifs d'affectation et de déclaration JavaScript sous forme d'AST
Benchmarks
Les performances de js-x-ray sont mesurées et suivies à l'aide de mitata.
Pour exécuter les benchmarks :
- Naviguez vers
workspaces/js-x-ray. - Exécutez
npm run bench.
Les résultats des benchmarks sont stockés dans workspaces/js-x-ray/benchmark/report.json. Ne modifiez pas ce fichier manuellement ; il est automatiquement mis à jour à chaque pull request.
Contributeurs ✨
Merci à ces personnes formidables (clé emoji) :
Licence
MIT

























