CodeIntelligenceTesting/jazzer.js

GitHub: CodeIntelligenceTesting/jazzer.js

一款基于libFuzzer的Node.js覆盖率引导模糊测试工具,用于自动发现JavaScript代码中的安全漏洞和异常。

Stars: 338 | Forks: 34

Jazzer.js

Jazzer.js logo

Website | Blog | Twitter
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) 开发。

Code Intelligence logo

标签:CMS安全, Fuzzing, GNU通用公共许可证, instrumentation, JavaScript, Jest, libFuzzer, MITM代理, Node.js, pocsuite3, SOC工具, 代码覆盖率, 动态模糊测试, 变异测试, 安全测试, 攻击性安全, 数据可视化, 模糊测试框架, 漏洞发现, 自动化攻击, 覆盖率引导, 软件测试, 进程内测试