oopsalldev/npm-supply-chain-scanner
GitHub: oopsalldev/npm-supply-chain-scanner
多生态系统供应链攻击扫描器,检测项目依赖树中的已知恶意软件包、恶意文件及C2服务器连接等25种以上供应链威胁。
Stars: 1 | Forks: 0
# 供应链扫描器
开源、多生态系统的供应链攻击扫描器。检测整个依赖树中的已知恶意软件包、恶意文件、C2服务器连接等。
可作为 **CLI工具**、**GitHub Action**、**git钩子**、**实时监控器**和**Claude Code斜杠命令**使用。
## 30秒快速入门
**CLI** -- 扫描任何项目或服务器:
```
git clone https://github.com/oopsalldev/npm-supply-chain-scanner && cd npm-supply-chain-scanner
./scripts/scan.sh --path /your/project
```
**GitHub Action** -- 添加到任何工作流:
```
- uses: oopsalldev/npm-supply-chain-scanner@main
with:
fail-on-detection: 'true'
```
**Claude Code** -- 交互式扫描:
```
/scan
```
查看下面的[完整使用详情](#quick-start)以了解所有模式,包括git钩子、实时监控器和更多选项。
## 支持的生态系统
| 生态系统 | 锁文件 | 运行时检查 |
|-----------|-----------|---------------|
| npm | package-lock.json, yarn.lock, pnpm-lock.yaml | node_modules 扫描 |
| PyPI | requirements.txt, Pipfile.lock, pyproject.toml | pip show |
| RubyGems | Gemfile.lock | gem list |
| Cargo | Cargo.lock | - |
| Composer | composer.lock | - |
| Go | go.sum | - |
| NuGet | packages.config, .csproj | - |
## 快速开始
### CLI(可在任何地方运行)
```
git clone https://github.com/oopsalldev/npm-supply-chain-scanner
cd npm-supply-chain-scanner
# 扫描当前目录
./scripts/scan.sh --path /your/project
# 扫描整个服务器
./scripts/scan.sh --path /
# 更新威胁数据库
./scripts/scan.sh --update
```
### GitHub Action
添加到 `.github/workflows/supply-chain-scan.yml`:
```
name: Supply Chain Scan
on:
pull_request:
paths: ['package-lock.json', 'yarn.lock', 'requirements*.txt', 'Gemfile.lock', 'Cargo.lock', 'go.sum']
schedule:
- cron: '0 */6 * * *'
jobs:
scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: oopsalldev/npm-supply-chain-scanner@main
with:
fail-on-detection: 'true'
```
### Git钩子(pre-commit)
```
# 安装在任何 git 项目中
bash <(curl -s https://raw.githubusercontent.com/oopsalldev/npm-supply-chain-scanner/main/scripts/install-hooks.sh)
```
当您提交锁文件更改时自动扫描。
### 实时监控器
```
# 监控目录,在 lockfile 更改时扫描
./scripts/watch.sh /your/project 300 # check every 5 minutes
# 使用 Slack/Discord webhook 警报
SUPPLY_CHAIN_WEBHOOK="https://hooks.slack.com/..." ./scripts/watch.sh /your/project
```
### Claude Code斜杠命令
```
# 复制命令到您的项目
mkdir -p .claude/commands && mkdir -p threats
curl -sL https://raw.githubusercontent.com/oopsalldev/npm-supply-chain-scanner/main/.claude/commands/scan.md -o .claude/commands/scan.md
curl -sL https://raw.githubusercontent.com/oopsalldev/npm-supply-chain-scanner/main/.claude/commands/check-package.md -o .claude/commands/check-package.md
curl -sL https://raw.githubusercontent.com/oopsalldev/npm-supply-chain-scanner/main/.claude/commands/add-threat.md -o .claude/commands/add-threat.md
```
然后在Claude Code中:
```
/scan # Full system scan
/check-package axios # Check specific package
/check-package axios@1.14.1 # Check specific version
/add-threat https://advisory.url # Add new threat from article
```
## 检查内容
对于数据库中的每个已知威胁:
1. **软件包版本** - 查找所有已安装版本,与恶意版本进行比较
2. **恶意软件包** - 检测永远不应存在的软件包(如 `plain-crypto-js`、`flatmap-stream`)
3. **文件恶意软件** - 留在磁盘上的操作系统特定恶意文件
4. **网络IOC** - 与已知C2服务器的主动连接
5. **锁文件分析** - 锁文件中的恶意SHA校验和
6. **HTML/CDN模式** - 恶意CDN引用(如 polyfill.io)
7. **生态系统特定** - pip包、gem、crate等
## 威胁数据库
社区维护的JSON文件,位于 `threats/`。目前跟踪**7个生态系统中的25个主要攻击**:
### npm(9个威胁)
| ID | 名称 | 年份 | 攻击内容 |
|----|------|------|--------------|
| NSCS-2025-003 | 沙虫蠕虫 | 2025 | 自我复制蠕虫,云令牌窃取器,1000+个软件包 |
| NSCS-2025-002 | Nx凭证窃取器 | 2025 | 通过窃取的凭证在72小时内接管AWS管理员 |
| NSCS-2025-001 | Axios RAT | 2025 | 跨平台远程访问木马 |
| NSCS-2024-003 | Polyfill.io CDN劫持 | 2024 | 注入38万+网站,与朝鲜有关 |
| NSCS-2024-002 | Lottie Player Drainer | 2024 | 通过Ace Drainer DaaS的Web3钱包耗尽器 |
| NSCS-2024-001 | Solana web3.js | 2024 | 私钥泄露,窃取16万美元 |
| NSCS-2021-002 | coa & rc DanaBot | 2021 | 通过DLL的银行木马 |
| NSCS-2021-001 | ua-parser-js | 2021 | XMRig挖矿木马 + 密码窃取器 |
| NSCS-2018-001 | event-stream | 2018 | 针对Copay比特币钱包的盗窃 |
### PyPI(5个威胁)
| ID | 名称 | 年份 | 攻击内容 |
|----|------|------|--------------|
| NSCS-2026-001 | TeamPCP (LiteLLM + Telnyx) | 2026 | 级联攻击:K8s横向移动,systemd后门 |
| NSCS-2024-005 | Ultralytics YOLO | 2024 | 通过GitHub Actions投毒的XMRig挖矿木马 |
| NSCS-2024-004 | Coloramatyposquat | 2024 | Fade Stealer:浏览器凭证、Discord、加密钱包 |
| NSCS-2022-002 | PyTorch torchtriton | 2022 | 依赖混淆,SSH密钥泄露 |
| NSCS-2022-001 | CTX账户接管 | 2022 | 泄露所有环境变量 |
### RubyGems(3个威胁)
| ID | 名称 | 年份 | 攻击内容 |
|----|------|------|--------------|
| NSCS-2019-003 | strong_password | 2019 | 基于Cookie的Rails生产环境RCE |
| NSCS-2019-002 | bootstrap-sass | 2019 | 基于Cookie的Rails服务器RCE |
| NSCS-2019-001 | rest-client | 2019 | 凭证泄露 + 远程代码执行 |
### Cargo/Rust(2个威胁)
| ID | 名称 | 年份 | 攻击内容 |
|----|------|------|--------------|
| NSCS-2025-004 | faster_log | 2025 | 从源代码中窃取以太坊/Solana私钥 |
| NSCS-2022-003 | rustdecimal | 2022 | 在GitLab CI中部署Mythic Poseidon代理 |
### Go模块(3个威胁)
| ID | 名称 | 年份 | 攻击内容 |
|----|------|------|--------------|
| NSCS-2026-002 | 假冒 golang.org/x/crypto | 2026 | 拦截SSH密码,Rekoobe后门 |
| NSCS-2025-005 | 磁盘擦除模块 | 2025 | 覆盖 /dev/sda - 破坏Linux系统 |
| NSCS-2021-003 | boltdb-go | 2021 | 持久性后门,3年以上未被发现 |
### Composer/PHP(1个威胁)
| ID | 名称 | 年份 | 攻击内容 |
|----|------|------|--------------|
| NSCS-2024-006 | 假冒Laravel包 | 2024 | 完整RAT:远程shell、文件泄露、截图 |
### NuGet/.NET(2个威胁)
| ID | 名称 | 年份 | 攻击内容 |
|----|------|------|--------------|
| NSCS-2024-007 | JIT Hook身份窃取器 | 2024 | JIT编译器钩子,ASP.NET认证后门 |
| NSCS-2023-001 | PLC破坏(shanhai666) | 2023 | 破坏西门子PLC和数据库的逻辑炸弹 |
### 威胁文件格式
```
{
"id": "NSCS-YYYY-NNN",
"name": "Human-readable name",
"severity": "critical",
"date_discovered": "2026-01-15",
"source": "https://advisory-url",
"description": "What the attack does",
"affected_packages": [
{
"name": "package-name",
"compromised_versions": ["1.2.3"],
"safe_versions": ["1.2.2", "1.2.4"]
}
],
"c2_servers": [{ "domain": "evil.com", "ip": "1.2.3.4", "port": 443 }],
"file_artifacts": { "linux": ["/tmp/malware"], "macos": [], "windows": [] },
"malicious_indicators": {
"directories": ["malicious-pkg"],
"files": ["evil.js"],
"network_patterns": ["evil.com"]
},
"remediation": ["Step 1", "Step 2"]
}
```
## 保持更新
```
# 更新威胁数据库
cd npm-supply-chain-scanner && git pull
# 或使用内置更新器
./scripts/scan.sh --update
```
## 贡献指南
参见 [CONTRIBUTING.md](CONTRIBUTING.md)。添加新威胁的最快方式:
```
/add-threat https://url-to-advisory
```
或者提交一个包含咨询URL的issue。
## 许可证
MIT (c) 2026 [oops.zone](
标签:AMSI绕过, C2连接检测, Cargo安全, CI/CD安全, Composer安全, DevSecOps, GitHub Action, Go安全, Llama, npm安全, NuGet安全, PyPI安全, RubyGems安全, 上游代理, 依赖安全, 依赖树分析, 包管理器安全, 可视化界面, 多人体追踪, 威胁检测, 安全扫描, 应用安全, 恶意包检测, 数据可视化, 文档安全, 日志审计, 时序注入, 结构化查询, 网络安全, 自动化安全, 软件供应链, 逆向工具, 防御性安全, 隐私保护