Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
supply-chain-guard — 检测、评估并响应 npm/yarn 与 Python(pip/poetry/uv)生态中的供应链攻击。Claude Code 技能 + 独立脚本。在 axios RAT(2026-03-31)和 Starlette BadHost CVE-2026-48710(2026-05-22)事件期间构建。 | Kitploit
工具/GitHubGitHub/eris-ths/supply-chain-guard
危害指标 (IOC) 管理漏洞扫描器脚本与自动化恶意软件分析DevSecOps威胁情报供应链安全学习与教育事件响应
GitHuberis-ths/supply-chain-guard

supply-chain-guard

检测、评估并响应 npm/yarn 与 Python(pip/poetry/uv)生态中的供应链攻击。Claude Code 技能 + 独立脚本。在 axios RAT(2026-03-31)和 Starlette BadHost CVE-2026-48710(2026-05-22)事件期间构建。

31个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库

Supply Chain Guard (SCG)

一个用于 npm/yarn 和 Python(pip/poetry/uv)供应链攻击的应急响应工具包 —— 免费、本地化、零依赖。

SCG 不是一个在覆盖范围上与商业工具竞争的扫描引擎。它是一个 Claude Code 技能和独立 shell 工具包,擅长三件事:(1) 当特定事件发生时,提供快速、可重复的第一响应("我的机器现在是否受影响?"),(2) 将现有 OSS 扫描器(npm audit、osv-scanner、pip-audit)编排为一次结构化扫描,(3) 记录来之不易的设计卫生经验教训 —— 尤其是针对 AI 开发环境 —— 这是通用扫描器无法覆盖的。

它是在真实事件中构建并经受锤炼的,包括:

  • [email protected] RAT 事件(2026-03-31) —— npm 维护者账户被接管(UNC1069/DPRK-APT),注入了幽灵依赖 RAT
  • Starlette BadHost(CVE-2026-48710,2026-05-22) —— Python HTTP 框架 Host 头路径注入 → SSRF/RCE,影响 FastAPI、vLLM、LiteLLM 以及更广泛的 AI 智能体生态系统

v4 新增功能(2026-05-27)

  • Python 供应链扫描 —— scripts/project-scan-py.sh,支持 pip-audit / osv-scanner / CVE 标记版本检测
  • CVE 标记版本层(L3-CVE) —— 通过严格的 semver 规范评估跟踪合法包的已知易受攻击版本(开箱即用地包含 BadHost CVE-2026-48710)
  • 设计卫生指南 —— stdio-first MCP 传输、版本固定纪律、GCP 默认计算 SA 编辑器加固(请参阅 SKILL.md §D.7 DesignHygiene)
  • Guild-CLI Devil lense 集成 —— 从 guild-cli 工作流中将 SCG 作为 Devil lense 调用(请参阅下文"Guild-CLI Devil 集成")

目录

  • 为何存在
  • SCG 与现有工具的区别
  • SCG 是什么(以及不是什么)
  • 架构
  • 快速开始
  • 扫描模式
  • 威胁情报
  • Devil Gate 框架
  • 独立脚本
  • CI/CD 集成
  • 响应行动手册
  • IOC 参考
  • 免责声明
  • 局限性
  • 完整性验证
  • 许可证

为何存在

2026 年 3 月 31 日,广泛使用的 axios npm 包(v1.14.1 和 v0.30.4)因维护者账户被接管而遭到入侵,攻击归因于 UNC1069/DPRK-APT(据 Google Threat Intelligence Group 报道)。该攻击注入了一个幽灵依赖([email protected]),通过 postinstall 脚本部署了一个跨平台 RAT,并伪装成合法的系统进程。

Supply Chain Guard(SCG) 是在事件期间构建的,旨在提供:

  1. 即时检测 —— 我的机器或项目现在是否受影响?
  2. 结构化评估 —— 严重程度如何?爆炸半径有多大?
  3. 引导式响应 —— 带安全确认的分步修复
  4. 持续防御 —— 一个 8 门验证框架,以防再次发生

SCG 与现有工具的区别

SCG 不是现有安全工具的替代品。它将多个检测层与结构化验证框架和引导式修复相结合 —— 专为活跃事件期间使用或作为现有工具之外的定期检查而设计。

何时使用 SCG:

  • 供应链事件刚刚发生,你需要立即检查你的机器和项目
  • 你想要一个结构化的、可重复的流程来验证入侵已被完全解决
  • 你需要一个无需 SaaS 依赖即可在本地运行的轻量级检查

