
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 d'analyse statique (SAST) pour JavaScript et TypeScript, conçu pour identifier les motifs malveillants, les vulnérabilités de sécurité et les anomalies de code. Pensez-y comme à ESLint, mais dédié à l'analyse de sécurité. Créé à l'origine pour NodeSecure CLI, JS-X-Ray est devenu une option indépendante et sérieuse pour la protection de la chaîne d'approvisionnement.
🔎 Comment ça fonctionne
JS-X-Ray analyse le code JS ou TS en un Arbre Syntaxique Abstrait (AST) sans utilisation extensive de RegEx ou de règles Semgrep. Cela permet le traçage de variables, la résolution d'imports dynamiques et la détection d'obfuscations sophistiquées que les outils basés sur la correspondance de motifs ne détectent pas. La contrepartie est que JS-X-Ray est exclusivement dédié à l'écosystème JavaScript/TypeScript.
💡 Fonctionnalités
- Suivi de
require(),importet imports dynamiques avec traçage complet des variables - Détection de code obfusqué et identification de l'outil utilisé (jsfuck, jjencode, obfuscator.io, etc.)
- Signalement de motifs malveillants : exfiltration de données, sérialisation de
process.env, commandes shell dangereuses - Détection de code vulnérable :
eval(), constructeurFunction(), expressions régulières sujettes à ReDoS, injections SQL - Détection d'algorithmes cryptographiques faibles (MD5, SHA1, etc.)
- Extraction d'indicateurs d'infrastructure : URLs, adresses IP, noms d'hôtes, emails
- Modes de sensibilité configurables (conservateur/agressif) et système de sondes extensible
- Prise en charge de JavaScript et TypeScript
💃 Pour commencer
Ces packages sont disponibles dans le dépôt de packages 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 une utilisation avancée, consultez le README du package @nodesecure/js-x-ray.
Espaces de travail
🐥 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 valides en exécutant le script suivant :
$ npm run check
[!CAUTION] Si vous introduisez une nouvelle fonctionnalité ou corrigez un bug, assurez-vous d'inclure des tests correspondants.
APIs internes
Pour les contributeurs travaillant sur les composants internes de JS-X-Ray, les ressources suivantes documentent les utilitaires de bas niveau et les modèles de manipulation d'AST :
- Utilitaires ESTree - Aides de bas niveau pour manipuler les nœuds AST ESTree
- Modèles d'affectation et de déclaration ESTree (français) - Guide de référence pour les modèles 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. - Lancez
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 mis à jour automatiquement à chaque pull request.
Contributeurs ✨
Un grand merci à ces personnes merveilleuses (clé d'emoji) :
Licence
MIT

























