CodeIntelligenceTesting/jazzer.js
GitHub: CodeIntelligenceTesting/jazzer.js
一款基于libFuzzer的Node.js覆盖率引导模糊测试工具,用于自动发现JavaScript代码中的安全漏洞和异常。
Stars: 338 | Forks: 34
Jazzer.js 是一个覆盖引导的进程内模糊测试工具,用于
[Node.js](https://nodejs.org) 平台,由
[Code Intelligence](https://www.code-intelligence.com) 开发。它基于
[libFuzzer](https://llvm.org/docs/LibFuzzer.html),并将其许多
仪表化驱动的变异功能引入 JavaScript 生态。
## 快速开始
要在您自己的项目中使用 Jazzer.js,请按照以下简单步骤操作:
1. 添加 `@jazzer.js/core` 开发依赖
npm install --save-dev @jazzer.js/core
2. 创建一个调用您代码的模糊测试目标
// 文件 "FuzzTarget.js"
module.exports.fuzz = function (data /*: Buffer */) {
const fuzzerData = data.toString();
myAwesomeCode(fuzzerData);
};
3. 使用模糊测试目标启动模糊器
npx jazzer FuzzTarget
4. 享受模糊测试!
## 使用方法
Jazzer.js 可以通过两种方式使用:创建专用模糊测试目标,如
[快速开始](#quickstart) 部分所示,或集成到
[Jest 测试框架](https://jestjs.io/) 中。
### 使用测试框架集成
**注意**:使用测试框架集成是最简单、最方便的模糊测试代码的方式,因此,
建议在可能的情况下使用这种方法。
要在您的正常开发工作流中使用模糊测试,提供了与
[Jest 测试框架](https://jestjs.io/) 的紧密集成。这种耦合允许
模糊测试与您的普通单元测试一起执行,并在您的本地机器或 CI 中无缝检测
问题,使您能够确保已发现的错误保持修复状态。
此外,Jest 集成提供了出色的 IDE 支持,因此可以运行甚至调试单个输入,
类似于您对普通 Jest 测试的期望。
**注意**:有关如何使用 Jest 集成的详细说明,请参阅
[docs/jest-integration.md](docs/jest-integration.md)。
在这种情况下,用 TypeScript 编写的 Jest 模糊测试如下例所示:
```
// file: "Target.fuzz.ts"
import "@jazzer.js/jest-runner";
import * as target from "./target";
describe("Target", () => {
it.fuzz("executes a method", (data: Buffer) => {
target.fuzzMe(data);
});
});
```
**注意**:请查看
[在 Jest 测试中启用 TypeScript](docs/jest-integration.md#enabling-typescript-jest-tests)
以获取有关如何设置 TypeScript 编写的 Jest 模糊测试的更多信息。
### 使用模糊测试目标
创建模糊测试目标并通过 CLI 命令执行它们很简单,
与其他模糊测试工具的预期类似。这种方法提供了最大的控制权,并且可以通过
`npm`/`npx` 命令轻松集成到您的 CI 管道中。
**注意**:有关如何创建和使用模糊测试目标的详细说明,请参阅
[docs/fuzz-targets.md](docs/fuzz-targets.md)。
一个模糊测试目标可以像这个例子一样简单:
```
// file "FuzzTarget.js"
module.exports.fuzz = function (data /*: Buffer */) {
const fuzzerData = data.toString();
myAwesomeCode(fuzzerData);
};
```
## 文档
更多文档可在 [docs/readme.md](docs/README.md) 获取。
### 演示视频 - Jazzer.js 入门
我们录制了一个现场演示,展示了如何为您自己的项目启动和运行 Jazzer.js。如果您刚刚开始,这可能会有帮助。
您可以[在此](https://youtu.be/KyIhxEiNnfc)观看录制内容。
## 支持的架构
Jazzer.js 支持以下平台上的 Node.js LTS 版本,其他
版本仅尽力而为:
- Linux x86_64
- macOS x86_64 和 arm64
- Windows x86_64
## 致谢
Jazzer.js 的灵感来自其同名工具
[Jazzer](https://github.com/CodeIntelligenceTesting/jazzer),同样由
[Code Intelligence](https://www.code-intelligence.com) 开发。
标签:CMS安全, Fuzzing, GNU通用公共许可证, instrumentation, JavaScript, Jest, libFuzzer, MITM代理, Node.js, pocsuite3, SOC工具, 代码覆盖率, 动态模糊测试, 变异测试, 安全测试, 攻击性安全, 数据可视化, 模糊测试框架, 漏洞发现, 自动化攻击, 覆盖率引导, 软件测试, 进程内测试
