kurt-grung/NullVoid

GitHub: kurt-grung/NullVoid

一款针对 JavaScript/Node.js 生态的高级静态分析工具,专注于检测供应链攻击、钱包劫持及混淆恶意软件。

Stars: 2 | Forks: 0

# NullVoid [![npm version](https://img.shields.io/npm/v/nullvoid.svg)](https://www.npmjs.com/package/nullvoid) [![npm downloads](https://img.shields.io/npm/dm/nullvoid.svg)](https://www.npmjs.com/package/nullvoid) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![GitHub stars](https://img.shields.io/github/stars/kurt-grung/NullVoid.svg)](https://github.com/kurt-grung/NullVoid/stargazers) [![Tests](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c3505cf84a124142.svg)](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 分析, 上游代理, 云安全监控, 代码扫描器, 数据投毒防御, 文档安全, 混淆代码检测, 自动化攻击, 逆向工具, 钱包劫持检测, 静态分析