何时使用其他工具:

  • 你需要持续的实时监控 → Snyk、Socket.dev
  • 你需要许可证合规扫描 → Snyk、FOSSA
  • 你需要超出 npm/yarn 的覆盖范围 → osv-scanner(支持 pip、cargo、go 等)

SCG 是什么(以及不是什么)

我们宁愿诚实地说明边界,也不愿过度推销。SCG 是三件事:

  1. 一份以代码形式呈现的应急响应行动手册。 当指定事件发生时(axios RAT、Shai-Hulud、新的 CVE),SCG 将"我是否受影响,如果是该怎么办?"转化为可执行的检查清单 —— 8 个验证门、一个严重性矩阵以及一个修复脚本,其中每一个破坏性操作都需要明确的 [y/N] 确认。这是它的主要价值:商业监控工具不适合提供的快速、结构化的第一响应。

  2. 现有 OSS 扫描器的编排器。 L1/L2 层封装了 npm audit / pip-audit / osv-scanner。大部分原始检测能力是借用的;SCG 的贡献在于将它们捆绑为一次扫描,添加注册表工具不会做的文件系统/IOC 检查,并让输出可读且可操作。

  3. 真实设计卫生经验教训的文档(SKILL.md §D.7)—— 我们实际遇到或调查过的事情:MCP 传输选择、GCP 默认 SA 加固、安装时执行向量,以及针对 AI 开发工具链的威胁(Shai-Hulud 读取 .claude/settings.json、SANDWORM_MODE 投毒 MCP 配置)。这一细分领域 —— AI 辅助开发的供应链卫生 —— 是 SCG 真正差异化所在。

SCG 刻意不是什么

  • 不是覆盖范围的竞争者。 威胁数据库(SKILL.md D.2、L3 静态列表)是手工维护的 —— 它收录的是我们读到的相关事件,而不是商业实时源跟踪的数万个恶意包。手工策划的列表无法跟上真实的新威胁产生速度,我们也不假装它可以。
  • 不是行为分析引擎。 SCG 匹配已知模式。混淆的载荷和没有公开公告的真正零日漏洞,按设计就不在范围内。
  • 不是持续监控。 它是在事件期间或作为定期扫描运行的时点检查 —— 不是监视依赖图的服务。

SCG 的未来方向

