返回更新列表
新发布Sep 19, 2026

js-x-ray @nodesecure/[email protected]

JavaScript & Node.js 开源 SAST 扫描器。用于检测最常见恶意模式的静态分析工具 🔬。

分享

@nodesecure/js-x-ray

npm version license ossf scorecard slsa level3 github ci workflow

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 包仓库中获取,并且可以通过 npmyarn 轻松安装。

$ 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 操作模式:

基准测试

js-x-ray 的性能使用 mitata 进行测量和跟踪。

运行基准测试:

  1. 进入 workspaces/js-x-ray
  2. 运行 npm run bench

基准测试结果存储在 workspaces/js-x-ray/benchmark/report.json 中。请勿手动编辑此文件;它会在每次 pull request 时自动更新。

贡献者 ✨

All Contributors

感谢这些了不起的人(emoji key):

License

MIT

分类