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安全, 上游代理, 依赖安全, 依赖树分析, 包管理器安全, 可视化界面, 多人体追踪, 威胁检测, 安全扫描, 应用安全, 恶意包检测, 数据可视化, 文档安全, 日志审计, 时序注入, 结构化查询, 网络安全, 自动化安全, 软件供应链, 逆向工具, 防御性安全, 隐私保护