
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
# 或
$ 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 包自述文件。
工作区
🐥 贡献者指南
如果你是 希望为项目做贡献 的开发者,请首先阅读 贡献指南。
完成开发后,运行以下脚本以确认测试(及 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 中。请勿手动编辑此文件;它会在每次拉取请求时自动更新。
贡献者 ✨
感谢以下这些出色的人们(表情键):
许可证
MIT

























