
js-x-ray @nodesecure/[email protected]
JavaScript & Node.js Open-Source-SAST-Scanner. Ein statischer Analysator zur Erkennung der häufigsten schädlichen Muster 🔬.
JS-X-Ray ist ein JavaScript & TypeScript SAST zur Identifizierung von schädlichen Mustern, Sicherheitslücken und Code-Anomalien. Stellen Sie es sich wie ESLint vor, jedoch speziell für die Sicherheitsanalyse konzipiert. Ursprünglich für die NodeSecure CLI entwickelt, hat sich JS-X-Ray zu einer eigenständigen und ernstzunehmenden Lösung für den Schutz der Lieferkette entwickelt.
🔎 Funktionsweise
JS-X-Ray parst JS- oder TS-Code in einen Abstrakten Syntaxbaum (AST), ohne umfangreiche Verwendung von Regex oder Semgrep-Regeln. Dies ermöglicht Variablenverfolgung, dynamische Auflösung von Importen und die Erkennung von ausgeklügelter Verschleierung, die musterbasierten Tools entgeht. Der Nachteil ist, dass JS-X-Ray ausschließlich auf das JavaScript/TypeScript-Ökosystem spezialisiert ist.
💡 Funktionen
- Verfolgung von
require(),importund dynamischen Importen mit vollständiger Variablenverfolgung - Erkennung von verschleiertem Code und Identifizierung des verwendeten Tools (jsfuck, jjencode, obfuscator.io und weitere)
- Markierung schädlicher Muster: Datenerfassung, Serialisierung von
process.env, unsichere Shell-Befehle - Erkennung von anfälligem Code:
eval(),Function()-Konstruktor, ReDoS-anfällige Regex, SQL-Injection - Markierung schwacher kryptografischer Algorithmen (MD5, SHA1, usw.)
- Extraktion von Infrastrukturindikatoren: URLs, IPs, Hostnamen, E-Mails
- Konfigurierbare Empfindlichkeitsmodi (konservativ/aggressiv) und erweiterbares Sondensystem
- Unterstützt sowohl JavaScript als auch TypeScript
💃 Erste Schritte
Diese Pakete sind im Node-Paketrepository verfügbar und können einfach mit npm oder yarn installiert werden.
$ npm i @nodesecure/js-x-ray
# or
$ yarn add @nodesecure/js-x-ray
👀 Verwendung
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 });
Für die vollständige API-Dokumentation, den Warnungskatalog und die erweiterte Nutzung siehe die @nodesecure/js-x-ray Paket-README.
Workspaces
🐥 Leitfaden für Mitwirkende
Wenn Sie ein Entwickler sind, der zum Projekt beitragen möchte, müssen Sie zuerst den CONTRIBUTING-Leitfaden lesen.
Sobald Sie Ihre Entwicklung abgeschlossen haben, überprüfen Sie, ob die Tests (und der Linter) noch einwandfrei funktionieren, indem Sie das folgende Skript ausführen:
$ npm run check
[!CAUTION] Falls Sie eine neue Funktion einführen oder einen Fehler beheben, stellen Sie sicher, dass Sie auch Tests dafür hinzufügen.
Interne APIs
Für Mitwirkende, die an den JS-X-Ray-Interna arbeiten, dokumentieren die folgenden Ressourcen die Low-Level-Hilfsprogramme und AST-Manipulationsmuster:
- ESTree-Hilfsprogramme – Low-Level-Helfer zur Manipulation von ESTree-AST-Knoten
- ESTree-Zuweisungs- und Deklarationsmuster (Französisch) – Referenzhandbuch für JavaScript-Zuweisungs- und Deklarationsmuster in AST-Form
Benchmarks
Die Leistung von js-x-ray wird mithilfe von mitata gemessen und verfolgt.
So führen Sie die Benchmarks aus:
- Navigieren Sie zu
workspaces/js-x-ray. - Führen Sie
npm run benchaus.
Die Benchmark-Ergebnisse werden in workspaces/js-x-ray/benchmark/report.json gespeichert. Diese Datei nicht manuell bearbeiten; sie wird bei jedem Pull-Request automatisch aktualisiert.
Mitwirkende ✨
Danke an diese wunderbaren Menschen (Emoji-Schlüssel):
Lizenz
MIT

























