bladeski/scan-compromised
GitHub: bladeski/scan-compromised
一款专注于检测 npm 项目中已知受损依赖的轻量 CLI 工具,防范供应链攻击。
Stars: 0 | Forks: 0
# 扫描 compromised
🔍 用于检测项目中已知受损 npm 包的 CLI 工具。
**无需第三方依赖:**该工具完全自包含,不依赖任何外部 npm 包或库。您可以在敏感或受限环境中放心使用。
此扫描器会检查您的 `package.json`、`package-lock.json`、`yarn.lock` 和 `pnpm-lock.yaml` 文件,识别在最近供应链攻击(包括 2025 年 9 月的 Shai-Hulud 事件)中受损的包。
它会标记:
- ❌ 已知恶意版本(扫描失败)
- ⚠️ 已受损包的安全版本(发出警告但不失败)
## 🚀 安装
### 推荐:使用 `npx` 直接运行(无需安装)
```
npx scan-compromised
```
或全局安装
```
npm install -g scan-compromised
scan-compromised
```
## 📦 用法
### 基本扫描
```
scan-compromised
```
### 严格拦截:阻止安装存在已知安全建议的依赖
将此内容添加到项目 `package.json` 的 `preinstall` 脚本中:
```
"scripts": {
"preinstall": "npx scan-compromised"
}
```
这将防止安装任何带有已知安全建议的依赖项,作为供应链中的严格拦截。
### JSON 输出(用于 CI 集成)
```
scan-compromised --json
```
## 📁 威胁列表与数据更新
该工具使用位于 CLI 包根目录的本地 `threats.json` 文件。该文件包含已知受损包及其恶意版本的列表。
**数据源:**
- 已知漏洞列表每天自动从 GitHub Security Advisories 拉取。
- 这确保了扫描始终能及时获取 npm 生态系统中最新报告的威胁。
示例 `threats.json`
```
{
"@ctrl/tinycolor": ["4.1.1", "4.1.2"],
"ngx-toastr": ["19.0.1", "19.0.2"]
}
```
您可以在发现新威胁时手动更新此文件。可信来源包括:
StepSecurity
GitHub Security Advisories
Snyk Vulnerability Database
## 🧪 GitHub Actions 集成
您可以在每次推送或拉取请求时自动运行此工具。
`.github/workflows/scan.yml`
```
name: Scan for Compromised Packages
on:
push:
branches: [main]
pull_request:
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install scanner
run: npm install scan-compromised
- name: Run scan
run: npx scan-compromised
```
## 🛡️ 许可证
MIT © Jonathan Blades
标签:CI 集成, GitHub Security Advisories, JSON 输出, MITM代理, npm CLI 工具, Npx 运行, package.json, package-lock.json, pnpm-lock.yaml, Shai-Hulud 2025, Snyk, StepSecurity, yarn.lock, 全局安装, 威胁情报, 安全版本警告, 已知漏洞, 开发者工具, 恶意版本检测, 数据可视化, 文档结构分析, 无第三方依赖, 本地威胁列表, 硬性阻断, 自包含工具, 自定义脚本, 预安装脚本