Security-Phoenix-demo/Shai-Hulud-Sha1-Hulud-V2-npm-compromise-scanner

GitHub: Security-Phoenix-demo/Shai-Hulud-Sha1-Hulud-V2-npm-compromise-scanner

针对 2025 年 NPM 供应链攻击,提供覆盖 690 个已知受损包的检测与修复能力。

Stars: 11 | Forks: 2

# NPM 包妥协检测工具与 Phoenix 安全集成 - 2025 ## ⚡ 快速开始(30 秒) ### **📊 快速结果指南:** - **0 个发现** = ✅ **非常棒!** 您的项目是安全的(就像 Optimizely、Facebook、Google 的仓库一样) - **1+ 个发现** = 🚨 **需要立即行动!** 检测到受妥协的包,请按照下面的修复步骤操作 **🚨 安全紧急情况?请立即运行以下命令:** ``` # 1. 使脚本可执行 chmod +x *.sh *.py # 2. 最快:使用 Phoenix + Light Scan 增强安全检查 ./enhanced-quick-check-with-phoenix.sh . --enable-phoenix --light-scan # 3. 或传统快速检查 ./local-security-check.sh . # 4. 如果发现受损包,获取包含所有库的详细报告 python3 enhanced_npm_compromise_detector_phoenix.py . --full-tree --enable-phoenix --detail-log --output emergency-report.txt ``` ### **⚡ 企业快速启动(批量扫描)** **一次性扫描多个仓库:** ``` # 1. 创建仓库列表 cat > my_repos.txt << EOF https://github.com/your-org/frontend https://github.com/your-org/backend https://github.com/your-org/mobile-app EOF # 2. 设置 GitHub 令牌以获得最佳性能(可选但推荐) export GITHUB_TOKEN=your_github_token_here # 3. 轻量扫描所有仓库(速度快 10 倍!)并清理 python3 enhanced_npm_compromise_detector_phoenix.py --repo-list my_repos.txt --light-scan --enable-phoenix --organize-folders --delete-local-files --detail-log --output batch-security-report.txt # 4. 或使用集成脚本 ./enhanced-quick-check-with-phoenix.sh my_repos.txt --enable-phoenix --light-scan --repo-list ``` ### **🐙 GitHub 自动仓库发现(`--pull-all`)** **自动扫描您有访问权限的所有仓库:** ``` # 1. 设置您的 GitHub 个人访问令牌 export GITHUB_TOKEN=ghp_your_personal_access_token_here # 2. 自动发现并扫描所有可访问的仓库 python3 enhanced_npm_compromise_detector_phoenix.py \ --pull-all \ --organize-folders \ --output github-all-repos-scan.txt # 3. 配合 Phoenix 集成和完整树分析 python3 enhanced_npm_compromise_detector_phoenix.py \ --pull-all \ --full-tree \ --enable-phoenix \ --organize-folders \ --output github-comprehensive-audit.txt # 4. 调试模式快速扫描(查看正在发现的内容) python3 enhanced_npm_compromise_detector_phoenix.py \ --pull-all \ --debug \ --organize-folders \ --output github-debug-scan.txt ``` **`--pull-all` 的作用:** - 🔍 **自动发现** 所有通过您的 GitHub 凭据可访问的仓库 - 📦 **克隆** 每个仓库到本地 - 🔎 **递归扫描** 所有目录,查找 `package.json`、`package-lock.json` 和 `yarn.lock` - 🚀 **完美适用于** 组织范围的安全审计和持续监控 - ✅ **适用于** 公有和私有仓库 **GitHub 令牌设置:** 在以下位置创建个人访问令牌:https://github.com/settings/tokens 所需权限范围: - `repo`(对私有仓库的完全控制) - `read:org`(读取组织和团队成员关系) 然后设置它: ``` # Linux/macOS export GITHUB_TOKEN="ghp_your_token_here" # Windows PowerShell $env:GITHUB_TOKEN="ghp_your_token_here" ``` ### **🎯 每个工具的作用** | 工具 | 用途 | 速度 | 使用场景 | |------|------|------|----------| | `./enhanced-quick-check-with-phoenix.sh` | **🔗 集成扫描器 + Phoenix API** | ⚡ 快速 | 企业安全、自动化报告 | | `./enhanced-quick-check-with-phoenix.sh --light-scan` | **🪶 轻量批量扫描器** | ⚡⚡ 非常快 | **企业批量扫描** | | `./local-security-check.sh` | 输出美观的快速扫描器 | ⚡ 快速 | 日常检查、CI/CD | | `./quick-check-compromised-packages-2025.sh` | **核心检测引擎** | ⚡ 快速 | 直接使用、自动化 | | `enhanced_npm_compromise_detector_phoenix.py --light-scan` | **🪶 轻量 Phoenix 扫描器** | ⚡⚡ 非常快 | **批量仓库扫描,零存储** | | `enhanced_npm_compromise_detector_phoenix.py --detail-log` | **📋 详细库报告** | ⚡ 快速 | **完整库可见性** | | `enhanced_npm_compromise_detector_phoenix.py --delete-local-files` | **🗑️ 自动清理扫描器** | ⚡ 快速 | **CI/CD、清洁环境** | | `enhanced_npm_compromise_detector_phoenix.py` | **🔗 Phoenix 集成分析** | 🐌 详尽 | 企业安全审计、资产清单 | | `npm_package_compromise_detector_2025.py` | **全面分析** | 🐌 详尽 | 安全审计、报告 | ### **📊 理解扫描结果** #### ✅ **干净项目(退出代码 0)- 好消息!** ``` $ ./local-security-check.sh . ✅ SCAN COMPLETE: No compromised packages detected Files scanned: 3 Total packages scanned: 45 Clean packages found: 45 Total findings: 0 ``` **这意味着:** - ✅ **您的项目是安全的** - 未发现受妥协的包 - ✅ **所有依赖项都干净且安全** - ✅ **无需立即采取行动** - 可以安全继续开发 - 📊 **示例**:Optimizely、Facebook Create React App、Vue.js 核心、微软 TypeScript 通常显示 0 个发现(它们是安全的!) **为什么某些项目显示 0 个发现:** - 它们使用 **主流、可信的包**(lodash、react、express) - 它们 **避免实验性/小众包**,这些包更容易被妥协 - 它们有 **良好的安全实践** 和依赖管理 - 它们 **定期更新依赖项** 以避免已知漏洞版本 #### 🚨 **受妥协项目(退出代码 1)- 需要立即行动!** ``` $ ./local-security-check.sh . 🚨 CRITICAL: Compromised packages detected! Files scanned: 2 Total packages scanned: 23 Clean packages found: 18 Total findings: 5 IMMEDIATE ACTIONS REQUIRED: 1. Stop all running applications immediately 2. Clear npm cache: npm cache clean --force 3. Remove node_modules: rm -rf node_modules 4. Remove lock files: rm package-lock.json yarn.lock 5. Update to safe versions and reinstall ``` **这意味着:** - ❌ **检测到安全风险** - 发现了受妥协的包 - 🚨 **需要立即采取行动** - 请遵循下面的修复步骤 - 📊 **混合结果**:部分包干净(18 个),部分受妥协(5 个) #### 🔍 **理解“0 个发现”结果** **“0 个发现”是极好的消息,意味着:** 1. **✅ 依赖项安全**:您的项目只使用干净、未受妥协的包 2. **✅ 良好的安全态势**:供应链中没有已知漏洞 3. **✅ 可安全部署**:没有来自 NPM 包妥协的安全风险 4. **✅ 维护良好的项目**:依赖项来自受信任的来源 **现实中的干净项目示例:** - **Optimizely 仓库**:0 个发现 ✅(专业、安全的依赖项) - **Facebook Create React App**:0 个发现 ✅(经过充分审查的依赖项) - **Vue.js 核心**:0 个发现 ✅(少量、受信任的依赖项) - **微软 TypeScript**:0 个发现 ✅(企业级安全) **为什么某些项目显示 0 个发现:** - 它们使用 **主流、可信的包**(lodash、react、express) - 它们 **避免实验性/小众包**,其中妥协经常发生 - 它们有 **良好的安全实践** 和依赖管理 - 它们 **定期更新依赖项** 以避免已知漏洞版本 ## 🔗 Phoenix 安全集成(新功能!) ### **企业资产与漏洞管理** 增强的工具现在与 **Phoenix Security** 平台集成,自动: - **🏗️ 为每个 package.json/package-lock.json 文件创建 BUILD 资产** - **🔍 生成带有适当风险评分(1.0-10.0)的安全发现** - **🔗 自动从文件路径检测 Git 仓库并链接** - **📊 在 Phoenix 安全仪表板中集中安全数据** ### **快速 Phoenix 设置** ``` # 1. 创建 Phoenix API 配置模板 python3 enhanced_npm_compromise_detector_phoenix.py --create-config # 2. 编辑 .config 并填入您的 Phoenix API 凭据 cp .config.example .config # ⚠️ 重要:编辑 .config 文件并替换: # - your_phoenix_client_id_here → 您的实际 Phoenix 客户端 ID # - your_phoenix_client_secret_here → 您的实际 Phoenix 客户端密钥 # - your-phoenix-domain.com → 您的实际 Phoenix 域 # 3. 使用 Phoenix 集成运行 ./enhanced-quick-check-with-phoenix.sh . --enable-phoenix ``` ### **Phoenix 风险评分** | 发现类型 | 风险评分 | 描述 | |----------|----------|------| | **受妥协的包** | 10.0(严重) | 检测到已知受妥协的版本 | | **潜在受妥协** | 8.0(高) | 包名在妥协列表中 | | **安全版本** | 1.0(信息) | 被监控包的安全版本 | | **干净库** | 1.0(信息) | 未受 Shai Halud 影响的干净库 | ### **🆕 导入所有库(`--import-all`)** 默认情况下,Phoenix 发现仅针对受妥协或监控的包创建。使用 `--import-all` 为 **所有** 库创建发现,包括干净的库: ``` # 导入所有库(包括干净库,生成 CVSS 1.0 漏洞) python3 enhanced_npm_compromise_detector_phoenix.py . --enable-phoenix --import-all # 完整安全态势(包含所有库) python3 enhanced_npm_compromise_detector_phoenix.py \ --repo-list repos.txt \ --light-scan \ --enable-phoenix \ --import-all \ --output complete-posture.txt ``` **`--import-all` 的好处:** - ✅ **完整的资产清单**:每个库都有一个 Phoenix 发现 - ✅ **安全态势可见性**:查看所有依赖项,而不仅仅是受妥协的 - ✅ **合规准备就绪**:完整的库文档用于审计 - ✅ **干净库跟踪**:跟踪“库 XYZ 版本 Z 未受 Shai Halud 影响” **干净库发现示例:** - **名称**:“NPM 包安全性:express” - **描述**:“库 express 版本 4.18.2 未受 Shai Halud 影响” - **风险评分**:1.0(CVSS 1) - **标签**:“shai-hulud-clean-library” ### **🏷️ 自定义标签配置** 为 Phoenix 发现和资产添加自定义标签以更好地组织: #### **命令行标签:** ``` # 添加自定义漏洞标签 python3 enhanced_npm_compromise_detector_phoenix.py . \ --enable-phoenix \ --tag_vuln="security-audit,compliance-scan,Q4-2025" # 添加自定义资产标签 python3 enhanced_npm_compromise_detector_phoenix.py . \ --enable-phoenix \ --tag_asset="frontend-project,production-ready,team-alpha" # 合并两种标签类型 python3 enhanced_npm_compromise_detector_phoenix.py . \ --enable-phoenix \ --import-all \ --tag_vuln="security-audit,shai-halud-scan" \ --tag_asset="npm-project,dependency-inventory" \ --output tagged-security-scan.txt ``` #### **配置文件标签:** 在 `.config` 文件中添加标签以保持一致的标记: ``` [phoenix] client_id = your_phoenix_client_id_here client_secret = your_phoenix_client_secret_here api_base_url = https://api.securityphoenix.cloud assessment_name = NPM Compromise Detection - Shai Halud import_type = new # 针对漏洞和资产的附加标签(逗号分隔) additional_vuln_tags = custom-scan,security-audit,Q4-2025 additional_asset_tags = npm-project,dependency-scan,team-alpha # 用于增强 API 速率限制的 GitHub 令牌 github_token = your_github_token_here ``` **标签用例:** - **团队组织**:`team-frontend,team-backend,team-mobile` - **环境跟踪**:`production,staging,development` - **合规性**:`sox-compliance,gdpr-audit,security-review` - **基于时间**:`Q1-2025,monthly-scan,pre-deployment` - **项目**:`critical-app,internal-tool,public-facing` ### **📊 增强的回退报告** 在使用轻量扫描模式时,扫描器提供有关 GitHub 访问方法的详细报告: ``` GITHUB ACCESS SUMMARY: ---------------------- API failures: 3 repositories Fallback successes: 2 repositories Complete failures: 1 repositories REPOSITORIES ACCESSED VIA FALLBACK (Direct Raw GitHub): 1. react-sdk URL: https://github.com/optimizely/react-sdk Files found: 2 Access method: direct_raw_github Status: ✅ Fallback successful REPOSITORIES WITH API FAILURES: 1. react-sdk URL: https://github.com/optimizely/react-sdk Reason: github_api_failed Status: ✅ Recovered via direct raw access REPOSITORIES COMPLETELY INACCESSIBLE: 1. android-sdk URL: https://github.com/optimizely/android-sdk Reason: all_methods_failed Status: ❌ All access methods failed ``` **报告类别:** - **✅ 回退成功**:通过直接原始访问恢复仓库 - **⚠️ API 失败**:GitHub API 失败但回退有效的仓库 - **❌ 完全失败**:所有方法都无法访问的仓库(通常没有 NPM 文件) ### **仓库 URL 检测** 该工具自动从文件路径检测仓库 URL: - **GitHub 模式**:`/Documents/GitHub/repo-name/` → `https://github.com/org/repo-name` - **Git 远程**:从 `.git` 目录读取 `git remote get-url origin` - **手动覆盖**:使用 `--repo-url` 参数 ### **批量仓库处理** ``` # 创建仓库列表 cat > repos.txt << EOF https://github.com/securityphoenix/SP-MVP1-Frontend https://github.com/Security-Phoenix-demo/Shai-Halud-tinycolour-compromise-verifier EOF # 处理多个仓库(完整扫描) python3 enhanced_npm_compromise_detector_phoenix.py --repo-list repos.txt --enable-phoenix # 🪶 轻量扫描模式(速度快 10 倍 - 仅限 NPM 文件!) python3 enhanced_npm_compromise_detector_phoenix.py --repo-list repos.txt --enable-phoenix --light-scan ``` ### **🌐 拉取所有仓库模式(`--pull-all`)(新功能!)** 自动发现并扫描您的 GitHub 凭据可访问的所有仓库: ``` # 1. 在 .config 文件中配置 GitHub 令牌 [github] token = ghp_your_github_token_here # 2. 拉取并扫描所有可访问的仓库 python3 enhanced_npm_compromise_detector_phoenix.py . --pull-all # 3. 配合 Phoenix 集成和清理 python3 enhanced_npm_compromise_detector_phoenix.py . \ --pull-all \ --enable-phoenix \ --organize-folders \ --delete-local-files ``` **特性:** - 🔍 **自动发现**:从 GitHub API 获取所有者、协作者、组织成员的所有仓库 - 📦 **自动克隆**:将每个仓库克隆到有组织的文件夹中 - 🔄 **递归扫描**:扫描所有子目录中的包文件 - 🏢 **企业就绪**:完美用于组织范围的安全审计 - 🔐 **访问控制感知**:仅扫描凭据可访问的仓库 **用例:** - 组织范围的安全审计 - 个人项目清单扫描 - 自动化合规检查 - 持续安全监控 📖 **[完整的 --pull-all 指南](PULL_ALL_FEATURE_GUIDE.md)** ### **🪶 轻量扫描模式(新功能!)** 非常适合快速扫描数百个仓库: - ⚡ **快 10 倍**:仅通过 GitHub API 下载 NPM 文件 - 💾 **零存储**:无需克隆仓库 - 🔄 **批量优化**:高效扫描整个组织 - 🛡️ **自动回退**:从 API 故障中恢复,使用 GitHub 原始直接访问 ``` # 为更高速率限制设置 GitHub 令牌(推荐) export GITHUB_TOKEN=your_github_token_here # 轻量扫描仓库列表 python3 enhanced_npm_compromise_detector_phoenix.py --repo-list repos.txt --light-scan --enable-phoenix ``` #### **🔄 智能回退系统** 当 GitHub API 访问失败(无效令牌、速率限制等)时,扫描器自动: 1. **GitHub API 搜索** → 尝试经过身份验证/未经过身份验证的 API 访问 2. **GitHub API 回退** → 尝试直接 GitHub API 文件访问 3. **直接原始访问** → 使用 `raw.githubusercontent.com` 访问公共仓库 4. **完整文档** → 在扫描结果中准确报告发生的情况 **回退流程示例:** ``` 🔄 GitHub API failed completely, trying direct raw access... 🔄 Fallback: Trying direct raw GitHub access for optimizely/react-sdk ✅ Direct access found: package.json ✅ Direct access found: yarn.lock ✅ Fallback successful: Found 2 NPM file(s) via direct access ``` **回退的好处:** - ✅ **零空文件**:不再有 JSON 解析错误 - ✅ **最大覆盖范围**:恢复原本会失败的仓库 - ✅ **详细报告**:显示哪些仓库使用了回退方法 - ✅ **公共仓库支持**:适用于任何公共 GitHub 仓库 - ✅ **自动恢复**:无需手动干预 ### **🆕 2025 年新增强功能** #### **📋 详细日志模式(`--detail-log`)** 显示所有库而不截断,以获得完整可见性: ``` # 显示每个库(不显示“……还有 50 个”消息) python3 enhanced_npm_compromise_detector_phoenix.py --folders my_projects --detail-log # 带完整库列表的企业审计 python3 enhanced_npm_compromise_detector_phoenix.py --repo-list enterprise_repos.txt --detail-log --output complete-audit.txt ``` **好处:** - ✅ **完整可见性**:查看每个扫描的库 - ✅ **无截断**:没有“… 和 X 个更多库”的消息 - ✅ **审计就绪**:完美用于合规性和安全审计 - ✅ **仓库上下文**:每个库显示仓库、构建文件和本地路径 #### **🗑️ 自动清理模式(`--delete-local-files`)** 扫描后自动清理克隆的仓库: ``` # 扫描并清理 - 适合 CI/CD python3 enhanced_npm_compromise_detector_phoenix.py --repo-list repos.txt --organize-folders --delete-local-files # 带清理的企业批量扫描 python3 enhanced_npm_compromise_detector_phoenix.py \ --repo-list large_org_repos.txt \ --light-scan \ --organize-folders \ --delete-local-files \ --enable-phoenix ``` **好处:** - ✅ **清洁环境**:不留下克隆的仓库 - ✅ **CI/CD 就绪**:完美用于自动化管道 - ✅ **磁盘管理**:防止磁盘空间积累 - ✅ **安全清理**:仅删除本次扫描克隆的仓库 #### **🔄 组合使用** 将这两个功能结合使用以获得终极扫描体验: ``` # 带清理的完整企业安全审计 python3 enhanced_npm_compromise_detector_phoenix.py \ --repo-list organization_repos.txt \ --light-scan \ --organize-folders \ --delete-local-files \ --detail-log \ --enable-phoenix \ --output comprehensive-security-audit.txt ``` ### **🗂️ 有组织的文件夹结构** 适用于系统化的安全监控和审计跟踪: ``` # 按日期组织 GitHub 拉取请求和结果 python3 enhanced_npm_compromise_detector_phoenix.py \ --repo-list repos.txt \ --light-scan \ --organize-folders \ --enable-phoenix \ --output security_audit.txt ``` **创建有组织的结构:** ``` github-pull/20250917/ # Downloaded NPM files by repository ├── repo1/package.json ├── repo2/package-lock.json └── repo3/yarn.lock result/20250917/ # All reports and results ├── security_audit.txt └── phoenix_import.log ``` 📖 **[完整的 Phoenix 集成指南](PHOENIX_INTEGRATION_GUIDE.md)** ## 🆕 近期更新(2025 年 11 月) ### **🚨 第四波更新 - 2025 年 11 月 25 日** **大规模安全警报**:482 个额外的包已确认被妥协! - 📊 **数据库里程碑**:所有潜在受妥协的包现已确认 - **690 个总确认包**(原为 208 个,+482 个包) - **0 个潜在受妥协**(所有 400 个已移至确认 + 82 个新包) - **37 个组织受影响**(原为 29 个,+8 个新组织) - 🏢 **新受重大影响的主要组织:** - `@asyncapi/*` - 37 个包(异步 API 生成器、解析器、模板) - `@posthog/*` - 56 个包(PostHog 分析、插件、集成) - `@postman/*` - 19 个包(Postman MCP、二进制文件、工具) - `@ensdomains/*` - 47 个包(ENS 合约、解析器、工具) - `@voiceflow/*` - 43 个包(Voiceflow SDK、类型、配置) - 加上来自各种维护者的 250 多个独立包 - ⚠️ **关键影响领域:** - API 开发工具(@asyncapi、@postman) - 分析和跟踪(@posthog) - 区块链/Web3 基础设施(@ensdomains、crypto-addr-codec) - 对话式 AI 平台(@voiceflow、dialogflow-es) - React Native 移动开发(@actbase、@strapbuild) - DevOps 和测试工具 ### **之前的更新:** - 🌐 **`--pull-all` 模式**:自动发现并扫描所有可访问的仓库 - 📦 **10 个 Zapier 包**:已确认具体受妥协版本 - 🧪 **测试变体套件**:针对移动、后端和前端专注的测试套件 ### **完整的更新历史:** - ✅ **690 个确认受妥协包**(2025 年 11 月 25 日 - 第四波) - ✅ **37 个组织受影响**(8 个新组织) - ✅ **100% 确认率**(所有潜在受妥协包现已确认) ## 概览 This repository contains comprehensive security tools to detect **690 confirmed compromised NPM packages** from the 2025 supply chain attack affecting multiple organizations including `@ctrl/*`, `@nativescript-community/*`, `@art-ws/*`, `@crowdstrike/*`, `@operato/*`, `@teselagen/*`, `@things-factory/*`, `@zapier/*`, `@asyncapi/*`, `@posthog/*`, `@postman/*`, `@ensdomains/*`, `@voiceflow/*`, and many others. ## ⚠️ 严重安全警报 **IMMEDIATE ACTION REQUIRED** if any of these packages are detected in your project: ### 🚨 **690 个已确认受损包(包含特定版本)** **⚠️ CRITICAL ORGANIZATIONS AFFECTED (37 Organizations):** - **@ctrl** - 15+ packages compromised - **@nativescript-community** - 25+ packages compromised - **@art-ws** - 15+ packages compromised - **@crowdstrike** - 10+ packages compromised - **@operato** - 15+ packages compromised - **@teselagen** - 10+ packages compromised - **@things-factory** - 8+ packages compromised - **@nstudio** - 8+ packages compromised - **@zap** - 10+ packages compromised - **@asyncapi** - 37+ packages compromised (**4TH WAVE!**) - **@posthog** - 56+ packages compromised (**4TH WAVE!**) - **@postman** - 19+ packages compromised (**4TH WAVE!**) - **@ensdomains** - 47+ packages compromised (**4TH WAVE!**) - **@voiceflow** - 43+ packages compromised (**4TH WAVE!**) - Plus 250+ individual packages from various maintainers #### **关键受损包(样本,共 690 个):** **Original Wave:** - `@ctrl/tinycolor@4.1.1, 4.1.2` - `@ahmedhfarag/ngx-perfect-scrollbar@20.0.20` - `@art-ws/common@2.0.28` - `@crowdstrike/commitlint@8.1.1, 8.1.2` - `@operato/board@9.0.36-9.0.46` (multiple versions) - `@nativescript-community/text@1.6.9-1.6.13` (multiple versions) **3rd Wave (Zapier):** - `@zapier/zapier-sdk@0.15.5-0.15.7` (multiple versions) - `zapier-platform-core@18.0.2-18.0.4` (multiple versions) - `@zapier/mcp-integration@3.0.1-3.0.3` (multiple versions) **4TH WAVE (482 packages - Nov 25, 2025):** - `@asyncapi/*` - 37 packages (all versions affected) - `@posthog/*` - 56 packages (all versions affected) - `@postman/*` - 19 packages (all versions affected) - `@ensdomains/*` - 47 packages (all versions affected) - `@voiceflow/*` - 43 packages (all versions affected) - `posthog-js`, `posthog-node`, `posthog-react-native` (all versions) - `ethereum-ens`, `crypto-addr-codec` (all versions) - Plus 250+ individual packages ## 🚨 紧急响应(如果发现受损包) **If the scan detects compromised packages, follow these steps immediately:** ``` # 1. 立即停止应用程序 pkill -f node # 2. 清理环境 npm cache clean --force rm -rf node_modules rm -f package-lock.json yarn.lock # 3. 获取详细分析 python3 npm_package_compromise_detector_2025.py . --full-tree --output emergency-report.txt # 4. 查看 emergency-report.txt 获取安全版本 # 5. 使用报告中的安全版本更新 package.json # 6. 重新安装依赖项 npm install # 7. 验证修复 ./local-security-check.sh . ``` ## 🛠️ 检测工具 ### 1. **本地安全检查(推荐)** ``` # 最佳选项:结合 Shell 和 Python 分析,输出干净结果 ./local-security-check.sh . # Check current directory ./local-security-check.sh /path/to/project # Check specific project ``` **Features:** - ⚡ Fast execution with comprehensive coverage - 🎨 Clean, readable output format - 🔄 Runs both shell and Python scanners - 📊 Clear summary with next steps ### 2. **快速 Shell 脚本(直接核心扫描器)** ``` # 直接访问核心检测引擎 ./quick-check-compromised-packages-2025.sh . # Check current directory ./quick-check-compromised-packages-2025.sh /path/to/project # Check specific project ``` **Features:** - ⚡ Fastest scanning of package.json and lock files - 🎨 Color-coded output for easy identification - 🗂️ NPM cache checking - 📊 Summary report with actionable recommendations ### 3. **综合 Python 扫描器(详细分析)** ``` # 无需额外依赖 - 使用标准库 # 基本扫描 python3 npm_package_compromise_detector_2025.py . # 完整依赖树分析(安全审计推荐) python3 npm_package_compromise_detector_2025.py . --full-tree # 保存带时间戳的详细报告 python3 npm_package_compromise_detector_2025.py . --full-tree \ --output "security-report-$(date +%Y%m%d-%H%M).txt" # 静默模式(仅关键/高严重性发现) python3 npm_package_compromise_detector_2025.py . --quiet # 自定义配置文件 python3 npm_package_compromise_detector_2025.py . --config custom-packages.json ``` **Advanced Features:** - 🌳 Full dependency tree traversal (requires npm install first) - 📋 Detailed package analysis and reporting - 🔍 Source code scanning for malicious patterns - 📊 Comprehensive statistics and safe version recommendations - 🧬 Crypto-related keyword detection - 🌐 Malicious URL detection ### 4. **通用工作流** ``` # 日常开发检查 ./local-security-check.sh . # 部署前安全审计 python3 npm_package_compromise_detector_2025.py . --full-tree --output pre-deploy-security.txt # 多项目扫描 for project in ~/projects/*/; do echo "Scanning $project" ./local-security-check.sh "$project" done # CI/CD 集成 ./local-security-check.sh . || exit 1 # Fail build if compromised ``` ## 📁 仓库结构 ``` ├── local-security-check.sh # ⭐ Recommended: Clean runner script ├── quick-check-compromised-packages-2025.sh # Fast shell script checker ├── npm_package_compromise_detector_2025.py # Comprehensive Python scanner ├── compromised_packages_2025.json # Package compromise database ├── install-and-run.sh # One-liner installation script ├── test_sample/ # Test data for validation │ ├── package.json # Sample with compromised packages │ └── suspicious_code.js # Sample with malicious patterns ├── test_deep_dependencies/ # Deep dependency tree testing │ ├── package.json # Complex dependency structure │ └── package-lock.json # Lock file with nested compromised packages ├── test_comprehensive_scan/ # Comprehensive risk scoring test │ ├── package.json # Test all severity levels and duplicates │ └── README.md # Test documentation ├── test_variations/ # Focused test suites (NEW!) │ ├── mobile-focused/ # Mobile development packages │ ├── backend-api-focused/ # Backend/API packages │ ├── frontend-web-focused/ # Frontend/web packages │ └── README.md # Variations documentation ├── test_zapier_confirmed/ # Zapier confirmed compromises (NEW!) │ └── package.json # All 10 Zapier packages with versions ├── .github/workflows/ # GitHub Actions integration │ └── npm-security-scan.yml # CI/CD workflow template ├── QUICK_START.md # Comprehensive usage guide ├── COMMAND_REFERENCE.md # Quick reference card ├── requirements.txt # Python dependencies (optional) └── README.md # This documentation ``` ## 🚨 即时响应操作 If compromised packages are detected: ### 1. **立即停止** ``` # 终止所有正在运行的 Node.js 进程 pkill -f node pkill -f npm ``` ### 2. **清理环境** ``` # 清除 npm 缓存 npm cache clean --force # 移除 node_modules 和锁定文件 rm -rf node_modules rm -f package-lock.json yarn.lock ``` ### 3. **更新包版本** **🎯 Automatic Safe Version Detection**: The Python scanner generates safe version recommendations automatically. For manual updates, here are key examples: ``` { "overrides": { "@ctrl/tinycolor": "4.1.0", "@ahmedhfarag/ngx-perfect-scrollbar": "20.0.19", "@art-ws/common": "2.0.27", "@crowdstrike/commitlint": "8.1.0", "@nativescript-community/text": "1.6.8", "@zapier/zapier-sdk": "0.15.4", "zapier-platform-core": "18.0.1", "zapier-platform-cli": "18.0.1", "zapier-platform-schema": "18.0.1", "@zapier/mcp-integration": "3.0.0", "@zapier/secret-scrubber": "1.1.2", "angulartics2": "14.1.0", "ngx-color": "10.0.0", "ngx-toastr": "19.0.0", "ts-gaussian": "3.0.4", "encounter-playground": "0.0.1" } } ``` ``` ### 4. **重新安装并审计** ```bash # 重新安装依赖项 npm install # 运行安全审计 npm audit npm audit fix # 验证无受损包残留 ./quick-check-compromised-packages-2025.sh . ``` ### 5. **安全评估** - Review application logs for suspicious network activity - Check for unauthorized file modifications - Monitor for unusual CPU/memory usage - Scan for crypto wallet compromise if browser-based application - Review recent deployments and rollback if necessary ## 🔧 配置 ### 自定义包数据库 You can modify `compromised_packages_2025.json` to add new compromised packages or update versions: ``` { "compromised_packages": { "package-name": { "compromised_versions": ["1.0.0", "1.0.1"], "safe_version": "0.9.9" } }, "potentially_compromised_packages": [ "suspicious-package-name" ] } ``` ### Python 脚本选项 ``` # 自定义配置文件 python3 npm_package_compromise_detector_2025.py --config custom_packages.json # 跳过递归目录扫描 python3 npm_package_compromise_detector_2025.py --no-recursive # 启用完整依赖树分析 python3 npm_package_compromise_detector_2025.py --full-tree ``` ## 🧪 测试与验证 ### **快速测试(30 秒)** ``` # 使用干净项目测试 mkdir clean_test && echo '{"name":"test","version":"1.0.0","dependencies":{"lodash":"^4.17.21"}}' > clean_test/package.json ./local-security-check.sh clean_test # 预期:✅ 未检测到受损包 # 使用受损包测试 ./local-security-check.sh test_sample # 预期:🚨 检测到多个受损包 ``` ### **综合测试** ``` # 使用示例数据测试 Shell 脚本 ./quick-check-compromised-packages-2025.sh test_sample # 使用详细输出测试 Python 脚本 python3 npm_package_compromise_detector_2025.py test_sample --output test_results.txt # 测试深度依赖分析(首次需运行 npm install) cd test_deep_dependencies && npm install && cd .. python3 npm_package_compromise_detector_2025.py test_deep_dependencies --full-tree ``` ### **预期结果:** - **test_sample**: Should detect 5+ compromised packages and malicious patterns from 690 total monitored packages - **test_deep_dependencies**: Should detect compromised packages in nested dependencies - **test_variations**: Three focused test suites (mobile, backend, frontend) with 4th wave packages - **test_zapier_confirmed**: Tests 10 Zapier packages with specific versions - **clean_test**: Should show clean results with exit code 0 - **Coverage**: Scanner monitors **690 confirmed compromised packages** across **37 major organizations** ### **🤔 故障排查:“为何未发现任何问题?”** #### **✅ 这通常是好消息!** If you're scanning repositories like: - **Optimizely**: `python3 enhanced_npm_compromise_detector_phoenix.py --repo-list optimizely_repos.txt --light-scan` - **Facebook/Meta projects**: `--repo-list facebook_repos.txt` - **Google/Angular projects**: `--repo-list google_repos.txt` - **Microsoft projects**: `--repo-list microsoft_repos.txt` **Expected Result: 0 findings ✅** **Why?** These organizations: - Use **enterprise-grade security practices** - Have **dedicated security teams** reviewing dependencies - Use **mainstream, well-vetted packages** (React, Express, TypeScript, etc.) - **Avoid niche/experimental packages** where compromises typically occur - **Regularly audit and update** their dependencies #### **🔍 如何验证扫描器是否正常工作:** ``` # 1. 使用已知受损包测试(应显示发现) python3 enhanced_npm_compromise_detector_phoenix.py --folders test_compromised_packages # 预期:17 个严重 + 6 个信息发现 # 2. 使用干净企业仓库测试(应显示 0 个发现) echo "https://github.com/optimizely/react-sdk" > clean_test.txt python3 enhanced_npm_compromise_detector_phoenix.py --repo-list clean_test.txt --light-scan # 预期:0 个发现(正确!) # 3. 检查扫描器数据库是否已加载 python3 -c "import json; data=json.load(open('compromised_packages_2025.json')); print(f'Monitoring {len(data[\"compromised_packages\"])} confirmed packages')" # 预期:监控 690 个已确认包 ``` #### **📊 “0 个发现”表示:** | Scenario | Findings | Meaning | Action | |----------|----------|---------|--------| | **Enterprise repos** (Optimizely, Facebook) | 0 | ✅ **Secure & Professional** | Continue development | | **Your production app** | 0 | ✅ **Good security posture** | Continue monitoring | | **Test files** (`test_compromised_packages`) | 17+ | ❌ **Contains test compromised packages** | Expected for testing | | **Legacy/experimental project** | 0 | ✅ **Either clean OR uses packages we don't monitor** | Review manually if concerned | #### **🚨 何时应关注“0 个发现”:** **Only worry if:** - You **expect** compromised packages (testing with `test_sample/`) - Scanner shows `Files scanned: 0` (indicates scanning issue) - You're using packages from the affected organizations (`@ctrl/*`, `@operato/*`, etc.) but getting 0 findings **Debug steps:** ``` # 检查是否找到文件 python3 enhanced_npm_compromise_detector_phoenix.py your_project --debug # 查看提示:“已扫描文件:X”,其中 X > 0 # 检查特定包 python3 -c " import json data = json.load(open('compromised_packages_2025.json')) pkg = '@ctrl/tinycolor' # Replace with your package if pkg in data['compromised_packages']: print(f'✅ {pkg} is monitored') print(f'Compromised versions: {data[\"compromised_packages\"][pkg][\"compromised_versions\"]}') else: print(f'❌ {pkg} is not in our database') " ``` #### **🔧 GitHub API 故障排查** **Common Issues and Solutions:** | Issue | Symptoms | Solution | |-------|----------|----------| | **Invalid GitHub Token** | `Bad credentials (401)` | Generate new token at https://github.com/settings/tokens | | **Rate Limit Exceeded** | `API rate limit exceeded` | Wait or use valid token for higher limits | | **Empty Downloaded Files** | `JSON parsing errors` | ✅ **Auto-fixed by fallback system** | | **Private Repository** | `Not Found (404)` | Ensure token has `repo` permission | **Fallback System Handles:** - ✅ Invalid/expired GitHub tokens -✅ API rate limit exceeded - ✅ Authentication failures - ✅ Empty file downloads - ✅ Network timeouts **When Fallback Won't Work:** - ❌ Private repositories (requires valid token) - ❌ Repositories with no NPM files - ❌ Repositories that don't exist ### **性能基准:** - Shell script: ~1-2 seconds for typical projects - Python basic scan: ~3-5 seconds for typical projects - Python full-tree: ~10-30 seconds (requires npm install first) ## 📊 示例输出 ### Shell 脚本输出: ``` 🚨 CRITICAL: Compromised package detected: @ctrl/tinycolor@4.1.2 in dependencies 🚨 CRITICAL: Compromised package detected: angulartics2@14.1.2 in dependencies ❌ Found 5 compromised package(s) in package.json Status: ❌ COMPROMISED PACKAGES DETECTED ``` ### Python 脚本输出: ``` [CRITICAL] Compromised package detected: @ctrl/tinycolor@4.1.2 [HIGH] Malicious URL detected: npmjs.help [MEDIUM] Crypto-related keywords detected: wallet, privatekey, crypto [MEDIUM] Suspicious code patterns detected: 5 patterns COMPROMISED PACKAGES FOUND: 5 POTENTIALLY COMPROMISED FOUND: 0 ``` ## 🔗 参考 - **Attack Vector**: Supply chain compromise targeting popular packages - **Impact**: Potential malicious code injection, data exfiltration, crypto wallet stealing - **Severity**: CRITICAL - **Date**: September 2025 ## 🤝 贡献 To add new compromised packages or improve detection: 1. Update `compromised_packages_2025.json` with new package data 2. Test with sample projects 3. Update documentation 4. Submit pull request with detailed description ## ⚖️ 许可证 This security tool is provided as-is for protection against supply chain attacks. Use responsibly and ensure you have proper authorization before scanning systems. ## 🆘 支持 For urgent security incidents or questions: - Create an issue in this repository - Include scan results and affected package information - Mark as urgent for critical security issues ## 📚 快速参考 ### **🚀 最常用命令** ``` # 每日快速检查 ./local-security-check.sh . # 部署前附带完整库详情 python3 enhanced_npm_compromise_detector_phoenix.py . --full-tree --detail-log --output pre-deploy-report.txt # 安全警报后的紧急扫描 python3 enhanced_npm_compromise_detector_phoenix.py . --full-tree --detail-log --output emergency-$(date +%Y%m%d).txt # 带清理的企业仓库批量扫描 python3 enhanced_npm_compromise_detector_phoenix.py --repo-list enterprise_repos.txt --light-scan --organize-folders --delete-local-files --enable-phoenix # 包含干净库的所有功能完整审计 python3 enhanced_npm_compromise_detector_phoenix.py --repo-list repos.txt --light-scan --organize-folders --delete-local-files --detail-log --enable-phoenix --import-all --output complete-audit.txt # 带自定义标签和自动回退的企业扫描 python3 enhanced_npm_compromise_detector_phoenix.py --repo-list repos.txt --light-scan --enable-phoenix --import-all --tag_vuln="Q4-audit,compliance" --tag_asset="production,critical" --output enterprise-scan.txt # 自动回退处理 GitHub API 故障(无需配置) python3 enhanced_npm_compromise_detector_phoenix.py --repo-list public_repos.txt --light-scan --import-all # 扫描所有可访问仓库(自动发现模式 - 新增!) python3 enhanced_npm_compromise_detector_phoenix.py . --pull-all --enable-phoenix --organize-folders --delete-local-files ``` ### **📊 退出代码参考** - `0` = ✅ Clean (no compromised packages) - `1` = 🚨 Compromised packages detected (IMMEDIATE ACTION REQUIRED) - `2` = ⚠️ Script error (check dependencies, file paths, permissions) ### **🚨 紧急检查清单** If you see compromised packages: 1. ⏹️ **STOP** - Don't ignore this 2. 🔍 **ANALYZE** - Run: `python3 npm_package_compromise_detector_2025.py . --full-tree --output emergency.txt` 3. 🧹 **CLEAN** - `npm cache clean --force && rm -rf node_modules` 4. 📋 **REVIEW** - Check `emergency.txt` for safe versions 5. 🔄 **UPDATE** - Modify package.json with safe versions 6. 🔧 **REINSTALL** - `npm install` 7. ✅ **VERIFY** - `./local-security-check.sh .` ### **💡 专业提示** - Run `./local-security-check.sh .` every morning - Add to your git pre-commit hooks - Use `--full-tree` for comprehensive audits - Save reports with timestamps for tracking - Integrate into CI/CD for automated protection ### **🏢 企业规模示例** **Scan entire organization (hundreds of repositories):** ``` # 1. 从 GitHub API 生成仓库列表 curl -H "Authorization: token $GITHUB_TOKEN" \ "https://api.github.com/orgs/your-org/repos?per_page=100&type=all" | \ jq -r '.[].clone_url' > org_repos.txt # 2. 使用 Phoenix 集成轻量扫描所有仓库 python3 enhanced_npm_compromise_detector_phoenix.py \ --repo-list org_repos.txt \ --light-scan \ --enable-phoenix \ --output "org_security_scan_$(date +%Y%m%d).txt" # 3. 或使用集成脚本完成完整工作流 ./enhanced-quick-check-with-phoenix.sh org_repos.txt \ --repo-list --light-scan --enable-phoenix ``` **CI/CD Pipeline Integration:** ``` # .github/workflows/npm-security-light-scan.yml name: NPM Security Light Scan on: schedule: - cron: '0 2 * * *' # Daily at 2 AM workflow_dispatch: jobs: security-scan: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Light Scan NPM Security env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # ⚠️ Replace with your actual Phoenix Security credentials PHOENIX_CLIENT_ID: ${{ secrets.PHOENIX_CLIENT_ID }} PHOENIX_CLIENT_SECRET: ${{ secrets.PHOENIX_CLIENT_SECRET }} PHOENIX_API_URL: ${{ secrets.PHOENIX_API_URL }} # Your Phoenix domain API endpoint run: | # Create repo list for organization echo "${{ github.repository_url }}" > current_repo.txt # Run light scan with Phoenix integration python3 enhanced_npm_compromise_detector_phoenix.py \ --repo-list current_repo.txt \ --light-scan \ --enable-phoenix \ --quiet ``` ### **📖 附加资源 - 📘 **[QUICK_START.md](QUICK_START.md)** - Comprehensive usage guide with GitHub Actions - 📄 **[COMMAND_REFERENCE.md](COMMAND_REFERENCE.md)** - Quick command reference card - ⚡ **[QUICK_CONFIG_GUIDE.md](QUICK_CONFIG_GUIDE.md)** - Enhanced fallback system & configuration - 🔗 **[PHOENIX_INTEGRATION_GUIDE.md](PHOENIX_INTEGRATION_GUIDE.md)** - Complete Phoenix integration guide - 🔧 **[PHOENIX_CREDENTIALS_SETUP.md](PHOENIX_CREDENTIALS_SETUP.md)** - Step-by-step credentials configuration - 💻 **[LOCAL_LAPTOP_USAGE_GUIDE.md](LOCAL_LAPTOP_USAGE_GUIDE.md)** - Local laptop usage with embedded credentials - 🍦 **[VANILLA_SCRIPT_USAGE_GUIDE.md](VANILLA_SCRIPT_USAGE_GUIDE.md)** - Using without Phoenix integration - 🎯 **[LOCAL_USAGE_DEMO.md](LOCAL_USAGE_DEMO.md)** - Complete local setup demo - 🗂️ **[ORGANIZED_FOLDERS_GUIDE.md](ORGANIZED_FOLDERS_GUIDE.md)** - GitHub pulls & results organization - 🌐 **[PULL_ALL_FEATURE_GUIDE.md](PULL_ALL_FEATURE_GUIDE.md)** - **NEW!** Auto-discover and scan all accessible repositories - 🎯 **[ZAPIER_CONFIRMED_PACKAGES_UPDATE.md](ZAPIER_CONFIRMED_PACKAGES_UPDATE.md)** - **NEW!** 10 Zapier packages update details - 📊 **[docs/RECURSIVE_SCANNING_GUIDE.md](docs/RECURSIVE_SCANNING_GUIDE.md)** - Recursive scanning capabilities - 🔍 **[TEST_VARIATIONS_SUMMARY.md](TEST_VARIATIONS_SUMMARY.md)** - Test variations guide (mobile, backend, frontend) **Remember**: Time is critical in supply chain attacks. Run these scans immediately and take action if compromised packages are detected.
标签:AMSI绕过, CI/CD安全, Cutter, GitHub自动化, GNU通用公共许可证, Llama, LNA, Node.js, NPM包安全, Phoenix Security, Sha1-Hulud, Shai Hulud, Shell脚本, 企业安全, 包完整性校验, 威胁检测, 安全应急响应, 安全扫描, 时序注入, 网络资产管理, 逆向工具