由于手工策划的数据库无法在覆盖范围上获胜,我们有意投资于 SCG 难以被替代的领域,而不是它永远会输的领域:

  • 更深入的应急响应行动手册(#1)—— 更好的第一响应体验、更多的事件模板。
  • AI 开发环境卫生(#3)—— 针对 Claude Code / Cursor / MCP 服务器及类似工具链的威胁检测和指导,商业供应链扫描器大多不解决这些问题。

静态威胁数据库(#2)将在重大事件发生时持续更新,但它明确不是我们试图竞争的领域。


架构

SCG 遵循**领域驱动设计(DDD)**架构,包含三个层:``` +-----------------------------------------------------+ | Domain Layer | | Threat models, known threats DB, severity matrix, | | Devil Gate definitions | +-----------------------------------------------------+ | Application Layer | | Use cases, scan pipeline, response protocols, | | Devil execution loop | +-----------------------------------------------------+ | Infrastructure Layer | | Scanner scripts (npm audit, OSV, static list, | | IOC filesystem, network, lockfile integrity) | +-----------------------------------------------------+

root@kitploit:~
### 扫描管道

相同的 5 层管道适用于两个生态系统,每一层都有针对特定生态系统的扫描器:```
L1 ──→ L2 ──→ L3 ──→ IOC ──→ LF ──→ assess(SeverityMatrix) ──→ VERDICT

两条流水线都会汇入同一个 SeverityMatrix 和 Devil Gate Framework。


快速开始

作为 Claude Code 技能

将 SKILL.md 复制到你的 Claude Code 技能目录:```bash

Global (all projects)

cp SKILL.md ~/.claude/skills/supply-chain-guard.md

Or project-specific

mkdir -p .claude/skills cp SKILL.md .claude/skills/supply-chain-guard.md

root@kitploit:~
然后在 Claude Code 中调用:```
> /supply-chain-guard
> "Check this project for supply chain issues"
> "Is my machine affected by the axios compromise?"

作为独立脚本```bash

Environment-wide scan (IOC + all projects) [READ-ONLY]

./scripts/env-scan.sh

npm/yarn project scan (requires package.json in cwd) [READ-ONLY]

./scripts/project-scan.sh

Python project scan (requires pyproject.toml / requirements*.txt / poetry.lock / uv.lock in cwd) [READ-ONLY, added in v4]

./scripts/project-scan-py.sh

IOC-only scan (filesystem + network artifacts) [READ-ONLY]

./scripts/ioc-scan.sh

Remediation (interactive, every action requires confirmation)

./scripts/respond.sh --critical # Full RAT cleanup (npm + Python) ./scripts/respond.sh --high axios 1.14.0 # Pin npm package to safe version ./scripts/respond.sh --high urllib3 2.7.0 # Pin Python package (auto-detects pip/poetry/uv)

root@kitploit:~
> **Python 修复方案在设计上偏向保守。** 对于 npm,`--high` 会自动应用
> override。对 Python 则是 *引导式*:它会检测你的包管理器
> (pip/poetry/uv),打印出精确的固定(pin)命令,并且只执行安全步骤 —
> 会显示修改锁文件和重建 venv 的命令供你运行。这样可避免
> 误报导致在碎片化的 Python 打包生态系统中触发连带性强制重装。

对于包含多语言(npm + Python)的仓库,请分别在相关子目录中依次运行两个项目扫描器。

> **安全设计:** 所有扫描脚本均为严格只读 — 它们绝不修改、删除或安装任何内容。修复脚本 (`respond.sh`) 是唯一执行破坏性操作的脚本,并且**每个操作都需要明确的 `[y/N]` 确认**,默认值为 NO。

---

## 扫描模式

### 环境扫描 (`env_scan`)

扫描整个开发机器以查找失陷指标。

| 检查 | 描述 |
|-------|-------------|
| **IOC:文件系统** | RAT 二进制文件、持久化机制、暂存文件 |
| **IOC:网络** | 活跃的 C2 连接(IP + 域名) |
| **IOC:进程** | 正在运行的恶意进程 |
| **跨项目** | 扫描所有 `package-lock.json` 文件以查找已受侵害的版本 |
| **恶意包** | 任何锁文件中的已知恶意包名 |

**触发词:** "this PC"、"environment check"、"machine-wide"

### 项目扫描 — npm/yarn (`project_scan`)

对单个 npm/yarn 项目进行深度扫描。在包含 `package.json` 的目录中运行。

| 层级 | 扫描器 | 描述 |
|-------|---------|-------------|
| **L1** | `npm audit` | 通过 npm registry 发现的已知漏洞 |
| **L2** | `osv-scanner` / OSV.dev API | Google 的开源漏洞数据库 |
| **L3** | 静态列表 | 硬编码的已知恶意包检查 |
| **IOC** | 文件系统 + 网络 | RAT 工件检测 |
| **LF** | 锁文件完整性 | `npm ci --dry-run` + 完整性哈希计数 |

**触发词:** "this project"、"npm audit"、或当前工作目录中存在 `package.json`

### 项目扫描 — Python (`project_scan_py`,v4 新增)

对单个 Python 项目进行深度扫描。在包含 `pyproject.toml`、`requirements*.txt`、`poetry.lock` 或 `uv.lock` 的目录中运行。

| 层级 | 扫描器 | 描述 |
|-------|---------|-------------|
| **L1** | `pip-audit` | 通过 PyPI 公告数据库发现的已知漏洞(可选 — 若未安装则跳过;建议执行 `pip install pip-audit`) |
| **L2** | `osv-scanner` | 针对 `uv.lock` / `poetry.lock` / `requirements*.txt` 使用 Google 的开源漏洞数据库(可选 — 若未安装则跳过) |
| **L3-MAL** | 静态恶意列表 (`_L3_LIST`) | 已知的被劫持 / 域名仿冒包名。匹配 PEP 621 列表、Poetry 内联声明以及 requirements 风格声明(参见 [PR #4](https://github.com/eris-ths/supply-chain-guard/pull/4))。命中即失败 |
| **L3-CVE** | 静态 CVE 标记版本列表 (`_L3_CVE_LIST`) | 已知合法包的易受攻击版本(例如 [BadHost CVE-2026-48710](https://cryptobriefing.com/starlette-badhost-vulnerability-ai-agents/) 对应的 `starlette<1.0.1`)。通过 Python 的 `packaging` 库进行严格的 semver 规范评估。确认匹配即失败。若包已声明但不存在锁文件则发出警告(无法评估版本) |
| **IOC** | 文件系统 + 进程 | Python 风格的工件检查(可疑脚本、可疑进程) |
| **LF** | 锁文件完整性 | 验证 `uv.lock` / `poetry.lock` / `requirements*.txt` 能否干净解析并包含固定版本 |

**触发词:** "this project" 且存在 Python 文件,或当前工作目录中有 `pyproject.toml` / `requirements*.txt` / `poetry.lock` / `uv.lock` 中的任意一个

> **依赖项说明:** 当相应的 CLI 不存在时,L1 (`pip-audit`) 和 L2 (`osv-scanner`) 会优雅地跳过并给出提示。L3 是始终启用的层级,不需要任何外部工具,但要准确评估 L3-CVE,需要执行 `pip install packaging`。

---

## 威胁情报

### 已知威胁数据库

| ID | 日期 | 包 | 威胁行为者 | 攻击向量 |
|----|------|---------|-------------|--------|
| **T001** | 2026-03-31 | `[email protected]`, `[email protected]` | UNC1069/DPRK-APT | 维护者账户失陷 → 幽灵依赖 → RAT |
| **T002** | 2018-11 | `[email protected]` | 未知 | 依赖注入 → 加密货币窃取 |
| **T003** | 持续中 | `crossenv`, `loadsh`, `crypto-js-esm` | 多个 | 域名仿冒 → 安装后数据外泄 |

### T001 攻击链 (axios RAT)```
Credential theft → npm publish (bypass CI) → Inject phantom dep (plain-crypto-js)
    → postinstall exec → RAT drop → C2 beacon (sfrclak.com:8000) → Persist

安全版本

包安全已受影响
axios(最新版)1.14.0(精确)或 >=1.14.21.14.1
axios(旧版)0.30.3(精确)0.30.4

安全公告 ID

  • GHSA-fw8c-xr5c-95f9
  • MAL-2026-2306

恶魔之门框架

SCG 使用一个 8 门验证框架,分为 4 个类别,以串行链与收敛循环方式执行。

门

链式执行```

S1: Dependency (G1+G2) → S2: Runtime (G3+G4) → S3: Integrity (G5+G6) → S4: Environment (G7+G8) → Any fail? → Fix → Re-run entire chain → All pass? → "No concerns" → Done → 3 rounds without convergence? → Escalate to user

root@kitploit:~
### 严重性矩阵

| 级别 | 条件 | 操作 |
|-------|-----------|--------|
| **CRITICAL** | 发现 RAT 工件或安装了恶意包 | 网络隔离 → 终止进程 → 移除持久化 → 重新安装 |
| **HIGH** | 正在使用被入侵的版本 | 固定安全版本 → 覆盖 → `npm ci` → 验证 |
| **MEDIUM** | 可疑的 postinstall 脚本 | 人工审查 → 加入白名单或移除 |
| **LOW** | 锁文件漂移 | `npm ci` 重新同步 |
| **CLEAR** | 所有检查通过 | 无需操作 |

> **安全性:** CRITICAL/HIGH 响应涉及破坏性操作。SCG 始终先呈现发现的结果,并在执行修复前要求用户明确确认。

---

## 独立脚本

### `scripts/env-scan.sh`

完整的环境扫描。检查 IOC 工件,扫描 `$HOME`(可配置)下的所有锁文件,并报告受损包。```bash
./scripts/env-scan.sh [scan_root_dir]
# Default: $HOME

scripts/project-scan.sh

项目级扫描。从包含 package.json 的目录运行。```bash cd my-project /path/to/scripts/project-scan.sh

root@kitploit:~
### `scripts/ioc-scan.sh`

仅IOC扫描。检查文件系统痕迹、运行进程和网络连接,与已知的C2指标进行比对。跨平台(macOS/Linux/Windows,通过PowerShell)。```bash
./scripts/ioc-scan.sh

scripts/respond.sh

交互式修复。每个破坏性操作都需要 [y/N] 确认(默认:NO)。```bash

CRITICAL: Full RAT cleanup (kill → remove → reinstall)

./scripts/respond.sh --critical

HIGH: Pin compromised package to safe version

./scripts/respond.sh --high axios 1.14.0 # npm ./scripts/respond.sh --high event-stream 3.3.5 # npm ./scripts/respond.sh --high urllib3 2.7.0 # python (pip/poetry/uv auto-detected)

root@kitploit:~
Steps in `--critical` mode:
1. Network isolate (block C2 domain via `/etc/hosts`)
2. Kill RAT processes
3. Remove persistence (LaunchAgents / crontab / scheduled tasks)
4. Delete `node_modules` and lockfile, clear npm cache
   - **4b (Python):** purge pip cache (safe, auto); venv-rebuild shown as manual steps
5. Reinstall dependencies
6. Prompt for verification scan (`project-scan.sh` and/or `project-scan-py.sh`)

Each step checks whether action is actually needed (e.g., skips "kill" if no RAT process is running) and shows exactly what will be executed before asking for confirmation.

For **HIGH** mode, npm applies the override automatically; Python is guided (detect manager → print pin command → apply only the safe step). See the Python remediation note in [Quick Start](#quick-start).

---

## CI/CD Integration

### GitHub Actions```yaml
name: Supply Chain Guard
on:
  pull_request:
    paths:
      - 'package.json'
      - 'package-lock.json'
      - 'yarn.lock'

jobs:
  scg-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 dependencies (hardened)
        run: npm ci --ignore-scripts

      - name: Run SCG project scan
        run: |
          chmod +x ./scripts/project-scan.sh
          ./scripts/project-scan.sh

      - name: Run IOC scan
        run: |
          chmod +x ./scripts/ioc-scan.sh
          ./scripts/ioc-scan.sh

加固建议```bash

Always use in CI:

npm ci --ignore-scripts # Block postinstall execution

npm ci already enforces lockfile integrity by design (errors on mismatch)

Yarn equivalent:

yarn install --frozen-lockfile --ignore-scripts

root@kitploit:~
> **按 SHA 固定 Actions,而不是标签。** 上面的示例为了可读性使用了 `actions/checkout@v4`,但标签可以被移动。在生产环境中,请固定到完整的提交 SHA,以防止 GitHub Actions 供应链攻击:
> ```yaml
> - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683  # v4.2.2
> - uses: actions/setup-node@39370e3970a6d050c480ffad4ff0ed4d3fdee5af  # v4.1.0
> ```

---

## 响应手册

### 如果严重(检测到 RAT)

> **不要惊慌。** 按顺序执行以下步骤。每个步骤都需要你的明确确认。

1. **网络隔离** — 通过 `/etc/hosts` 阻止 C2 域名
2. **终止进程** — 终止 RAT 进程(`com.apple.act.mond`、`ld.py`、`wt.exe`)
3. **清除持久化** — 删除 LaunchAgents、crontabs、计划任务
4. **清理 npm** — 删除 `node_modules` 和 `package-lock.json`,清除 npm 缓存
5. **重新安装** — 全新 `npm install && npm ci`
6. **重新扫描** — 重新运行完整管道,预期结果为 CLEAR

### 如果高危(已安装被入侵的版本)

1. **固定安全版本** 使用 respond.sh:   ```bash
   ./scripts/respond.sh --high axios 1.14.0

这会向 package.json 添加 overrides(npm)或 resolutions(yarn),重新安装,并提示进行验证。

  1. 或手动在 package.json 中: ```json { "overrides": { "axios": "1.14.0" } }
    root@kitploit:~

Yarn: { "resolutions": { "axios": "1.14.0" } }

  1. 重新安装: npm ci
  2. 验证: 重新运行扫描

IOC 参考

文件系统痕迹

持久化机制

平台

网络指标

类型值
C2 域名sfrclak.com
C2 IP142.11.206.73
C2 端口8000

伪装技术

平台伪装为
macOSApple 系统进程(com.apple.act.mond)
WindowsWindows Terminal(ProgramData 中的 wt.exe)

输出格式```

SCG ────────────────────────────────── [L1:audit] CLEAR|!!sev [L2:osv] CLEAR|!!vuln-ids [L3:static] CLEAR|!!pkg [IOC:fs] CLEAR|!!C:artifact [IOC:net] CLEAR|!!C:c2 [LF:integ] CLEAR|!!drift ─── Devil Gate(8) ──────────────────── G1:direct_dep G2:transitive G3:rat_fs G4:postinstall G5:lockfile G6:provenance G7:network G8:cicd ─── Devil Chain(R.N) ───────────────── S1:dependency → S2:runtime → S3:integrity → S4:environment ─── Loop ───────────────────────────── R.N → converge|continue [VERDICT] CLEAR|HIGH|CRITICAL ───────────────────────────────────────

root@kitploit:~
---

## References

| Source | Description |
|--------|-------------|
| [Zenn (JP)](https://zenn.dev/gunta/articles/0152eadf05d173) | 日文早期报告 |
| [Elastic Security Labs](https://elastic.co/security-labs/axios-one-rat-to-rule-them-all) | 技术分析(RAT 反汇编、C2 协议、时间线) |
| [SANS](https://sans.org/blog/axios-npm-supply-chain-compromise-malicious-packages-remote-access-trojan) | 企业事件响应流程 |
| [Huntress](https://huntress.com/blog/supply-chain-compromise-axios-npm-package) | YARA 签名 |
| [Elastic Detections](https://elastic.co/security-labs/axios-supply-chain-compromise-detections) | SIEM 检测规则(YARA/osquery/KQL) |
| [Semgrep](https://semgrep.dev/blog/2026/axios-supply-chain-incident-indicators-of-compromise-and-how-to-contain-the-threat/) | 静态分析规则、遏制指南 |
| [SOCRadar](https://socradar.io/blog/axios-npm-supply-chain-attack-2026-ciso-guide/) | CISO 指南及 IOC 时间线 |
| [Wiz](https://wiz.io/blog/axios-npm-compromised-in-supply-chain-attack) | 云影响分析、容器扫描 |
| [NVD CVE-2026-48710](https://nvd.nist.gov/vuln/detail/CVE-2026-48710) | **主要** — NVD 权威条目(发布于 2026-05-26,CVSS 3.1 基础分 6.5 中危,AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N) |
| [GHSA-86qp-5c8j-p5mr](https://github.com/Kludex/starlette/security/advisories/GHSA-86qp-5c8j-p5mr) | **主要** — 针对 `Kludex/starlette` 的 GitHub 安全公告(发布于 2026-05-21):"缺少 Host 头验证会污染 request.url.path,从而绕过基于路径的安全检查" |
| [Starlette v1.0.1 发布说明](https://github.com/Kludex/starlette/releases/tag/1.0.1) | **主要** — 修复版本(发布于 2026-05-21)。锁定 `starlette>=1.0.1`(以及 `fastapi>=0.119` 以进行传递依赖解析) |
| [Starlette BadHost 报道(KuCoin)](https://kucoin.com/news/flash/starlette-vulnerability-exposes-millions-of-ai-agents-to-hackers) | 次要 — Python 生态系统影响,AI 智能体视角 |
| [BadHost AI 智能体分析(CryptoBriefing)](https://cryptobriefing.com/starlette-badhost-vulnerability-ai-agents/) | 次要 — FastAPI / vLLM / LiteLLM 下游影响视角 |

---

## Guild-CLI Devil 集成

如果你使用 [guild-cli](https://github.com/eris-ths/guild-cli)(或任何暴露 Devil lense 工作流的项目),SCG 可以在审查过程中作为安全透镜之一被调用。

### 推荐的调用模式```bash
# Inside a guild-cli review session, in the project root:
~/path/to/supply-chain-guard/scripts/project-scan.sh       # for npm/yarn projects
~/path/to/supply-chain-guard/scripts/project-scan-py.sh    # for Python projects

# Capture the scan output as evidence for a judgment:
SCG_OUTPUT=$(~/path/to/supply-chain-guard/scripts/project-scan.sh 2>&1 || true)

# (a) Record it as a new judgment (fast-track — no prior review needed):
gate fast-track --from "$USER" \
  --action "SCG supply-chain scan (Devil lense)" \
  --reason "$SCG_OUTPUT"

# (b) Or attach it as the Devil lense on an existing review request <id>:
gate review <id> --lense devil --verdict concern --note "$SCG_OUTPUT"

Flag 说明(已对照 guild-cli 验证):gate review 需要一个 已有的 <id>、--lense(guild-cli 的拼写就是 "lense")和 --verdict (ok / concern / reject)。它没有 --area 标志。若要记录一条 没有先前审查对象的新发现,请如 (a) 中所示使用 gate fast-track。

为什么将 SCG 与 Devil 搭配

Devil's Advocate("壊しにいく")与 SCG 秉持相同的理念:假设最坏情况,系统化扫描,然后收敛。SCG 为 Devil 审查提供了供应链维度——项目的依赖可能在您背后做些什么——与其他视角(安全 / 正确性 / 架构 / 用户 / 运维)并列。

Devil 搭配的局限性

  • SCG 以只读方式运行;Devil 视角不会推送修复。需要修复时,请单独使用 respond.sh(需用户明确确认)
  • 在大型仓库中,SCG 输出可能会超出 Devil 的上下文预算;如有必要,可通过 tail -50 截取
  • 对于多语言仓库,请同时运行 project-scan.sh 和 project-scan-py.sh,并合并结果

免责声明

SCG 是一款检测工具,而非安全保证。坦率地说明它能做什么、不能做什么,本就是设计的一部分。

本软件按"原样"提供,不附带任何形式的担保。 使用 Supply Chain Guard 即表示您承认并同意以下内容:

  • 不能替代专业安全防护。 SCG 是辅助性检测工具,而非全面的安全解决方案。它不能替代专业的应急响应、端点检测与响应(EDR)软件或安全审计。
  • 不保证能够检测。 CLEAR 结论表示在工具的已知威胁模式中未发现匹配项。这并不代表您的系统或项目未被攻陷。 新型、未知或经过变异的攻击可能无法被检测到。
  • 不保证能够修复。 所提供的修复步骤(respond.sh)针对的是特定威胁的已知指标。它们可能无法完全清除复杂入侵的所有痕迹。如果您怀疑正在遭受入侵,请聘请专业的应急响应团队。
  • 风险自负。 对于因使用或无法使用本工具而产生的任何损害、数据丢失或安全事件,作者概不负责。这包括但不限于:漏报(未检测出)、误报(错误检测)或运行修复脚本带来的意外后果。
  • 不构成法律或合规建议。 本工具不满足安全扫描方面的监管、合规或法律要求。如有合规需求,请咨询相关专业人士。

局限性

了解 SCG 不能做什么,与了解它能做什么同样重要。

检测边界

SCG 检查的内容SCG 不检查的内容

威胁数据库的时效性

已知威胁数据库(SKILL.md 中的 D.2)采用手动维护。它不连接任何实时威胁情报源。从新的供应链事件被发现到该数据库更新,存在固有的延迟。

  • 最后更新时间: 2026-05-27(v4:支持 Python,新增 BadHost CVE-2026-48710)
  • 覆盖范围: 3 个 npm 威胁家族(T001-T003)+ 4 条 Python 劫持/拼写仿冒条目 + 1 条 Python CVE 标记版本条目(BadHost)
  • Python 覆盖范围(v4): 主要基于锁文件(lockfile)扫描(uv.lock / poetry.lock / requirements.txt)。CVE 标记版本层是尽力而为的——它只会标记与 _L3_CVE_LIST 条目匹配、并通过严格 semver 规范评估的软件包,并且需要安装 packaging 才能进行准确的版本匹配

请始终与实时来源交叉验证,例如 npm 安全通告、OSV.dev 以及 参考资料 一节中列出的厂商安全博客。

误报风险

以下 IOC 路径在极少数情况下可能与合法软件产生冲突:

IOC 路径潜在的误报
/tmp/.npm-cache/非标准配置下合法的 npm 缓存
/tmp/ld.py同名且无关的 Python 脚本
进程名 wt.exe位于 ProgramData 中的合法 Windows Terminal

在运行修复之前,务必先核实 IOC 发现。 ioc-scan.sh 脚本仅报告发现供人工审查——它不会采取任何操作。respond.sh 脚本要求对每个破坏性操作进行明确确认(默认:否),正是出于这种风险考虑。

网络扫描的局限性

  • 基于 lsof 的网络检查只能检测当前活跃的连接。间歇性连接的 C2 信标在扫描时可能并不活跃。
  • DNS 缓存检查是尽力而为的,并且取决于操作系统。已清空的缓存不会显示历史连接。
  • 加密或隧道化的 C2 流量无法仅通过端口/IP 匹配来检测。

适用范围

  • 仅覆盖 npm/yarn 和 Python(pip/poetry/uv)。 不涵盖 cargo、go modules 或其他软件包生态系统。
  • 仅限已知威胁。 这是一款模式匹配工具,而非行为分析引擎。
  • 时点扫描。 结果仅反映执行时刻的状态。持续监控需要重复执行或与 CI/CD 集成。

完整性验证

请验证您的 SCG 副本未被篡改。请将这些 SHA-256 校验和与您的本地文件进行比对:

```

67ac6216cbe18fdf7050fd267bce4157c016e5c60cd4f84f63b8cf71e80ae3b9 scripts/env-scan.sh da01f8362563b55b1553f923a748f07d24f24522366e0545e6ba0c09801f8e54 scripts/project-scan.sh 77e7ebba6d44ea020e511a49bc2cbc974d01495de40d35e8dfb7fcc93008954b scripts/project-scan-py.sh 82aaa4ed898ce354addc064ccf84cca9a498ef4e90fe58613e1110146577609f scripts/ioc-scan.sh 72ed333838b5584c3b1faf889edc81b0e3195c27396c3b36c62aaebf5f952117 scripts/ioc-scan.ps1 0e6b30e57c959180e22e0ba16f860e9fdc7304045947995084703fb14381d12e scripts/respond.sh a44be79d909058c9d216e7cbc5cca736cf8816a492c8d35a6b90c74c042abf5b SKILL.md

root@kitploit:~
<!-- CHECKSUMS-END -->

要验证:```bash
shasum -a 256 scripts/*.sh scripts/*.ps1 SKILL.md

注意: 这些校验和对应于最新版本。如果你在本地修改过任何文件,校验和将会不同。当 SCG 更新时,此部分会随代码更改一同更新。


许可证

MIT


由 Eris 构建 — 因为你的依赖项不应成为他人的攻击面。

下载工具
工具功能SCG 的关系
npm audit检查注册表中已知漏洞SCG 将 npm audit 作为其 L1 层,然后在此基础上添加 IOC 文件系统/网络扫描、恶意包检测和结构化响应工作流
osv-scanner针对 Google OSV 数据库扫描锁文件SCG 将 OSV 作为其 L2 层。osv-scanner 不会检查文件系统上的 RAT 工件或活跃的 C2 连接
Snyk / Socket.dev商业 SaaS,提供实时监控、PR 检查、许可证扫描SCG 免费、本地优先、无需账户、不向第三方发送数据。专为即时应急响应而非持续监控而设计
手动 IR使用自定义脚本进行临时调查SCG 提供可重复的框架(8 个验证门、收敛循环、严重性矩阵),而不是每次事件各不相同的临时检查清单
层级npm/yarn (project-scan.sh)Python (project-scan-py.sh)
L1npm auditpip-audit
L2osv-scanner / OSV.dev APIosv-scanner
L3静态列表(恶意 + 仿冒)静态列表(恶意 / 仿冒 + CVE 标记的版本)
IOC文件系统 + 网络痕迹文件系统 + 进程痕迹(Python 风格)
LFnpm ci --dry-run + 完整性计数锁文件完整性(uv.lock / poetry.lock / requirements*.txt)
#门类别问题
G1直接依赖依赖投毒是否有任何直接依赖处于受影响版本?
G2传递依赖依赖投毒是否有任何传递(间接)依赖受到危害?
G3RAT 痕迹运行时危害文件系统上是否存在 RAT 痕迹?
G4安装后脚本运行时危害是否存在可疑的 postinstall 脚本?
G5锁文件完整性完整性锁文件是否被篡改?
G6来源验证完整性该包是否来自合法来源/维护者?
G7网络环境是否存在可疑的出站连接?
G8CI/CD 加固环境CI/CD 是否绕过 postinstall / 强制冻结锁文件?
平台路径类型
macOS/Library/Caches/com.apple.act.mondRAT 二进制文件
macOS~/Library/LaunchAgents/com.apple.act.mond.plist持久化
Windows%PROGRAMDATA%\wt.exeRAT 二进制文件(伪装成 Windows Terminal)
Windows%TEMP%\6202033.vbs投放器
Windows%TEMP%\6202033.ps1投放器
Linux/tmp/ld.pyRAT 脚本
Linux/tmp/.npm-cache/暂存目录
机制
标识符
macOSLaunchAgentcom.apple.act.mond
Windows计划任务WindowsTerminalUpdate
LinuxCrontab 条目引用 ld.py 或 .npm-cache
已知的受损软件包版本(硬编码数据库)
没有公开通告的零日供应链攻击
已知的恶意软件包名称尚未列入静态列表的拼写仿冒(typosquat)包
已知威胁的特定 IOC 文件路径被投放至非标准路径的任意恶意软件
特定的 C2 IP 地址和域名已轮换或变更的 C2 基础设施
直接依赖中的 postinstall 脚本隐藏在看似合法脚本中的混淆恶意代码