homeofe/supply-chain-guard
GitHub: homeofe/supply-chain-guard
一款开源的多生态软件供应链安全扫描器,用于检测恶意包、凭据泄露及供应链攻击链并生成 SBOM。
Stars: 5 | Forks: 3
# supply-chain-guard
开源的软件供应链安全扫描器,支持 npm、PyPI、Cargo、Go、RubyGems、Composer、NuGet、Docker、Terraform、VS Code 扩展、GitHub Actions 和 GitHub 仓库。可检测恶意软件活动(GlassWorm、Vidar、Shai-Hulud)、虚假 AI 工具仓库、账号接管,以及涵盖所有主要 lockfile 格式(npm、pnpm、yarn、bun)的 180 多个威胁指标。生成包含真实依赖清单的 CycloneDX 1.6 SBOM,验证 SLSA 来源,并将各项发现关联为攻击链事件。
[](https://www.npmjs.com/package/supply-chain-guard)
[](https://www.npmjs.com/package/supply-chain-guard)
[](https://nodejs.org)
[](https://www.typescriptlang.org/)
[](https://github.com/homeofe/supply-chain-guard/actions/workflows/ci.yml)
[](https://github.com/homeofe/supply-chain-guard/actions/workflows/aahp-verify.yml)
[](https://github.com/homeofe/supply-chain-guard/commits/main)
[](https://opensource.org/licenses/Apache-2.0)

## 目录
- [背景](#background)
- [检测内容](#what-it-detects)
- [安装](#installation)
- [快速开始](#quickstart)
- [输出格式](#output-formats)
- [CI 退出代码控制](#ci-exit-code-control)
- [过滤](#filtering)
- [策略配置](#policy-configuration-v44)
- [基线差异对比](#baseline-diffing-v44)
- [示例输出](#example-output)
- [支持的生态系统](#supported-ecosystems)
- [工具对比](#how-it-compares)
- [GitHub Action](#github-action)
- [面向 AI 编程代理 (MCP)](#for-ai-coding-agents-mcp)
- [实时威胁订阅源](#live-threat-feed)
- [安装守卫](#install-guard)
- [添加自定义模式](#adding-custom-patterns)
- [架构](#architecture)
- [贡献指南](#contributing)
- [更新日志](#changelog)
## 背景
若要深入了解 GlassWorm 是如何渗透进软件供应链的,以及本工具背后的检测技术,请阅读此博客文章:[GlassWorm 是如何进入的以及我们是如何将其拒之门外的](https://blog.elvatis.com/how-glassworm-gets-in-and-how-we-locked-it-out/)。
## 检测内容
### 恶意软件活动
- GlassWorm 活动特征及 Solana 区块链 C2
- Vidar/GhostSocks 信息窃取程序(2026 年 4 月 Claude Code 泄露活动)
- Shai-Hulud 自我复制型 npm 蠕虫
- XZ Utils 后门(CVE-2024-3094)、SolarWinds SUNBURST、Codecov、ua-parser-js、coa/rc
- 虚假 AI 工具仓库(Claude Code、Copilot、Cursor、ChatGPT、OpenClaw 诱饵)
### 代码级威胁
- 混淆执行:eval+atob、eval+Buffer.from、模板字面量 eval、动态 `import()`
- 不可见 Unicode、RTL 覆盖、SVG 脚本注入、隐写术
- 针对编码 payload 的香农熵分析
- Proxy 处理器陷阱、来自外部源的 WebAssembly
### 供应链攻击
- Install hook 深度分析(窃取机密信息、下载执行链、二进制 blob)
- 基于莱文斯坦距离的拼写错误检测,比对 npm 前 100 名包并包含已知安全白名单
- 依赖混淆与命名空间抢注
- 已知恶意版本黑名单(axios、ua-parser-js、coa、rc、event-stream、node-ipc、colors、faker)
- 发布异常检测(维护者变更、版本空档、新增脚本)
### 基础设施与 CI/CD
- GitHub Actions:未锁定的 actions、机密信息窃取、编码 payload、curl 管道
- Dockerfile:curl 管道、未锁定基础镜像、硬编码机密、SUID 位
- Terraform/IaC:内联脚本、外部模块、硬编码机密
- 包管理器配置(.npmrc、.yarnrc、pip.conf):HTTP 仓库、暴露的 token
- Git hooks 与子模块安全
### 仓库信任信号
- GitHub 仓库元数据分析(账号年龄、刷 Star、单次提交仓库)
- 发布产物扫描(.exe、.7z、双重扩展名、LNK 快捷方式、PE magic)
- README 诱饵检测(泄露/盗版/诱导性紧急用语)
### 针对 AI 编程代理的提示词注入 (v5.2.19)
检测嵌入在包 README 中的、用于控制 LLM 的 token,这些 token 会针对代替人类开发者阅读文档的下游 AI 编程代理(Claude Code、Cursor、Copilot)。下面的示例 token 在原始 README 中经过了 HTML 转义,因此这些模式不会标记文档本身——它们在任何 Markdown 查看器中都能正常渲染:
- `<system-reminder>` / `<system-prompt>` (Anthropic 系列)
- `<|im_start|>` / `<|im_end|>` ChatML (OpenAI、Llama、Mistral、Qwen)
- `[INST]` / `[/INST]` (Mistral、Llama 指令微调版)
- `<|system|>` / `<|user|>` / `<|assistant|>` (Phi、Gemma、Granite、通用角色 token)
- 自然语言越狱措辞("ignore previous instructions")
### 凭据检测
- AWS 访问密钥(AKIA/ASIA)、GitHub token(ghp_/gho_)、npm token
- SSH 私钥、通用 API 密钥、PEM 私钥
### Dead-Drop 解析器 / C2 检测
- Steam 社区个人资料、Telegram 频道、Pastebin、GitHub Gists
- DNS TXT 记录、DNS-over-HTTPS、动态 WebSocket URL
- 已知 C2 域名和 IP(来自 IOC 黑名单)
### 关联引擎 (v4.2)
将各项独立发现链接为事件级别的攻击链:
- "GlassWorm 活动"(标记 + eval + 数据窃取)
- "Vidar 窃取程序感染"(dead-drop + 浏览器数据窃取 + dropper)
- "npm 账号接管"(维护者变更 + install hooks + C2)
- "虚假仓库恶意软件"(诱饵 + exe 发布 + 新账号)
- 15+ 种带置信度评分的关联规则
### 信任度评估 (v4.2)
每次扫描进行 4 维度的信任度评分:
- 发布者信任度 (40%) / 代码质量 (30%) / 依赖信任度 (20%) / 发布流程 (10%)
## 安装
```
npm install -g supply-chain-guard
```
或者直接使用 npx:
```
npx supply-chain-guard scan ./my-project
```
### pre-commit
将扫描器作为 [pre-commit](https://pre-commit.com) hook 运行(Python 生态团队无需接触 npm 即可获得相同的把关机制)。将以下内容添加到您的 `.pre-commit-config.yaml` 中:
```
repos:
- repo: https://github.com/homeofe/supply-chain-guard
rev: v5.6.2
hooks:
- id: supply-chain-guard
```
扫描器会将其风险历史记录写入被扫描仓库的 `.scg-history/` 目录中;
当设置了 `--no-history` 时则不会写入,而该 hook 现在正是使用了此参数。对于未使用该标志的普通扫描,请将该文件夹添加到您的 `.gitignore` 中。
此 hook 会在每次提交时扫描仓库根目录,并在发现高危或严重结果时失败。
### Docker
通过官方多架构镜像(linux/amd64、linux/arm64)在无需 Node 工具链的情况下运行扫描器。该镜像会在每次发布 tag 时发布到 GHCR:
```
docker run --rm -v ${PWD}:/scan ghcr.io/homeofe/supply-chain-guard scan /scan
```
`${PWD}` 适用于 bash、zsh 和 PowerShell;在 cmd.exe 中请改用 `%cd%`。
## 快速开始
```
# 扫描本地目录
supply-chain-guard scan ./my-project
# 扫描 GitHub repo(包括信任信号分析)
supply-chain-guard scan https://github.com/user/repo
# 分析 GitHub repo 的信任信号 + 恶意软件
supply-chain-guard repo https://github.com/user/repo
# 扫描 npm package(下载但不安装)
supply-chain-guard npm suspicious-package-name
# 扫描 PyPI package
supply-chain-guard pypi suspicious-package
# 扫描 VS Code extension
supply-chain-guard vscode publisher.extension-name
# 从 Open VSX registry 扫描 VS Code extension(VSCodium 等)
supply-chain-guard vscode publisher.extension --registry openvsx
# 检测 dependency confusion
supply-chain-guard confusion ./my-project
# 扫描整个 GitHub organization
supply-chain-guard org my-github-org
# 扫描自某次 commit 以来更改的文件(diff 模式)
supply-chain-guard scan ./project --since HEAD~5
# 监控 Solana C2 wallet
supply-chain-guard monitor --once
```
## 输出格式
```
supply-chain-guard scan ./project # Human-readable text (default)
supply-chain-guard scan ./project --format json # JSON (for CI/CD pipelines)
supply-chain-guard scan ./project --format html # Standalone HTML report
supply-chain-guard scan ./project --format markdown # Markdown (for PR comments)
supply-chain-guard scan ./project --format sarif # SARIF 2.1.0 (GitHub Code Scanning)
supply-chain-guard scan ./project --format sbom # CycloneDX 1.6 SBOM with real dependency inventory
supply-chain-guard scan ./project --sbom-output sbom.json # Write SBOM to file separately
supply-chain-guard scan ./project --format badge # Shields.io endpoint JSON
supply-chain-guard scan ./project --format gitlab # GitLab Dependency Scanning report (security-report-schemas 15.2.4, see examples/gitlab-ci.yml)
```
### 徽章
从 CI(gist 或 gh-pages)发布徽章 JSON,然后指向 Shields:
当扫描发现高危/严重问题时会以非零代码退出——这正是
徽章必须更新为红色的时候。在生成步骤中抵消退出代码(或在发布
步骤使用 `if: always()`),以确保糟糕的扫描永远不会让徽章卡在绿色:
```
- name: Generate badge JSON
run: supply-chain-guard scan . --format badge > badge.json || true
- name: Publish to gist
if: always()
run: gh api gists/YOUR_GIST_ID -X PATCH -F "files[badge.json][content]=@badge.json"
env:
GH_TOKEN: ${{ secrets.BADGE_GIST_TOKEN }}
```
```

```
## CI 退出代码控制
```
supply-chain-guard scan ./project --fail-on critical # Fail only on critical
supply-chain-guard scan ./project --fail-on high # Fail on high or above
supply-chain-guard scan ./project --fail-on info # Fail on any finding
```
## 过滤
```
supply-chain-guard scan ./project --min-severity high
supply-chain-guard scan ./project --exclude SOLANA_MAINNET,HEX_ARRAY
```
## 策略配置 (v4.4)
在您的项目根目录中创建 `.supply-chain-guard.yml` 以自定义行为:
```
rules:
disable:
- HEX_ARRAY
- CHARCODE_OBFUSCATION
severityOverrides:
GHA_UNPINNED_ACTION: medium
allowlist:
packages:
- internal-utils
domains:
- company.internal
githubOrgs:
- my-org
suppress:
- rule: RELEASE_EXE_ARTIFACT
reason: Legitimate Windows installer
baseline:
file: .scg-baseline.json
```
## 基线差异对比 (v4.4)
仅报告新发现(忽略已知的基线):
```
# 将当前发现保存为 baseline
supply-chain-guard scan ./project --save-baseline .scg-baseline.json
# 在后续扫描中,仅显示新发现
supply-chain-guard scan ./project --baseline .scg-baseline.json
```
## 示例输出
```
╔══════════════════════════════════════════════════════════════════════════════╗
║ supply-chain-guard v5.1.0 ║
╚══════════════════════════════════════════════════════════════════════════════╝
Target ./suspicious-package
Type directory · 18 / 18 files scanned
Duration 142ms
Time 2026-04-07T12:00:00.000Z
┌─────────────────────────────── RISK SCORE ─────────────────────────────────┐
│ │
│ 83 / 100 █████████████████████████████████░░░░░ CRITICAL │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────── FINDINGS SUMMARY ───────────────────────────────┐
│ CRITICAL 3 ████████████████████████████████ │
│ HIGH 1 ██████████ │
│ MEDIUM 0 ──────────────────────────────── │
│ LOW 0 ──────────────────────────────── │
│ INFO 0 ──────────────────────────────── │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────────── FINDINGS ───────────────────────────────────┐
│ │
│ [CRITICAL] DEAD_DROP_STEAM │
│ Steam Community profile URL used as dead-drop C2 resolver │
│ src/config.js:12 │
│ match https://steamcommunity[.]com/profiles/76561198... │
│ fix Remove external URL resolution; use static configuration │
│ │
│ ············································································· │
│ │
│ [CRITICAL] VIDAR_BROWSER_THEFT │
│ Browser credential file access (infostealer pattern) │
│ src/steal.js:45 │
│ match AppData[...]Google[...]Chrome[...]Login Data │
│ fix Never access browser credential stores │
│ │
│ ············································································· │
│ │
│ [CRITICAL] DROPPER_TEMP_EXEC │
│ Dropper: file written and executed from temp directory │
│ src/loader.js:23 │
│ match saveFile(tmpdir, payload); exe‹c›(tmpPath) │
│ fix Remove dropper logic; audit all exec() call sites │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────── TRUST BREAKDOWN ─────────────────────────────────┐
│ Publisher ██████░░░░░░░░░░░░░░░░░░░░░░░░░░░░ 20/100 │
│ Code █████████░░░░░░░░░░░░░░░░░░░░░░░░░ 30/100 │
│ Dependencies ████████████████████████████████████ 100/100 │
│ Release ██████████████████████████░░░░░░░░░ 80/100 │
│────────────────────────────────────────────────────────────────────────────│
│ Overall █████████████░░░░░░░░░░░░░░░░░░░░░░ 48/100 │
└──────────────────────────────────────────────────────────────────────────────┘
┌──────────────────────────── CORRELATED INCIDENTS ───────────────────────────┐
│ │
│ [CRITICAL] Vidar Stealer Infection 95% confidence │
│ Multiple infostealer indicators: dead-drop resolvers for C2, │
│ browser credential theft, and crypto wallet targeting. │
│ Indicators: DEAD_DROP_STEAM, VIDAR_BROWSER_THEFT, DROPPER_TEMP_EXEC │
│ │
└──────────────────────────────────────────────────────────────────────────────┘
```
## 支持的生态系统
| 生态系统 | 命令 | 扫描内容 |
|-----------|---------|---------------|
| npm | `scan`, `npm` | package.json、安装脚本、tarball;lockfile:package-lock.json、pnpm-lock.yaml、yarn.lock (v1 + Berry)、bun.lock |
| PyPI | `pypi` | setup.py、setup.cfg、pyproject.toml、install hooks |
| Cargo/Rust | `scan` | Cargo.toml、build.rs、proc macros |
| Go | `scan` | go.mod、init() 函数、CGo、插件加载 |
| RubyGems | `scan` | Gemfile、Gemfile.lock(恶意 gem IOC、http/git 源) |
| Composer/PHP | `scan` | composer.json、composer.lock(恶意包 IOC、http 仓库) |
| NuGet/.NET | `scan` | packages.lock.json、*.csproj、nuget.config(恶意包 IOC、http feed) |
| Docker | `scan` | Dockerfile、docker-compose.yml、Containerfile |
| Terraform | `scan` | .tf、.hcl 文件(provisioner、模块、机密信息) |
| VS Code | `vscode` | .vsix 文件、activation events、危险 API |
| GitHub Actions | `scan` | .github/workflows/*.yml |
| GitHub 仓库 | `repo` | 信任信号、发布版本、README 诱饵 |
| Solana | `monitor` | C2 钱包 memo 交易 |
## 工具对比
supply-chain-guard 是专注于恶意软件/行为/活动 IOC 的防护层:它在完全本地化的环境下,静态扫描您实际安装的内容(node_modules、包、Docker 镜像、VS Code 扩展、Actions 工作流、IaC),以发现恶意行为和已知的活动指标。它不执行 CVE 查找:请将其与 osv-scanner 或 npm audit 搭配使用以检测已知漏洞。下述大多数工具衡量的是不同的维度,因此它们是互补的,而非竞争关系。
| 工具 | 侧重点 | 恶意软件/行为检测 | 已知 CVE 查找 | 生态系统 | 开源 | 需要账号 |
|---|---|---|---|---|---|---|
| **supply-chain-guard** | 已安装产物中的恶意软件活动、IOC、行为启发式检测;SBOM + SLSA 验证 | 是:180+ 静态启发式检测以及活动 IOC 匹配,完全本地/离线 | 否 | npm(包括 pnpm/yarn/bun lockfile)、PyPI、Cargo、Go、RubyGems、Composer、NuGet、Docker、Terraform/IaC、VS Code 扩展、GitHub Actions、GitHub 仓库 | 是 (Apache-2.0) | 否 |
| [OSV-Scanner](https://github.com/google/osv-scanner) | 依赖清单中的已知漏洞(查询 OSV.dev 数据库) | 仅通过 OSV MAL- 条目识别已知恶意版本;无行为或 IOC 分析 | 是(支持离线模式) | 11+ 生态系统,19+ lockfile 格式,容器镜像,SBOM 输入 | 是 (Apache-2.0) | 否 |
| [Socket](https://socket.dev) | 对整个包仓库进行主动的行为分析 | 是:在安全公告发布之前,针对整个仓库检测 70+ 种风险类型;引擎为闭源且在云端运行 | | npm、PyPI、Maven、Go、Cargo、RubyGems、NuGet 等;Actions 工作流 | 仅 CLI (MIT);检测引擎为专有 | 是(Firewall Free 除外) |
| [GuardDog](https://github.com/DataDog/guarddog) | 对单个包进行启发式 0-10 风险评分(YARA + 注册表元数据) | 是:仅使用启发式检测,无已知恶意软件或活动 IOC 数据库;支持沙箱扫描 | 否 | npm、PyPI、Go、RubyGems、GitHub Actions、VS Code 扩展 | 是 (Apache-2.0) | 否 |
| [OpenSSF Scorecard](https://github.com/ossf/scorecard) | 上游仓库的安全实践评分(分支保护、锁定、审查等) | 否:评估项目的安全卫生状况,从不分析已发布的包内容 | 仅针对被评估的仓库本身(OSV 检查) | GitHub 仓库,部分 GitLab | 是 (Apache-2.0) | 否(自运行 CLI 需 GitHub token) |
| npm audit | 为您的 npm 依赖树查找安全公告,内置于 npm | 在安全公告发布后识别已知恶意版本;无行为或 IOC 分析;`audit signatures` 用于验证来源 | 是(GitHub 公告数据库) | 仅 npm | 是(CLI;查询属于注册表端服务) | 否 |
客观的说明:Socket 面向整个仓库的行为检测比任何本地扫描器所能做到的都要深入,其代价是使用闭源引擎和云端分析。Scorecard 在其所在维度(上游安全卫生预测)上是行业标准,supply-chain-guard 并不能替代它。OSV-Scanner 和 npm audit 确实会标记已知的恶意包:它们之间的差距在于公告发布的延迟,而不是能力的缺失。
### 搭配使用推荐
- **CI 组合拳**:运行 `osv-scanner --lockfile=package-lock.json` 检查已知的 CVE 和 MAL- 条目,然后运行 `supply-chain-guard scan .` 以检测已安装依赖树中的行为和活动 IOC 威胁。两个维度,一个任务,且均受退出代码控制。
- **零安装 npm 基线**:`npm audit --audit-level=high` 加上 `npx supply-chain-guard scan .` 即可涵盖公告已知的漏洞和未上报的恶意软件,而无需添加任何额外的依赖项。
- **安装前的可疑包审查**:在将其安装到您的计算机之前,先运行 `guarddog npm scan ` 获取独立的启发式评分,并通过 `supply-chain-guard npm ` 进行活动 IOC 和 install hook 分析。
## GitHub Action
```
name: Supply Chain Security
on: [push, pull_request]
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: homeofe/supply-chain-guard@v5
with:
fail-on: critical
comment-on-pr: true
```
### Action 输入参数
| 输入 | 描述 | 默认值 |
|-------|-------------|---------|
| `path` | 要扫描的路径 | `.` |
| `format` | 输出格式 (text/json/markdown/html/sarif/sbom) | `markdown` |
| `min-severity` | 报告的最低严重级别 | `low` |
| `exclude-rules` | 要排除的规则 ID,逗号分隔 | |
| `fail-on` | 在此严重级别或以上时使检查失败 | `critical` |
| `comment-on-pr` | 将发现结果作为 PR 评论发布 | `true` |
## 面向 AI 编程代理 (MCP)
supply-chain-guard 既是用于扫描代理生态系统的工具,也是为该生态系统服务的工具。
**扫描代理攻击面**(在每次 `scan` 中自动执行):
- MCP 服务器配置:`.mcp.json`、`.cursor/mcp.json`、`.vscode/mcp.json`、
`claude_desktop_config.json` - 恶意服务器包、C2 endpoint、
明文 HTTP 服务器、转发至远程服务器的机密、工具描述中的
提示词注入(MCP_ 规则)
- 代理技能和规则文件:`.claude/skills/**/SKILL.md`、`.claude/settings.json`
hooks、`.cursorrules`、`.github/copilot-instructions.md`、`AGENTS.md`、`CLAUDE.md` -
注入的控制 token、不可见的 Unicode 指令通道、下载执行和
凭据窃取指令、危险的 hook 命令(SKILL_/AGENT_ 规则)
**内置 MCP 服务器** - 让您的 AI 代理在安装包之前对其进行审查:
```
npm install -g supply-chain-guard
claude mcp add supply-chain-guard supply-chain-guard mcp
```
此形式适用于所有 shell(bash、zsh、PowerShell、cmd),并避免了首次
连接时的 npx 冷启动超时。在 bash/zsh 上,您可以改用单行命令
`claude mcp add supply-chain-guard -- npx -y supply-chain-guard mcp`;
请注意,PowerShell 会吞掉单独的 `--`,因此在 Windows 上
推荐使用上述全局安装的形式。
它通过 stdio 暴露了三个工具:`ioc_lookup`(针对 npm/PyPI/RubyGems/Composer/NuGet 的
离线 IOC 和已知恶意版本检查)、`scan_directory` 和 `scan_npm_package`。
适用于 Claude Code、Claude Desktop 和 Cursor 的客户端配置代码片段请见:[docs/mcp.md](docs/mcp.md)。
## 实时威胁订阅源
内置的 IOC 订阅源随每次发布一同提供,并且相同的数据会在每次
推送到 main 分支时作为 [feed.json](feed.json) 发布——因此防护能在
活动被收录的当天即刻生效,而无需等待下一次发布:
```
supply-chain-guard feed stats # entry counts by type and severity
supply-chain-guard feed refresh # pull the latest published feed into the local cache
```
在接下来的 24 小时内,刷新后的订阅源会自动合并到每次扫描中。
## 安装守卫
在包管理器运行其生命周期脚本之前拦截已知的恶意包——
这是唯一一个完整黑名单可在 git 历史记录中审查的安装拦截器,
完全离线,无需账号:
```
supply-chain-guard guard npm install lodash # clean: npm runs normally
supply-chain-guard guard pnpm add axios@1.14.1 # known-bad: blocked, exit 2
```
支持 npm、pnpm、yarn 和 bun。守卫标志应放在管理器名称之前:
`--dry-run` 用于检查命令而不实际调用管理器,`--force`
则无视发现的问题继续执行(并伴有明显的警告)。管理器名称
之后的所有内容均原样传递给管理器。
所有检查均针对内置的 IOC 订阅源(如有 `feed refresh`
缓存则包含在内)、已知恶意版本黑名单和拼写错误
启发式检测进行离线执行——无需网络调用,无遥测。
限制:由于无法在离线状态下解析版本范围和标签
(`^1.2.3`、`latest`),因此版本锁定的 IOC 仅在精确匹配时触发。仅包含名称的 IOC
(整个恶意包)则在任何版本下都会触发。请在安装后
使用 `scan` 获取针对整棵依赖树、行为级别的全面覆盖。
## 添加自定义模式
编辑 `src/patterns.ts` 以添加新的检测规则:
```
{
name: "my-custom-pattern",
pattern: "regex-pattern-here",
description: "What this detects",
severity: "high",
rule: "MY_CUSTOM_RULE",
}
```
## 架构
```
scan() -> collectFiles() -> per-file analysis
-> Pattern matching (170+ rules across 12 categories)
-> Entropy analysis (Shannon entropy for encoded payloads)
-> IOC blocklist check (known C2 domains, IPs, hashes)
-> Install hook deep analysis (secret harvesting, download-exec)
-> Dependency risk analysis (Levenshtein typosquatting)
-> Sub-scanners (lockfile, GitHub Actions, Docker, Cargo, Go, IaC)
-> SLSA verifier (provenance level 0-3, sigstore/cosign, attestations)
-> SBOM generator (reads package-lock.json → real CycloneDX 1.6 components)
-> GitHub trust signal analysis (account age, stars, releases)
-> Correlation engine (links findings into incidents)
-> Trust breakdown (4-dimension scoring)
-> Report generation (text/json/html/markdown/sarif/sbom)
```
## 贡献指南
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 获取指南。最有影响力的贡献是为新出现的威胁添加新的检测模式。
## 更新日志
完整的发布历史请见 [CHANGELOG.md](CHANGELOG.md)。
## 许可证
[Apache-2.0](LICENSE) - 版权所有 2026 Elvatis - Emre Kohler
标签:GraphQL安全矩阵, MITM代理, SBOM, TypeScript, WebSocket, 依赖分析, 安全扫描器, 安全插件, 文档安全, 硬件无关, 自动化攻击, 自定义DNS解析器, 请求拦截, 配置审计