
js-x-ray @nodesecure/[email protected]
JavaScript & Node.js 开源 SAST 扫描器。用于检测最常见恶意模式的静态分析工具 🔬。
JS-X-Ray 是一款用于识别恶意模式、安全漏洞和代码异常的 JavaScript 与 TypeScript SAST 工具。可以把它想象成 ESLint,但专注于安全分析。JS-X-Ray 最初是为 NodeSecure CLI 创建的,如今已成为供应链保护领域中一个独立且严肃的选择。
🔎 工作原理
JS-X-Ray 将 JS 或 TS 代码解析为抽象语法树(AST),而不大量依赖 RegEx 或 Semgrep 规则。这使其能够进行变量追踪、动态导入解析,并检测模式匹配工具会遗漏的复杂混淆。代价是 JS-X-Ray 完全专注于 JavaScript/TypeScript 生态系统。
💡 功能特性
- 通过完整的变量追踪来跟踪
require()、import和动态导入 - 检测混淆代码并识别所使用的工具(jsfuck、jjencode、obfuscator.io 等)
- 标记恶意模式:数据外泄、
process.env序列化、不安全的 shell 命令 - 检测易受攻击的代码:
eval()、Function()构造函数、易受 ReDoS 攻击的正则表达式、SQL 注入 - 标记弱加密算法(MD5、SHA1 等)
- 提取基础设施指标:URL、IP、主机名、电子邮件
- 可配置的敏感度模式(保守/激进)以及可扩展的探针系统
- 同时支持 JavaScript 和 TypeScript
💃 快速开始
这些包可在 Node 包仓库中获取,并且可以通过 npm 或 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 });
有关完整的 API 文档、警告目录和高级用法,请参阅 @nodesecure/js-x-ray 包 README。
工作区
🐥 贡献者指南
如果你是希望为本项目做出贡献的开发者,必须先阅读 CONTRIBUTING 指南。
完成开发后,请运行以下脚本检查测试(以及 linter)是否仍然正常:
$ npm run check
[!CAUTION] 如果你引入了新功能或修复了 bug,请确保同时为其添加测试。
内部 API
对于从事 JS-X-Ray 内部工作的贡献者,以下资源记录了底层工具和 AST 操作模式:
- ESTree 工具 - 用于操作 ESTree AST 节点的底层辅助工具
- ESTree 赋值和声明模式(法语) - AST 形式下 JavaScript 赋值和声明模式的参考指南
基准测试
js-x-ray 的性能使用 mitata 进行测量和跟踪。
运行基准测试:
- 进入
workspaces/js-x-ray。 - 运行
npm run bench。
基准测试结果存储在 workspaces/js-x-ray/benchmark/report.json 中。请勿手动编辑此文件;它会在每次 pull request 时自动更新。
贡献者 ✨
感谢这些了不起的人(emoji key):
License
MIT

























