kurt-grung/NullVoid
GitHub: kurt-grung/NullVoid
一款针对 JavaScript/Node.js 生态的高级静态分析工具,专注于检测供应链攻击、钱包劫持及混淆恶意软件。
Stars: 2 | Forks: 0
# NullVoid
[](https://www.npmjs.com/package/nullvoid)
[](https://www.npmjs.com/package/nullvoid)
[](https://opensource.org/licenses/MIT)
[](https://github.com/kurt-grung/NullVoid/stargazers)
[](https://github.com/kurt-grung/NullVoid/actions)
**Ø NullVoid** - 检测恶意代码。
一款高级静态分析安全扫描器,用于检测 JavaScript/Node.js 项目、npm 包和代码库中的供应链攻击、钱包劫持、混淆恶意软件及其他恶意行为。具备基于 VM 的代码分析、多层安全扫描、线程安全并行处理以及智能误报减少功能,可提供生产级的安全扫描。
## 📋 扫描命令
### 扫描
```
# 扫描当前目录和子目录
nullvoid
# 扫描特定包
nullvoid express
# 扫描特定目录(递归查找所有 package.json 子目录)
nullvoid /path/to/project
```
### **GitHub CI Actions 集成**
```
# .github/workflows/security.yml
name: Security Scan
on: [push, pull_request]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install NullVoid
run: npm install -g nullvoid
- name: Run Security Scan
run: nullvoid . --output sarif --sarif-file nullvoid-results.sarif
- name: Upload SARIF Results
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: nullvoid-results.sarif
```
### Pre-commit hooks (可选)
在每次提交前运行 NullVoid,如果发现威胁则阻止提交。需要 [Husky](https://typicode.github.io/husky/) (或任何 git hook 运行器)。
1. **在 pre-commit 中启用 NullVoid**,通过设置环境变量 (例如在你的 shell 或 `.env` 中):
export NULLVOID_PRE_COMMIT=1
2. **示例 `.husky/pre-commit`** (Husky 在 `git commit` 时运行此命令):
npx lint-staged
# 可选:运行 NullVoid 并在发现威胁时阻止提交
if [ "$NULLVOID_PRE_COMMIT" = "1" ]; then
npm run build && node scripts/nullvoid-pre-commit.js
fi
pre-commit 脚本会运行快速扫描 (`--depth 1`, `--no-ioc`),如果检测到任何威胁则退出并返回代码 1,从而中止提交。省略 `if` 块或保持 `NULLVOID_PRE_COMMIT` 未设置状态,即可在提交时跳过 NullVoid。
### GitLab CI
添加一个 job 在 push/merge 时运行 NullVoid。示例 `.gitlab-ci.yml` (或复制自 [.gitlab-ci.example.yml](.gitlab-ci.example.yml)):
```
# .gitlab-ci.yml
stages:
- test
nullvoid-scan:
stage: test
image: node:20
before_script:
- npm ci
script:
- npx nullvoid . --output json --sarif-file nullvoid-results.sarif
artifacts:
when: always
paths:
- nullvoid-results.sarif
reports:
sast: nullvoid-results.sarif
```
如果从 NullVoid 仓库构建,请使用 `npm ci && npm run build && node ts/dist/bin/nullvoid.js . ...` (根目录 `npm ci` 会安装所有 workspaces)。也支持 **CircleCI**;请参阅 [.circleci/config.yml](.circleci/config.yml)。**Travis CI** 和 **Azure DevOps** 示例:[.travis.example.yml](.travis.example.yml),[azure-pipelines.example.yml](azure-pipelines.example.yml)。关于 IntelliJ、Sublime 和 Vim 集成,请参阅 [docs/IDE_INTEGRATION.md](docs/IDE_INTEGRATION.md)。
### 扫描选项
```
# 显示所有威胁(包括低/中严重程度)
nullvoid --all
# 或
nullvoid . --all
# 详细输出及更多细节
nullvoid --verbose
# 或
nullvoid . --verbose
# 限制依赖深度
nullvoid --depth 2
# 或
nullvoid . --depth 2
# 启用并行处理
nullvoid --parallel
# 或
nullvoid . --parallel
# 设置并行处理的 worker 数量
nullvoid --workers 4
# 或
nullvoid . --workers 4
# JSON 输出格式
nullvoid --format json
# 或
nullvoid . --format json
# 输出到文件
nullvoid --output results.json
# 或
nullvoid . --output results.json
# 用于 CI/CD 集成的 SARIF 输出格式
nullvoid --format sarif
# 或
nullvoid . --format sarif
# 将 SARIF 输出写入文件
nullvoid --sarif nullvoid-results.sarif
# 或
nullvoid . --sarif nullvoid-results.sarif
# 包含开发依赖
nullvoid --include-dev
# 或
nullvoid . --include-dev
# 跳过缓存
nullvoid --skip-cache
# 或
nullvoid . --skip-cache
# 调试模式
nullvoid --debug
# 或
nullvoid . --debug
# IoC provider 选择 (v2.1.0+)
nullvoid --ioc-providers npm,ghsa,cve
# 或
nullvoid . --ioc-providers snyk,npm,ghsa,cve
# 禁用 IoC 扫描
nullvoid --no-ioc
# 或
nullvoid . --no-ioc
# 查看缓存统计 (v2.1.0+)
nullvoid --cache-stats
# 或
nullvoid . --cache-stats
# 启用 Redis 缓存 (v2.1.0+)
nullvoid --enable-redis
# 或
nullvoid . --enable-redis
# 查看网络统计 (v2.1.0+)
nullvoid --network-stats
# 或
nullvoid . --network-stats
```
### Registry 健康检查
```
# 检查已配置包仓库(npm, yarn, github)的健康状况
nullvoid registry-health
# JSON 输出
nullvoid registry-health --json
# 自定义超时 (ms)
nullvoid registry-health -t 10000
```
### 信任与验证 (AI/ML & Blockchain)
```
# 显示包的信任分数和验证状态
nullvoid trust-status lodash@4.17.21
# 针对 CID 验证包完整性(单一来源)
nullvoid verify-package lodash@4.17.21 --cid bafy...
# 多源共识验证 (npm + GitHub + IPFS)
nullvoid verify-package lodash@4.17.21 --cid bafy... --consensus
nullvoid verify-consensus lodash@4.17.21
# 在区块链上注册包 CID(需要 viem,已部署合约)
nullvoid register-on-chain nullvoid-2.1.0.tgz
# 针对区块链验证包
nullvoid verify-on-chain lodash@4.17.21 --cid bafy...
```
通过 `.nullvoidrc.json` 或环境变量启用功能:`TRUST_CONFIG`、`CONSENSUS_CONFIG`、`BLOCKCHAIN_CONFIG`。请参阅 [docs/TRUST_NETWORK.md](docs/TRUST_NETWORK.md)、[docs/CONSENSUS.md](docs/CONSENSUS.md)、[docs/BLOCKCHAIN.md](docs/BLOCKCHAIN.md)。
### 组合选项
```
# 显示包含详细输出和并行处理的所有威胁
nullvoid --all --verbose --parallel
# 或
nullvoid . --all --verbose --parallel
# 使用有限深度和并行 worker 扫描
nullvoid --depth 2 --parallel --workers 8
# 或
nullvoid . --depth 2 --parallel --workers 8
# 详细输出并将 JSON 输出到文件
nullvoid --verbose --format json --output scan-results.json
# 或
nullvoid . --verbose --format json --output scan-results.json
```
## 🤖 ML 训练流水线
训练 XGBoost 模型用于依赖混淆和恶意软件检测。支持校准、可解释性和平衡训练。`ml:export` 和 `--train` 都会自动去重。
### ML 架构
NullVoid 使用两条 ML 流水线:**依赖混淆评分** (时间线、registry、提交模式) 和 **行为评分** (包脚本、网络使用、eval、子进程)。
```
flowchart TB
subgraph sources [Data Sources]
PkgJSON[package.json]
Git[Git History]
Registry[npm Registry]
GHSA[GitHub Security Advisories]
end
subgraph extract [Feature Extraction]
Timeline[timelineAnalysis]
Commit[commitPatternAnalysis]
Anomaly[anomalyDetection]
NLP[nlpAnalysis]
Community[communityAnalysis]
Trust[trustNetwork]
AST[AST / Script Analysis]
end
subgraph vector [Feature Vectors]
Build[buildFeatureVector]
Behavioral[PackageFeatures]
end
subgraph export [Export Pipeline]
ExportJS[export-features.js]
ExportBehavioral[export-behavioral-features.js]
ScanTrain[scan --train]
ScanGood[scan --export-training-good]
end
subgraph train [Training]
JSONL[train.jsonl]
TrainPy[train.py]
Model[model.pkl]
BehavioralJSONL[train-behavioral.jsonl]
TrainBehavioral[train-behavioral.py]
BehavioralModel[behavioral-model.pkl]
end
subgraph serve [Serving - serve.py]
ServePy[FastAPI Server]
API["POST /score"]
BehavioralAPI["POST /behavioral-score"]
end
subgraph runtime [Runtime Detection]
DepConf[dependencyConfusion]
MLDet[runMLDetection]
end
PkgJSON --> Timeline
PkgJSON --> Anomaly
PkgJSON --> AST
Git --> Timeline
Git --> Commit
Registry --> Timeline
AST --> Behavioral
Timeline --> Build
Commit --> Build
Anomaly --> Build
NLP --> Build
Community --> Build
Trust --> Build
GHSA --> ExportJS
GHSA --> ExportBehavioral
Registry --> ExportJS
Registry --> ExportBehavioral
ExportJS --> JSONL
ExportBehavioral --> BehavioralJSONL
ScanTrain --> JSONL
ScanGood --> JSONL
JSONL --> TrainPy --> Model
BehavioralJSONL --> TrainBehavioral --> BehavioralModel
Model --> ServePy
BehavioralModel --> ServePy
ServePy --> API
ServePy --> BehavioralAPI
DepConf --> MLDet
MLDet --> Build
MLDet -->|ML_MODEL_URL| API
MLDet -->|fallback| RuleBased[Rule-based weights]
DepConf -->|BEHAVIORAL_MODEL_URL| BehavioralAPI
DepConf -->|fallback| BehavioralAnomaly[computeBehavioralAnomaly]
```
**流程:**
1. **特征提取** – `timelineAnalysis`、`commitPatternAnalysis`、`anomalyDetection`、`nlpAnalysis`、`communityAnalysis`、`trustNetwork` 输入到 `buildFeatureVector`;AST/脚本分析输入到 `PackageFeatures` (行为)。
2. **导出** – `export-features.js` (GHSA,已知良性/恶意) 或 `scan --train` → `train.jsonl`;`export-behavioral-features.js` → `train-behavioral.jsonl`。
3. **训练** – `train.py` (XGBoost + 校准) → `model.pkl`;`train-behavioral.py` → `behavioral-model.pkl`。
4. **服务** – `serve.py` 暴露 `POST /score`、`POST /behavioral-score`、`POST /batch-score`、`GET /importance`、`POST /explain`。
5. **运行时** – `dependencyConfusion` → `runMLDetection` (如果设置了 `ML_MODEL_URL` 则使用 ML 模型) 或基于规则;行为模型 (如果设置了 `BEHAVIORAL_MODEL_URL`) 或 `computeBehavioralAnomaly`。
### 快速设置
```
# 1. 导出良性样本(标签 0)
npm run ml:export
# 2. 从 GitHub Security Advisories 添加已知恶意包(可选)
node ml-model/export-features.js --from-ghsa --limit 100 --out ml-model/train.jsonl
# 3. 扫描恶意软件目录并追加威胁样本(标签 1)
nullvoid scan /path/to/malware-projects --no-ioc --train
# 4. 为平衡训练,同时导出干净包(标签 0)
nullvoid scan . --export-training ml-model/train.jsonl --export-training-good ml-model/train.jsonl
# 5. 训练模型(XGBoost + calibration)
npm run ml:train
# 6. 启动 ML 服务器(可选,用于实时评分)
npm run ml:serve
# 可选:行为模型(包脚本分析)
npm run ml:export-behavioral && npm run ml:train-behavioral
# 当设置 --behavioral-model-dir 时,serve.py 会加载这两个模型
```
### 命令
| 命令 | 描述 |
|---------|-------------|
| `npm run ml:export` | 将良性特征导出到 `train.jsonl` (对已有内容去重) |
| `npm run ml:export-behavioral` | 将行为特征 (脚本、网络、eval) 导出到 `train-behavioral.jsonl` |
| `node ml-model/export-features.js --from-ghsa` | 从 GitHub Security Advisories 获取已知恶意的 npm 包 |
| `nullvoid scan --train` | 从扫描到的威胁中追加恶意软件样本 (去重) |
| `nullvoid scan --export-training-good ` | 追加干净的包 (标签 0) 用于平衡训练 |
| `npm run ml:train` | 从 `train.jsonl` 训练 XGBoost 模型 → `model.pkl` |
| `npm run ml:train-behavioral` | 从 `train-behavioral.jsonl` 训练行为模型 → `behavioral-model.pkl` |
| `npm run ml:serve` | 在端口 8000 启动 ML 服务器 (`/score`, `/behavioral-score`, `/batch-score`, `/explain`) |
### 替代方案 (无全局 nullvoid)
```
npm run ml:scan -- /path/to/malware-projects --no-ioc --train
```
详情请参阅 [ml-model/README.md](ml-model/README.md)。
## 🛡️ IoC 集成 (v2.1.0+)
NullVoid 现已集成多个漏洞数据库,以检查包是否存在已知的安全问题:
### **支持的提供商**
- **npm Advisories**: npm 官方安全公告 (公开,默认启用)
- **GitHub Security Advisories (GHSA)**: GitHub 安全数据库 (公开,默认启用)
- **NVD/CVE**: 国家漏洞数据库 (公开,默认启用)
- **Snyk**: 商业漏洞数据库 (需要 API key)
### **智能 CVE 过滤**
NullVoid 通过版本感知和产品感知过滤来减少误报:
- **版本感知**: 当安装版本不在受影响范围内时排除 CVE (NVD CPE 边界或描述中的 "fixed in X")
- **产品消歧**: 排除名称相似但产品不同的 CVE (例如 Midnight Commander 与 npm commander,grunt/shiba 与 js-yaml)
### **用法**
```
# 自动 IoC 扫描(默认启用)
nullvoid /path/to/project
# 选择特定 provider
nullvoid /path/to/project --ioc-providers npm,ghsa,cve
# 包含 Snyk(需要 SNYK_API_KEY 环境变量)
nullvoid /path/to/project --ioc-providers snyk,npm,ghsa,cve
# 禁用 IoC 扫描
nullvoid /path/to/project --no-ioc
```
### **配置**
通过环境变量设置 API key:
```
export SNYK_API_KEY=your-api-key-here # For Snyk
export GITHUB_TOKEN=your-token-here # For better GHSA rate limits
export NVD_API_KEY=your-api-key-here # For better NVD rate limits
```
### **示例输出**
```
⚠️ 2 high-severity threat(s) detected:
1. VULNERABLE_PACKAGE (HIGH)
Vulnerability found: Prototype Pollution in lodash (CVE-2021-23337)
Details: Affected versions: <4.17.21
Fixed in: 4.17.21
CVSS Score: 7.2 (3.1)
References: https://nvd.nist.gov/vuln/detail/CVE-2021-23337
File: package.json
Confidence: 95%
```
更多详情,请参阅 [IoC 使用指南](docs/IOC_USAGE.md)。
## 🔍 NullVoid 检测内容
### 🚨 **钱包劫持**
- **window.ethereum 拦截**: 检测挂钩钱包提供商的包
- **MetaMask 定向**: 识别拦截 MetaMask 交易的代码
- **交易重定向**: 标记静默重定向区块链交易的包
- **地址替换**: 检测替换合法钱包地址的企图
### 🌐 **网络操纵**
- **Fetch/XMLHttpRequest 覆盖**: 检测拦截网络请求的包
- **API 响应扫描**: 识别扫描响应以查找区块链地址的代码
- **地址替换**: 检测将合法地址替换为攻击者控制的地址
### 🔐 **供应链攻击**
- **Postinstall 脚本分析**: 检测可疑的 postinstall 脚本
- **代码熵分析**: 识别混淆或打包的代码
- **GPG 签名验证**: 验证包签名
- **可疑文件模式**: 扫描恶意命名约定
### ⚡ **高级检测**
- **多链定向**: 检测支持多个区块链的包
- **隐蔽控制**: 识别隐藏的控制接口
- **混淆技术**: 检测代码隐藏机制
- **深度依赖扫描**: 扫描最深 3 层的传递依赖
## 🛡️ 安全特性
### **核心安全引擎**
- **安全沙箱**: 基于虚拟机 (VM) 的代码执行,具有资源限制和超时保护
- **高级威胁检测**: AST 分析、熵计算和模式匹配
- **多层安全**: 采用多种检测方法的综合静态分析
- **路径安全**: 防止路径遍历和命令注入攻击
- **输入验证**: 全面的输入清理和验证
- **安全配置加载**: 使用受限 YAML schema (JSON_SCHEMA) 加载规则和配置文件,以防止来自不可信输入的任意代码执行
### **威胁检测能力**
- **混淆恶意软件**: 检测变量名混淆、十六进制编码和反调试模式
- **钱包劫持**: 全面的加密货币攻击检测和预防
- **供应链攻击**: 增强对恶意 npm 包和依赖注入的检测
- **依赖混淆**: 对比 git 历史与 npm registry 创建日期的时间线分析
- **模块加载威胁**: 动态 require 检测和系统模块访问监控
- **代码结构分析**: 熵分析和恶意代码模式识别
### **生产功能**
- **线程安全处理**: 具有适当资源管理的 Mutex 同步并行扫描
- **资源清理**: 无打开的句柄,适当的清理,防止内存泄漏
- **实时进度**: 实时扫描显示,一致的威胁报告
- **CI/CD 就绪**: 可靠地集成到自动化工作流中
- **智能分类**: 智能区分合法工具和真实威胁
- **彩色输出**: 威胁严重程度和类型的视觉区分
## 🎯 v2.1.0 - IoC 集成与性能优化
### **🛡️ 公开 IoC 集成**
- **多提供商支持**: 集成 Snyk、npm Advisories、GHSA 和 NVD/CVE 漏洞数据库
- **自动漏洞检测**: 自动扫描 `package.json` 中的所有依赖项
- **智能聚合**: 合并多个来源的结果并进行去重
- **速率限制**: 每个提供商内置速率限制以遵守 API 限制
- **缓存**: 1 小时的漏洞数据缓存以减少 API 调用
- **提供商配置**: 灵活的提供商选择和 API key 管理
### **📦 多层缓存系统**
- **L1 (内存缓存)**: 快速的内存 LRU 缓存,用于即时访问
- **L2 (文件缓存)**: `.nullvoid-cache/` 目录中持久的基于文件的缓存
- **L3 (Redis 缓存)**: 用于多实例部署的可选分布式缓存
- **缓存分析**: 全面的统计信息和命中率跟踪
- **智能提升**: 热数据在层之间自动提升
### **🌐 网络优化**
- **连接池**: 重用 HTTP 连接以减少延迟
- **请求批处理**: 将多个 API 请求批量处理以提高效率
- **压缩支持**: API 响应自动进行 Gzip/Brotli 压缩
- **网络统计**: 跟踪连接池利用率和性能
### **⚡ 性能增强**
- **工作窃取调度器**: 具有负载均衡的高效并行处理
- **内存池管理**: 对象重用,减少垃圾回收压力
- **资源监控**: 实时系统指标和性能建议
- **2-3 倍更快扫描**: 通过缓存和优化显著提升性能
### **🎨 增强的用户体验**
- **新 CLI 选项**: `--ioc-providers`、`--cache-stats`、`--network-stats`、`--enable-redis`
- **漏洞显示**: 增强的输出,包含 CVE 详情和 CVSS 评分
- **缓存统计**: 查看详细的缓存性能指标
- **网络统计**: 监控连接池和请求性能
- **全面的测试覆盖**: 43 个测试套件中的 376 个测试
## 🎯 v2.0.3 - 增强类型安全与代码质量
### **🛡️ 增强类型安全与代码质量**
- **100% 类型安全**: 消除了所有 `any` 类型,使用全面的 `unknown` 和特定类型定义
- **零 ESLint 警告**: 保持零 ESLint 警告,达到企业级代码质量
- **集中配置**: 将所有模式和配置移至 `config.ts` 以提高可维护性
- **增强错误处理**: 健壮的错误,具有适当的类型守卫和断言
- **防止内存泄漏**: 修复了错误日志记录中的潜在内存泄漏,并自动清理
- **改进代码组织**: 模块化结构,关注点分离清晰
### **🎨 增强的用户体验**
- **彩色输出**: 美观的彩色终端输出,基于严重程度进行颜色编码
- **改进的样本显示**: 精确的恶意代码片段提取,具有智能模式检测
- **增强的威胁排序**: 结果按置信度 (从低到高) 排序,以便更好地确定优先级
- **专业输出格式**: 整洁、格式化的结果,具有全面的扫描分析
- **集中显示模式**: 所有 UI 模式集中在 `config.ts` 中以保持一致性
### **🔧 高级检测改进**
- **智能减少误报**: 增强了对合法图形、React、服务器和实用程序代码的检测
- **智能模式识别**: 改进了对 Three.js、WebGL、Socket.IO、MongoDB 和区块链代码的检测
- **增强的样本提取**: 使用 `detectMalwareStart` 函数精确检测恶意代码片段
- **更好的威胁分类**: 改进的置信度评分和威胁严重性评估
- **全面的测试覆盖**: 所有功能均通过 16 项测试验证
- **安全加固**: 修复了内存泄漏,改进了错误处理,并增强了安全措施
### **⚡ 性能与可靠性**
- **优化的 TypeScript 编译**: 快速构建时间,具有高效的类型检查
- **增强的内存管理**: 更好的资源清理和错误恢复,防止内存泄漏
- **改进的 CLI 接口**: 健壮的命令解析,具有全面的选项验证
- **生产就绪的稳定性**: 零警告,全面的错误处理,可靠的操作
- **安全加固**: 修复了关键的安全问题和潜在的内存泄漏
## 🚀 快速开始
```
# 全局安装
npm install -g nullvoid
# 扫描当前项目目录
nullvoid
# 或
nullvoid .
# 或(向后兼容)
nullvoid scan
# 扫描特定目录/项目
nullvoid /path/to/project
# 或
nullvoid scan /path/to/project
# 扫描特定文件
nullvoid suspicious-file.js
# 或
nullvoid scan suspicious-file.js
# 扫描 npm 包
nullvoid express
# 或
nullvoid scan express
# 使用详细输出扫描
nullvoid --verbose
# 或
nullvoid . --verbose
# 使用并行处理扫描
nullvoid --parallel --workers 4
# 或
nullvoid . --parallel --workers 4
# 输出到 JSON 文件
nullvoid --format json --output results.json
# 或
nullvoid . --format json --output results.json
```
**从源码构建:**
```
git clone https://github.com/kurt-grung/NullVoid.git && cd NullVoid
make install && make build && make test
# 或:npm ci && npm run build && npm test
```
### 在 GitHub Codespaces 中试用
在云端运行 NullVoid (包括 ML 流水线) —— 无需本地安装。点击 **Code** → **Codespaces** → **Create codespace on main**。容器构建完成后,API 和 Dashboard 会自动启动。打开转发的端口 **5174** (Dashboard)。使用 ML 页面导出特征和训练模型。详情请参阅 [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md#github-codespaces-demo)。
## 🔧 **TypeScript 支持**
NullVoid 使用 **TypeScript** 构建,以提供增强的类型安全性和开发人员体验。项目使用 **Turborepo** 进行 monorepo 构建流水线管理 (workspaces: `packages/*`, `ts`, `js`)。构建需要 **Node 20+** (某些依赖项需要)。
### **开发**
```
# 安装依赖(根目录 npm ci 安装所有 workspaces)
npm install
# 或
make install
# 构建 TypeScript 和包
npm run build
# 或
make build
# 带 TypeScript 的开发模式
npm run dev -- scan --help
# 或
make dev
# 类型检查
npm run type-check
# 带文件监视的开发
npm run build:watch
```
### **Makefile 目标**
| 目标 | 描述 |
|--------|-------------|
| `make` | 启动 dashboard (默认) |
| `make build` | 构建 TypeScript 扫描器和包 |
| `make build-api` | 构建 API 包 |
| `make api` | 启动 API (端口 3001) |
| `make dashboard` | 启动 dashboard 开发服务器 (端口 5174) |
| `make dev` | 以开发模式启动扫描器 |
| `make test` | 运行测试 |
| `make lint` | 运行 linter |
| `make install` | 安装依赖 |
| `make kill` | 停止 API、dashboard 和 ML 服务器 (端口 3001, 5174, 8000) |
| `make ml-serve` | 启动 ML 模型服务器 (端口 8000) |
| `make ml-train` | 训练 ML 模型 |
### **仪表板**
Web dashboard 为扫描、合规性、报告和 ML 命令提供 UI。
```
# 终端 1:启动 API(仪表板必需)
make api
# 终端 2:启动仪表板
make dashboard
# 打开 http://localhost:5174
```
| 页面 | 描述 |
|------|-------------|
| **Executive** | 概述:扫描次数、威胁、严重程度分布、热门包 |
| **Scans** | 运行扫描,查看近期扫描,链接到扫描详情 |
| **Compliance** | 控制覆盖范围 (C/I/A),SOC 2 / ISO 27001 差距分析 |
| **Reports** | 查看已完扫描的 HTML 或下载 Markdown 报告 |
| **ML** | 运行依赖混淆和行为模型的导出/训练 (API 必须在本地运行) |
- **报告**: `GET /api/report/:scanId?format=html|markdown&compliance=soc2|iso27001`
- **停止所有**: `make kill` 停止 API、dashboard 和 ML 服务器
### **ML 模型 (可选)**
完整设置请参阅上面的 [ML 训练流水线](#-ml-training-pipeline)。快速参考:
```
npm run ml:export
node ml-model/export-features.js --from-ghsa --out ml-model/train.jsonl
nullvoid scan /path/to/malware --no-ioc --train
npm run ml:train
npm run ml:serve
```
### **类型定义**
- 包含完整的 TypeScript 类型定义
- VS Code 和其他 IDE 中的 IntelliSense 支持
- 所有 API 的全面类型安全
- 启用严格的类型检查
## ⚡ **性能**
NullVoid 的 TypeScript 迁移和 v2.1.0 优化带来了显著的性能提升:
| 指标 | JavaScript | TypeScript | v2.1.0 | 提升 |
|--------|------------|------------|--------|-------------|
| **扫描速度** | 0.589s | 0.079s | 0.026s | ⚡ **快 22.7 倍** |
| **代码体积** | 3,519 行 | 388 行 | 388 行 | 📦 **减少 90%** |
| **类型安全** | ❌ 无 | ✅ 完整 | ✅ 完整 | 🛡️ **类型安全** |
| **缓存命中率** | N/A | N/A | 85%+ | 📦 **减少 60-80% API 调用** |
| **网络效率** | N/A | N/A | 70%+ 重用 | 🌐 **减少 30-50% 延迟** |
| **ESLint 警告** | 0 警告 | 0 警告 | 0 警告 | ✅ **零警告** |
| **代码质量** | 基础 | 企业级 | 企业级 | 🏆 **生产就绪** |
### **主要优势**
- **🚀 更快的执行**: 通过缓存和网络优化,性能提升 22.7 倍
- **📦 更小的 Bundle**: 通过模块化架构,代码体积减少 90%
- **🛡️ 类型安全**: 完整的 TypeScript 类型检查防止运行时错误
- **💾 智能缓存**: 多层缓存系统减少 60-80% 的 API 调用
- **🌐 网络优化**: 连接池和请求批处理减少 30-50% 的延迟
- **🔧 更好的 DX**: 通过 IntelliSense 和自动完成增强开发人员体验
- **🏗️ 可维护**: 模块化代码库更易于维护和扩展
- **✅ 零警告**: 企业级代码质量,具有全面的错误处理
- **🎨 增强 UX**: 美观的彩色输出,专业格式化
- **🔒 安全加固**: 修复了内存泄漏并增强了安全措施
- **🏆 生产就绪**: 全面的测试,43 个测试套件中的 376 个测试
## 🎯 **NullVoid 可以扫描什么?**
NullVoid 不仅适用于 npm 包 - 它是适用于任何 JavaScript/Node.js 代码库的综合安全扫描器:
### **📁 项目类型**
- **Web 应用程序**: React, Vue, Angular 项目
- **Node.js 应用程序**: Express, Fastify, Koa 服务器
- **桌面应用程序**: Electron 应用
- **CLI 工具**: 命令行实用程序
- **库和包**: npm 包,私有模块
- **微服务**: 单个服务代码库
- **遗留代码库**: 较旧的 JavaScript 项目
### **🔍 扫描目标**
- **单个文件**: `nullvoid suspicious-file.js`
- **项目目录**: `nullvoid ./my-project`
- **npm 包**: `nullvoid express`
- **依赖项**: `nullvoid ./node_modules`
- **Git 仓库**: `nullvoid ./git-repo`
- **生产代码**: 部署前的安全检查
- **CI/CD 流水线**: 自动化安全扫描
### **⚡ 用例**
- **部署前安全**: 在生产前捕获恶意代码
- **供应链保护**: 扫描依赖项中的威胁
- **代码审查**: 开发期间的安全分析
- **事件响应**: 安全地分析可疑文件
- **合规性**: 满足安全要求和标准
- **审计准备**: 全面的安全评估
### **🔍 完整扫描流程**
```
graph TD
A[File Path Input] --> B[Path Validation]
B --> C[Safe File Read]
C --> D[Static Analysis]
D --> E{Suspicious?}
E -->|Yes| F[Sandbox Analysis]
E -->|No| G[Basic Analysis]
F --> H[Threat Detection]
G --> H
H --> I[Results]
%% Styling for all nodes
style A fill:#ffebee,stroke:#333,color:#e63946
style B fill:#e3f2fd,stroke:#333,color:#1d3557
style C fill:#f3e5f5,stroke:#333,color:#7b1fa2
style D fill:#e8f5e8,stroke:#333,color:#2e7d32
style E fill:#fff3e0,stroke:#333,color:#f57c00
style F fill:#ffebee,stroke:#333,color:#d32f2f
style G fill:#f1f8e9,stroke:#333,color:#558b2f
style H fill:#e0f2f1,stroke:#333,color:#2a9d8f
style I fill:#e8eaf6,stroke:#333,color:#3f51b5
```
**流程:**
1. **路径验证**: 安全的路径检查和遍历保护
2. **安全文件读取**: 具有安全措施的直接文件系统访问
3. **静态分析**: 基于而不执行代码的 AST 模式检测
4. **可疑检测**: 针对恶意指标启发式分析
5. **沙箱分析**: 仅对标记的代码进行隔离 VM 执行
6. **威胁检测**: 全面的威胁识别和分类
7. **结果**: 包含可操作见解的详细安全报告
## 📊 示例输出
### 实时进度显示
```
⠋ 🔍 Scanning ...
📁 nullvoid.js (detected: security tools)
📁 colors.js
📁 parallel.js
📁 rules.js (detected: security tools)
📁 scan.js (detected: security tools)
📁 scan.test.js (detected: test file)
📁 setup.js
📁 cache.test.js
📁 entropy.test.js
📁 gpg-signature.test.js
📁 parallel.test.js
📁 signature-verification.test.js
✔ ✅ Scan completed
🔍 NullVoid Scan Results
✅ No high-severity threats detected
ℹ️ 43 low/medium severity threats were filtered out
💡 Use --all flag to see all threats
📊 Scanned 1 directory(s), 13 file(s) in 197ms
```
### 威胁检测结果
```
🔍 NullVoid Scan Results
⚠️ 2 threat(s) detected:
1. WALLET_HIJACKING: Package may contain wallet hijacking code
Package: 📁 /Users/username/project/node_modules/suspicious-package/index.js
🔗 https://www.npmjs.com/package/suspicious-package
Severity: HIGH
2. HIGH_ENTROPY: Package contains files with unusually high entropy
Package: 📦 npm-registry://obfuscated-lib@latest
🔗 https://www.npmjs.com/package/obfuscated-lib
Severity: MEDIUM
Scanned 15 package(s) in 234ms
```
## 🚨 威胁严重级别
- **CRITICAL**: 钱包劫持、交易重定向或直接的财务威胁
- **HIGH**: 网络操纵、隐蔽控制或重大安全风险
- **MEDIUM**: 需要审查的可疑行为
- **LOW**: 轻微问题或最佳实践违规
## 🔧 配置
| 选项 | 描述 | 默认值 |
|--------|-------------|---------|
| `--verbose` | 启用详细输出 | `false` |
| `--output ` | 输出格式 (json, table, sarif) | `table` |
| `--depth ` | 要扫描的最大依赖树深度 | `3` |
| `--tree` | 在输出中显示依赖树结构 | `false` |
| `--all` | 显示所有威胁,包括低/中严重级别 | `false` |
| `--parallel` | 启用并行扫描以获得更好的性能 | `true` |
| `--workers ` | 要使用的并行 worker 数量 | `auto` |
| `--sarif-file ` | 将 SARIF 输出写入文件 (需要 --output sarif) | - |
| `--ioc-providers ` | 逗号分隔的 IoC 提供商列表 | `npm,ghsa,cve` |
| `--no-ioc` | 禁用 IoC 提供商查询 | `false` |
| `--train` | `--export-training ml-model/train.jsonl` 的简写 | - |
| `--export-training ` | 将有威胁包的特征向量追加到 JSONL (标签 1) | - |
| `--export-training-good ` | 将无威胁包的特征向量追加到 JSONL (标签 0) 用于平衡训练 | - |
| `--cache-stats` | 显示缓存统计信息 | `false` |
| `--enable-redis` | 启用 Redis 分布式缓存 | `false` |
| `--network-stats` | 显示网络性能指标 | `false` |
| `nullvoid registry-health` | 检查已配置包 registry 的健康状况 | - |
| `nullvoid trust-status ` | 显示信任评分和验证状态 | - |
| `nullvoid verify-consensus ` | 多源共识验证 | - |
| `nullvoid register-on-chain ` | 在区块链上注册包 CID | - |
| `nullvoid verify-on-chain --cid ` | 根据区块链验证包 | - |
| `--version` | 显示版本信息 | - |
| `--help` | 显示帮助信息 | - |
### **🎨 威胁指示符**
- **`(detected: OBFUSCATED_CODE)`**: 检测到混淆或编码内容
- **`(detected: SUSPICIOUS_MODULE)`**: 可疑模块导入 (fs, child_process 等)
- **`(detected: MALICIOUS_CODE_STRUCTURE)`**: 识别出恶意代码模式
- **`(detected: security tools)`**: NullVoid 自身的安全工具 (白名单)
- **`(detected: test file)`**: 测试文件 (白名单)
## 🌳 依赖树分析
NullVoid 扫描传递依赖项以查找隐藏的威胁:
```
# 带依赖树分析的扫描(默认深度:3)
nullvoid .
# 扫描更深的依赖链
nullvoid . --depth 5
# 显示依赖树结构
nullvoid . --tree
```
### 示例树输出
```
🌳 Dependency Tree Structure:
express@4.18.2 [25 deps]
accepts@1.3.8 [3 deps]
body-parser@1.20.1 [8 deps]
debug@2.6.9 (1 threat) ⚠ WALLET_HIJACKING
📊 Dependency Tree Analysis:
Total packages scanned: 45
Max depth reached: 3
Packages with threats: 2
Deep dependencies (depth ≥2): 12
```
## 🚨 真实攻击检测
NullVoid 检测复杂的供应链攻击,例如最近的 npm 入侵:
### **近期攻击:debug、chalk 和其他 16 个包**
- **攻击载体**: 通过 `window.ethereum` 拦截进行钱包劫持
- **技术**: 静默交易重定向到攻击者控制的地址
- **多链**: 针对 Ethereum、Bitcoin、Litecoin、Tron、BCH 和 Solana
- **隐蔽**: 使用混淆和 `stealthProxyControl` 全局对象
### **NullVoid 如何检测:**
```
nullvoid .
# 结果显示:
⚠️ 4 threat(s) detected:
1. WALLET_HIJACKING: Package may contain wallet hijacking code
Severity: CRITICAL
2. NETWORK_MANIPULATION: Package may manipulate network responses
Severity: HIGH
3. MULTI_CHAIN_TARGETING: Package supports multiple blockchain networks
Severity: MEDIUM
4. STEALTH_CONTROLS: Package contains stealth controls or obfuscation
Severity: HIGH
```
## 🔍 **依赖混淆检测**
NullVoid 包含 **依赖混淆检测**,用于识别潜在的供应链攻击,即创建恶意包以利用包解析漏洞。
### **🎯 检测方法**
#### **时间线分析**
- **Git 历史与 Registry 创建对比**: 比较包创建日期与 git 提交历史
- **可疑时间**: 标记创建时间可疑地接近首次 git 提交的包
- **风险级别**:
- `CRITICAL`: 包在 git 历史记录之前 < 1 天创建
- `HIGH`: 包在 git 历史记录之前 < 7 天创建
- `MEDIUM`: 包在 git 历史记录之前 < 30 天创建
#### **Scope 分析**
- **私有 Scope 检测**: 识别使用私有 scope 的包 (`@company`, `@internal` 等)
- **命名空间冲突**: 检测潜在的命名空间混淆攻击
- **Registry 配置**: 警告不正确的 npm registry 设置
#### **模式分析**
- **可疑命名**: 检测 typosquatting 和命名混淆模式
- **活动分析**: 识别 git 活动可疑地少的包
- **相似度评分**: 使用 Levenshtein 距离进行名称相似度分析
### **📋 示例检测输出**
```
🔍 Analyzing dependency confusion patterns...
⚠️ 3 dependency confusion threat(s) detected:
1. DEPENDENCY_CONFUSION_TIMELINE: Package creation date suspiciously close to git history (2 days)
Package: @company/internal-auth
Severity: HIGH
Details: Package created: 2023-12-01T00:00:00.000Z, First git commit: 2023-11-29T00:00:00.000Z
2. DEPENDENCY_CONFUSION_SCOPE: Private scope package may be vulnerable to dependency confusion
Package: @company/internal-auth
Severity: HIGH
Details: Private scope '@company' detected. Ensure proper npm registry configuration.
3. DEPENDENCY_CONFUSION_PATTERN: Package name follows suspicious naming patterns
Package: abc123def
Severity: MEDIUM
Details: Suspicious patterns: /^[a-z]+\d+[a-z]+$/
```
### **🛡️ 保护建议**
#### **对于私有包**
- 使用 scoped 包: `@yourcompany/package-name`
- 正确配置 `.npmrc` 文件
- 使用私有 npm registry
- 实施包签名
#### **对于公共包**
- 验证包真实性
- 检查 git 历史和活动
- 使用 package-lock.json 文件
- 监控可疑更新
### **🤖 ML 驱动的威胁评分**
NullVoid 可以使用训练好的 XGBoost 模型进行威胁评分:
- **依赖混淆** (`ML_MODEL_URL`): 时间线、registry、提交模式
- **行为** (`BEHAVIORAL_MODEL_URL`): 包脚本、网络使用、eval、子进程
配置后,扫描会将特征向量发送到模型,并将评分纳入威胁检测。可选的 `ML_EXPLAIN` 启用人类可读的原因和特征重要性。
**设置:** 完整流水线请参阅 [ML 训练流水线](#-ml-training-pipeline) (`ml:export` → `scan --train` → `ml:train` → `ml:serve`)。
通过 `.nullvoidrc` 或环境配置:
```
{
"DEPENDENCY_CONFUSION_CONFIG": {
"ML_DETECTION": {
"ML_MODEL_URL": "http://localhost:8000/score",
"BEHAVIORAL_MODEL_URL": "http://localhost:8000/behavioral-score",
"ML_EXPLAIN": true
}
}
}
```
或者: `export NULLVOID_ML_MODEL_URL=http://localhost:8000/score`
训练和 API 详情请参阅 [ml-model/README.md](ml-model/README.md)。
### **⚙️ 配置**
可以通过环境变量配置依赖混淆检测:
```
# 启用/禁用依赖混淆分析
NULLVOID_DEPENDENCY_CONFUSION_ENABLED=true
# 调整时间线阈值(天)
NULLVOID_TIMELINE_SUSPICIOUS=30
NULLVOID_TIMELINE_HIGH_RISK=7
NULLVOID_TIMELINE_CRITICAL=1
# 仓库请求超时(毫秒)
NULLVOID_REGISTRY_TIMEOUT=10000
```
## 🗺️ **路线图**
NullVoid 拥有全面的路线图,专注于高级威胁检测、企业功能和 AI/ML 集成。
### **🎯 路线图亮点**
#### **公开 IoC 集成与性能**
- ✅ **TypeScript 迁移**: 完全迁移到 TypeScript,以增强类型安全性和开发人员体验
- ✅ **Snyk 集成**: 来自 Snyk 数据库的实时漏洞数据
- ✅ **npm Advisories**: 官方 npm 安全公告集成
- ✅ **GitHub Security Advisories**: GHSA 集成以获得全面的威胁情报
- ✅ **性能优化**: 增强的缓存、并行处理和网络优化
- ✅ **多层缓存**: L1 (内存)、L2 (文件)、L3 (Redis) 缓存系统
- ✅ **网络优化**: 连接池、请求批处理、压缩
#### **增强检测与开发人员体验**
- ✅ **ML 检测**: 基于 XGBoost 的依赖混淆评分;`npm run ml:serve`, `ml:train`, `ml:export`;GHSA 自动标记,可解释性;请参阅 [ml-model/README.md](ml-model/README.md)
- ✅ **高级时间线分析**: 基于 ML 的时间线分析和提交模式分析
- **IDE 集成**: [VS Code 扩展](packages/vscode-extension) (从命令面板运行扫描);IntelliJ 插件计划中
- **Pre-commit Hooks**: 提交前可选扫描 — 设置 `NULLVOID_PRE_COMMIT=1` 以启用;如果发现威胁,提交将被**阻止**。请参阅 [Pre-commit 集成](docs/PRE_COMMIT.md)。
- **更多 CI/CD 平台**: [Jenkins](Jenkinsfile.example)、[CircleCI](.circleci/config.yml)、[Travis CI](.travis.example.yml)、[GitLab CI](.gitlab-ci.example.yml)、[Azure DevOps](azure-pipelines.example.yml)
#### **企业功能与高级分析**
- **多租户支持**: 组织级扫描和报告
- ✅ **高级报告**: Executive dashboard、合规性 (C/I/A)、扫描报告、ML 控制
- **API 集成**: 用于扫描、报告、组织、团队的 REST API;部署到 Vercel 或 Railway
- **自定义规则引擎**: 用户定义的检测模式
#### **AI/ML 集成与区块链功能**
- **社区分析**: npm 下载量、GitHub stars、维护评分用于 ML 流水线 (`COMMUNITY_CONFIG`)
- **信任网络**: 本地信任存储,`nullvoid trust-status` (`TRUST_CONFIG`)
- **共识验证**: 多源完整性检查;`nullvoid verify-consensus`, `verify-package --consensus` (`CONSENSUS_CONFIG`)
- **区块链注册表**: 链上包 CID;`nullvoid register-on-chain`, `nullvoid verify-on-chain` (`BLOCKCHAIN_CONFIG`)
- ✅ **AI/ML 集成**: 用于依赖混淆威胁评分的 XGBoost 模型 (`npm run ml:serve`);GHSA 自动标记、平衡训练、可解释性
- **区块链集成**: 不可变签名和去中心化验证
- **行为分析**: AI 驱动的异常检测
- ✅ **预测分析**: 基于模式预测潜在的安全问题 (`computePredictiveScore`, `DEPENDENCY_CONFUSION_PREDICTIVE_RISK`)
## 📋 用于 CI/CD 集成的 SARIF 输出
NullVoid 支持 SARIF (静态分析结果交换格式) 输出,以便与 CI/CD 流水线和安全工具无缝集成。
### CI 集成
### **GitHub CI Actions 集成**
```
# .github/workflows/security.yml
name: Security Scan
on: [push, pull_request]
jobs:
security-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install NullVoid
run: npm install -g nullvoid
- name: Run Security Scan
run: nullvoid . --output sarif --sarif-file nullvoid-results.sarif
- name: Upload SARIF Results
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: nullvoid-results.sarif
```
### **CircleCI 集成**
[.circleci/config.yml](.circleci/config.yml) 中包含一个现成的 CircleCI 配置。它安装依赖项,构建 NullVoid,运行扫描,并将 JSON 报告作为构件存储。
```
# .circleci/config.yml (摘录)
jobs:
security-scan:
docker:
- image: cimg/node:20
steps:
- checkout
- run: npm ci
- run: npm run build
- run: node ts/dist/bin/nullvoid.js . --format json --output security-report.json
- store_artifacts:
path: security-report.json
```
### **GitLab CI 集成**
```
# .gitlab-ci.yml
security_scan:
stage: test
image: node:20
script:
- npm install -g nullvoid
- nullvoid . --output sarif --sarif-file nullvoid-results.sarif
artifacts:
reports:
sarif: nullvoid-results.sarif
```
### **Azure DevOps 集成**
```
# azure-pipelines.yml
trigger:
- main
pool:
vmImage: 'ubuntu-latest'
steps:
- task: NodeTool@0
inputs:
versionSpec: '20.x'
displayName: 'Install Node.js'
- script: |
npm install -g nullvoid
nullvoid . --output sarif --sarif-file nullvoid-results.sarif
displayName: 'Run NullVoid Security Scan'
- task: PublishBuildArtifacts@1
inputs:
pathToPublish: 'nullvoid-results.sarif'
artifactName: 'sarif-results'
```
### **Jenkins 集成**
[Jenkinsfile.example](Jenkinsfile.example) 中有一个声明式流水线示例。复制到 `Jenkinsfile` 或作为阶段添加到你的流水线中。
```
// Jenkinsfile (excerpt)
stage('NullVoid Security Scan') {
steps {
sh 'npx nullvoid . --output json --sarif-file nullvoid-results.sarif'
}
post {
always {
archiveArtifacts artifacts: 'nullvoid-results.sarif', allowEmptyArchive: true
}
}
}
```
### **SARIF 输出示例**
```
{
"$schema": "https://raw.githubusercontent.com/oasis-tcs/sarif-spec/master/Schemata/sarif-schema-2.1.0.json",
"version": "2.1.0",
"runs": [{
"tool": {
"driver": {
"name": "NullVoid",
"version": "2.1.0",
"informationUri": "https://github.com/kurt-grung/NullVoid"
}
},
"results": [{
"ruleId": "WALLET_HIJACKING",
"level": "error",
"message": {
"text": "Package may contain wallet hijacking code"
},
"locations": [{
"physicalLocation": {
"artifactLocation": {
"uri": "node_modules/suspicious-package/index.js"
},
"region": {
"startLine": 42,
"startColumn": 1
}
}
}]
}]
}]
}
```
### **支持的 CI/CD 平台**
- **GitHub Security**: 自动安全警报和 PR 检查
- **GitLab Security**: 安全 dashboard 集成
- **Azure DevOps**: 流水线中的安全扫描
- **Jenkins**: 安全报告插件
- **SonarQube**: 代码质量和安全分析
## 🤝 贡献
**本项目不接受外部贡献。**
NullVoid 由 [Kurt Grüng](https://kurtgrung.com) 构建和维护,是一个专注的、安全第一的工具,具有单一的开发方向。但是,我们欢迎您的反馈和建议!
- [LinkedIn](https://www.linkedin.com/in/kurtgrung/)
- [kurtgrung.com](https://kurtgrung.com)
- [GitHub](https://github.com/kurt-grung)
### 🐛 **报告问题**
- **安全问题**: 请将安全漏洞私下报告给 `kurtgrung@gmail.com`
- **Bug 报告**: 打开一个 issue 并提供详细的复现步骤 (使用 [bug report template](.github/ISSUE_TEMPLATE/bug_report.md))
- **功能请求**: 打开一个 issue 讨论潜在的增强功能 (使用 [feature request template](.github/ISSUE_TEMPLATE/feature_request.md))
- **项目看板**: 通过 [GitHub Projects](https://github.com/kurt-grung/NullVoid/projects) 跟踪路线图、bug 和更新 — 设置请参阅 [.github/PROJECT_SETUP.md](.github/PROJECT_SETUP.md)
- **Dashboard + API**: 部署到 Vercel 或 Railway — 请参阅 [docs/DEPLOYMENT.md](docs/DEPLOYMENT.md);Railway 设置: [docs/RAILWAY.md](docs/RAILWAY.md);增强路线图: [docs/dashboard-enhancement-plan.md](docs/dashboard-enhancement-plan.md)
- **文档**: 报告文档问题或提出改进建议
### 💡 **获取帮助**
- **问题**: 打开带有 `question` 标签的 issue
- **使用帮助**: 查看 [故障排除指南](TROUBLESHOOTING.md)
- **安全问题**: 查看 [安全策略](SECURITY.md)
### 🔒 **安全第一的方法**
- **无外部代码**: 所有代码均由核心团队编写和审查
- **专注开发**: 单一方向确保一致的安全标准
- **质量保证**: 376+ 项测试确保可靠性和安全性
- **定期更新**: 持续的安全改进和威胁检测更新
### 📋 **Issue 指南**
打开 issue 时,请包括:
- **清晰描述**: 你想做什么
- **预期行为**: 应该发生什么
- **实际行为**: 实际发生了什么
- **环境**: 操作系统、Node.js 版本、NullVoid 版本
- **复现步骤**: 如何重现该问题
### 🎯 **开发理念**
NullVoid 遵循安全第一的开发方法:
- **零信任**: 所有代码都经过安全影响的仔细审查
- **最小依赖**: 通过仔细的依赖管理减少攻击面
- **全面测试**: 广泛的测试覆盖确保可靠性
- **清晰文档**: 所有功能和安全考虑的详细文档
## 📄 许可证
MIT License - 详情请参阅 [LICENSE](LICENSE)。
## 🔗 链接
- [GitHub 仓库](https://github.com/kurt-grung/NullVoid)
- [npm 包](https://www.npmjs.com/package/nullvoid)
- [安全策略](SECURITY.md)
- [更新日志](CHANGELOG.md)
- [发布说明](release-notes/)
**⚠️ 免责声明**: NullVoid 旨在帮助识别潜在的恶意包,但不能替代全面的安全实践。请务必手动审查包并保持依赖项更新。
标签:Assetfinder, CI/CD 安全, CMS安全, DevSecOps, DNS 反向解析, IP 地址批量处理, JavaScript, LNA, MITM代理, Node.js 安全, NPM 包安全, SARIF, VM 分析, 上游代理, 云安全监控, 代码扫描器, 数据投毒防御, 文档安全, 混淆代码检测, 自动化攻击, 逆向工具, 钱包劫持检测, 静态分析