standujar/sha1-hulud-scanner

GitHub: standujar/sha1-hulud-scanner

一款轻量级 Bash 扫描器,用于检测 SHA1-HULUD pt 2 供应链攻击中 288+ 个被植入恶意代码的 npm 包。

Stars: 29 | Forks: 4

# SHA1-HULUD 扫描器 一个全面的 bash 扫描器,用于检测 SHA1-HULUD pt 2 供应链攻击中受损的 npm 包。 ## 🚨 关于 SHA1-HULUD pt 2 SHA1-HULUD pt 2 是一次针对 288+ 个 npm 包的供应链攻击,包括: - PostHog 包 (`@posthog/*`, `posthog-node` 等) - Zapier 包 (`@zapier/*`) - AsyncAPI 包 (`@asyncapi/*`) - Postman 包 (`@postman/*`) - ENS Domains 包 (`@ensdomains/*`, `ethereum-ens`) - MCP 包 (`mcp-use`, `@mcp-use/*`) - 以及更多... **更多信息:** [HelixGuard 博客文章](https://helixguard.ai/blog/malicious-sha1hulud-2025-11-24) ## ✨ 功能 - ✅ 扫描 SHA1-HULUD pt 2 中的 **288+ 个受损包** - ✅ 多包管理器支持:**npm**, **yarn**, **bun**, **pnpm** - ✅ 4 阶段扫描: - 直接依赖 (`package.json`) - 传递依赖 (`node_modules`) - Lockfiles (所有包管理器) - SHA1 标记检测 - ✅ 对合法包(如 `@aws-crypto/sha1-browser`)进行**误报过滤** - ✅ 检测到 SHA1 标记时显示**具体包名** - ✅ 清晰的颜色编码输出及可操作的补救步骤 ## 📦 安装 ``` git clone https://github.com/standujar/sha1-hulud-scanner.git cd sha1-hulud-scanner chmod +x sha1-hulud-scanner.sh ``` ## 🚀 用法 ``` ./sha1-hulud-scanner.sh ``` ### 示例 ``` # 扫描本地项目 ./sha1-hulud-scanner.sh /path/to/your/project # 扫描相对路径 ./sha1-hulud-scanner.sh ~/Projects/my-app # 扫描当前目录 ./sha1-hulud-scanner.sh . ``` ## 📊 输出示例 ``` 🔍 SHA1-HULUD Scanner v2.1 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 📁 Project: /path/to/project 📋 288 packages to scan 📋 5 known false positives to exclude 🔎 [1/4] Scanning direct dependencies (package.json)... ✓ No compromised packages in direct dependencies 🔎 [2/4] Scanning node_modules (transitive)... ✓ No compromised packages installed 🔎 [3/4] Scanning lockfiles... ✓ No compromised packages in lockfiles 🔎 [4/4] Scanning for SHA1-HULUD markers... 📄 Checking packages with 'sha1' in name (bun.lock): ℹ️ @aws-crypto/sha1-browser (legitimate package - skipped) ✓ No suspicious SHA1 markers (1 legitimate packages excluded) ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ✅ NO COMPROMISE DETECTED Your project is clean — no SHA1-HULUD packages found. 📊 Statistics: • 288 packages scanned • 0 compromised packages ``` ## 🛡️ 检查内容 ### 阶段 1:直接依赖 扫描 `package.json` 中 `dependencies` 和 `devDependencies` 内的所有受损包。 ### 阶段 2:Node Modules 检查受损包是否实际安装在 `node_modules/` 中(包括传递依赖)。 ### 阶段 3:Lockfiles 扫描所有包管理器的 lockfiles: - `package-lock.json` (npm) - `yarn.lock` (yarn) - `bun.lock` (bun - 二进制格式) - `pnpm-lock.yaml` (pnpm) ### 阶段 4:SHA1 标记 检测名称中包含 "sha1" 的包,这是攻击的特征之一。过滤掉已知的误报(如 AWS 加密包)。 ## ⚠️ 如果发现受损包 扫描器将显示详细的补救步骤: 1. 🛑 **立即停止**所有构建/CI 2. 🔒 **隔离** CI runners(如果是自托管) 3. 🔑 **轮换所有**敏感密钥: - GitHub tokens (PAT, fine-grained, App) - AWS credentials (如果是非 OIDC) - NPM tokens - API keys (PostHog, Stripe 等) 4. 🗑 **删除** `node_modules` 和 lockfiles 5. 📝 **更新**依赖项至干净的版本 6. 🔍 **审计**过去 48 小时的 CI 日志 ## 📋 系统要求 - Bash 4.0+ - `grep`, `strings`, `sed` (标准 Unix 工具) - 项目中存在包管理器 lockfiles ## 🔧 已知误报 扫描器自动排除以下合法包: - `@aws-crypto/sha1-browser` - 用于 S3 校验和的 AWS SDK - `@aws-crypto/sha256-browser` - AWS 加密工具 - `@aws-crypto/sha256-js` - AWS 加密工具 - `sha1` - 合法加密库 - `sha.js` - 合法加密库 ## 📝 包列表 扫描器根据 `sha1-hulud-packages.txt` 中定义的 288 个受损包进行检查。 要更新列表: ``` # 编辑 sha1-hulud-packages.txt # 每行一个 package,支持使用 # 注释 ``` ## 🤝 贡献 欢迎贡献!请: 1. Fork 本仓库 2. 创建一个功能分支 3. 提交 pull request ## 📜 许可证 MIT 许可证 - 随意使用此扫描器保护您的项目。 ## 🔗 资源 - [HelixGuard SHA1-HULUD 分析](https://helixguard.ai/blog/malicious-sha1hulud-2025-11-24) - [npm 咨询数据库](https://npmjs.com/advisories) ## ⚡ 快速开始 ``` # Clone 并运行 git clone https://github.com/standujar/sha1-hulud-scanner.git cd sha1-hulud-scanner chmod +x sha1-hulud-scanner.sh ./sha1-hulud-scanner.sh /path/to/your/project ``` **保持安全!定期扫描您的项目。** 🛡️
标签:AsyncAPI, Bun, DNS 反向解析, ENS, HelixGuard, IP 地址批量处理, MCP, Node.js安全, NPM包检测, PNPM, PostHog, Postman, SHA1-HULUD, Yarn, Zapier, 以太坊, 依赖混淆, 包管理器, 应用安全, 开发安全, 恶意软件扫描, 文档安全, 统一API, 软件开发工具包, 防御框架