Cobenian/shai-hulud-detect

GitHub: Cobenian/shai-hulud-detect

一款轻量级 Bash 工具,专门用于检测 Shai-Hulud 系列 npm 供应链攻击在项目中留下的入侵指标。

Stars: 314 | Forks: 66

# Shai-Hulud NPM 供应链攻击检测器 [![License](https://img.shields.io/badge/license-MIT-green)](LICENSE) [![Shell](https://img.shields.io/badge/shell-Bash%205.0%2B-blue)](#requirements) [![Status](https://img.shields.io/badge/status-Active-success)](../../) [![Contributions](https://img.shields.io/badge/contributions-Welcome-orange)](CONTRIBUTING.md) [![Last Commit](https://img.shields.io/github/last-commit/Cobenian/shai-hulud-detect)](https://github.com/Cobenian/shai-hulud-detect/commits/main) [![Security Tool](https://img.shields.io/badge/type-Security%20Tool-red)](#overview) sshd 一个 Bash 工具,帮助您发现 2025 年 9 月至 2026 年 2 月期间已知的 npm 供应链攻击痕迹——包括 Shai-Hulud 自我复制蠕虫、chalk/debug 加密货币盗窃事件、“Shai-Hulud: The Second Coming”虚假 Bun 运行时攻击,以及 2026 年 2 月的 SANDWORM_MODE 活动。它交叉检查多个活动中的 1,700 多个已确认的恶意软件包版本,并检查您项目中最相关的危险信号。 ## 概述 涵盖 2025 年 9 月至 2026 年 2 月期间发生的多次 npm 供应链攻击: ### **Chalk/Debug 加密货币盗窃攻击** (2025 年 9 月 8 日) - **范围**:18+ 个软件包,每周下载量超过 20 亿次 - **攻击**:浏览器中的加密货币钱包地址替换 - **持续时间**:检测前持续约 2 小时 - **软件包**:chalk, debug, ansi-styles, color-*, supports-* 等 - **方法**:劫持 XMLHttpRequest 以窃取加密货币交易 ### **Shai-Hulud 自我复制蠕虫** (2025 年 9 月 14-16 日) - **范围**:跨多个命名空间的 517+ 个软件包 - **攻击**:凭证窃取和自我传播 - **方法**:使用 Trufflehog 扫描机密,将窃取的数据发布到 GitHub - **传播**:使用窃取的 npm token 进行自我复制 - **软件包**:@ctrl/*, @crowdstrike/*, @operato/* 等 ### **Shai-Hulud: The Second Coming** (2025 年 11 月 24 日) - **范围**:300+ 个软件包,每周数百万次下载 - **攻击**:虚假 Bun 运行时安装与凭证窃取 - **方法**:使用虚假的 `setup_bun.js` preinstall 钩子下载并执行 TruffleHog - **渗出**:创建名为 "SHA1HULUD" 的 GitHub Actions runner 和描述为 "Sha1-Hulud: The Second Coming" 的仓库 - **软件包**:@zapier/*, @posthog/*, @asyncapi/*, @postman/*, @ensdomains/* 等 - **文件**:`setup_bun.js`, `bun_environment.js` (10MB+ 混淆载荷), `actionsSecrets.json` (双重 Base64 编码) - **工作流**:使用 SHA1HULUD runner 的 `.github/workflows/formatter_*.yml` 文件 ### **Shai-Hulud: Golden Path 变体** (2025 年 12 月 28 日) - **范围**:Second Coming 攻击的延续,文件已重命名 - **攻击**:相同的虚假 Bun 运行时技术,使用混淆的文件名 - **方法**:使用 `bun_installer.js` 和 `environment_source.js` (从 `setup_bun.js` 和 `bun_environment.js` 重命名) - **渗出**:用于暂存窃取凭证的混淆 JSON 文件:`3nvir0nm3nt.json`, `cl0vd.json`, `c9nt3nts.json`, `pigS3cr3ts.json` - **软件包**:@vietmoney/react-big-calendar (版本 0.26.0-0.26.2) - **仓库描述**:"Goldox-T3chs: Only Happy Girl" ### **SANDWORM_MODE AI 工具链投毒** (2026 年 2 月 17 日) - **范围**:19 个已确认的恶意 npm 软件包 + 工作流传播 IoC - **攻击**:Typosquat(拼写仿冒)AI 工具链软件包和受污染的 CI 工作流分发 - **方法**:恶意 GitHub Action `ci-quality/code-quality-check@v1` 注入 `.github/workflows/quality.yml` - **威胁行为者别名**:`official334`, `javaorg` - **软件包**:`claud-code`, `cloude-code`, `cloude`, `opencraw`, `veim`, `yarsg` 等 - **来源**:[Socket.dev 分析](https://socket.dev/blog/sandworm-mode-npm-worm-ai-toolchain-poisoning) ## 快速开始 ``` # 克隆 repository git clone https://github.com/Cobenian/shai-hulud-detect cd shai-hulud-detect # 使 script 可执行 chmod +x shai-hulud-detector.sh # 扫描你的项目以查找 Shai-Hulud 指标 ./shai-hulud-detector.sh /path/to/your/project # 用于全面的安全扫描 ./shai-hulud-detector.sh --paranoid /path/to/your/project # 将发现结果保存到 log 文件以供审查或作为 CI/CD artifacts ./shai-hulud-detector.sh --save-log report.log /path/to/your/project # 检查 exit code 以进行 CI/CD 集成 ./shai-hulud-detector.sh /path/to/your/project echo "Exit code: $?" # 0=clean, 1=high-risk, 2=medium-risk ``` **CI/CD 集成**:脚本返回适当的退出代码(0=干净,1=高风险,2=中风险),可无缝集成到自动化安全流水线中。 ## 检测内容 ### 高风险指标 - **恶意工作流文件**:`.github/workflows/` 中的 `shai-hulud-workflow.yml` 文件(2025 年 9 月),使用 SHA1HULUD runner 的 `formatter_*.yml` 文件(2025 年 11 月),以及 SANDWORM_MODE 工作流 IoC,包括 `ci-quality/code-quality-check@v1` 和受污染的 `quality.yml` 工作流引用(2026 年 2 月) - **已知的恶意文件哈希**:匹配来自不同 Shai-Hulud 蠕虫变体 (V1-V7) 的 7 个 SHA-256 哈希之一的文件,源自 [Socket.dev 的全面攻击分析](https://socket.dev/blog/ongoing-supply-chain-attack-targets-crowdstrike-npm-packages) - **2025 年 11 月 Bun 攻击文件**:`setup_bun.js`/`bun_installer.js`(虚假 Bun 运行时安装程序)和 `bun_environment.js`/`environment_source.js`(10MB+ 混淆凭证窃取载荷) - **混淆的渗出文件**:`3nvir0nm3nt.json`, `cl0vd.json`, `c9nt3nts.json`, `pigS3cr3ts.json`(Golden Path 变体 - 暂存窃取的凭证以备渗出) - **受损的软件包版本**:来自多次攻击(2025 年 9 月至 2026 年 2 月)的 1,700 多个软件包的特定版本 - **可疑的 postinstall 钩子**:package.json 文件中的 postinstall 脚本包含 curl、wget、eval 命令或虚假 Bun 安装(`"preinstall": "node setup_bun.js"`) - **Trufflehog 活动**:包含 trufflehog 引用、凭证扫描模式或 2025 年 11 月增强模式(自动化 TruffleHog 下载和执行)的文件 - **Shai-Hulud 仓库**:名为 "Shai-Hulud"(用于数据渗出)或描述为 "Sha1-Hulud: The Second Coming" 或 "Goldox-T3chs: Only Happy Girl" 的 Git 仓库 - **机密渗出文件**:带有双重 Base64 编码凭证的 `actionsSecrets.json` 文件(2025 年 11 月) - **SHA1HULUD GitHub Actions Runner**:使用恶意 runner 窃取凭证的 GitHub Actions 工作流 - **SANDWORM_MODE 工作流 IoC**:包含 `ci-quality/code-quality-check@v1`、行为者别名(`official334`, `javaorg`)或相关传播模块引用的工作流文件 ### 中风险指标 - **可疑内容模式**:引用 `webhook.site` 和恶意端点 `bb8ca5f6-4175-45d2-b042-fc9ebb8170b7` - **可疑 git 分支**:名为 "shai-hulud" 的分支 - **Semver 模式匹配**:由于插入符 (^) 或波浪号 (~) 版本模式,可能在 `npm update` 期间受到破坏的软件包 ### 低风险指标 - **命名空间警告**:来自已知受影响命名空间(@ctrl, @crowdstrike, @art-ws, @ngx, @nativescript-community)但版本安全的软件包 ### 软件包检测方法 脚本从外部文件 (`compromised-packages.txt`) 加载受损软件包列表,该文件包含: - **1,700+ 个已确认的受损软件包版本** 及确切版本号(2025 年 9 月至 2026 年 2 月的活动) - **18+ 个受影响的命名空间**,用于更广泛地检测来自受损维护者账户的软件包 ### 维护和更新软件包列表 **重要**:Shai-Hulud 攻击具有自我复制能力,意味着可能仍会发现新的受损软件包。受损软件包列表存储在 `compromised-packages.txt` 中,以便于维护: - **格式**:`package_name:version`(每行一个) - **注释**:以 `#` 开头的行将被忽略 - **更新**:随着发现新的受损软件包,可以更新该文件 - **回退**:如果文件丢失,脚本将使用核心嵌入式列表 ### 及时了解新发现的受损软件包 定期查看这些安全公告,了解新发现的受损软件包: - **[StepSecurity Blog](https://www.stepsecurity.io/blog/ctrl-tinycolor-and-40-npm-packages-compromised)** - 原始综合分析 - **[Semgrep Security Advisory](https://semgrep.dev/blog/2025/security-advisory-npm-packages-using-secret-scanning-tools-to-steal-credentials/)** - 详细技术分析 - **[JFrog Security Research](https://jfrog.com/blog/shai-hulud-npm-supply-chain-attack-new-compromised-packages-detected/)** - 持续检测新软件包 - **[Wiz Security Blog](https://www.wiz.io/blog/shai-hulud-npm-supply-chain-attack)** - 带有软件包附录的攻击分析 - **[Socket.dev Blog](https://socket.dev/blog/ongoing-supply-chain-attack-targets-crowdstrike-npm-packages)** - CrowdStrike 软件包分析 - **[Socket.dev Blog](https://socket.dev/blog/sandworm-mode-npm-worm-ai-toolchain-poisoning)** - SANDWORM_MODE AI 工具链投毒活动 - **[HelixGuard](https://helixguard.ai/blog/malicious-sha1hulud-2025-11-24)** - Second Coming 分析 ### 如何添加新发现的软件包 1. 查看上面的安全公告以获取新的受损软件包 2. 以 `package_name:version` 的格式将它们添加到 `compromised-packages.txt` 中 3. 测试脚本以确保检测有效 4. 考虑将更新贡献回本仓库 **覆盖范围说明**:2025 年 9 月至 2026 年 2 月的多次活动总共影响了 1,700 多个软件包。我们的检测旨在提供跨 Shai-Hulud 蠕虫(517+ 个软件包)、Chalk/Debug 加密货币盗窃(26+ 个软件包)、“Shai-Hulud: The Second Coming”虚假 Bun 运行时攻击(1,100+ 个软件包)、Golden Path 变体以及 2026 年 2 月 SANDWORM_MODE 活动的**全面覆盖**。 ### 核心模式 vs 偏执模式 **核心模式(默认)** - 专门针对 Shai-Hulud 攻击指标 - 推荐给大多数检查此特定威胁的用户 - 输出清晰、专注,误报最少 **偏执模式 (`--paranoid`)** - 包含所有核心 Shai-Hulud 检测 **外加** 额外的安全检查 - 增加 typosquatting(拼写仿冒)检测和网络渗出模式分析 - **重要**:偏执功能是通用安全工具,并非 Shai-Hulud 特有 - 可能会从合法代码中产生更多误报 - 适用于全面的安全审计 **Semver 范围检查 (`--check-semver-ranges`)** - 检查 package.json 中的 semver 范围(^, ~)是否可能解析为受损版本 - 在两种情况下都报告低风险(关于潜在风险的信息性警告) - 用于识别可能仍包含恶意版本的私有 npm 缓存中的潜在风险 ## 环境要求 - macOS 或类 Unix 系统 - **Bash 5.0 或更高版本**(关联数组和性能功能所需) - macOS:`brew install bash` 然后使用 `/opt/homebrew/bin/bash ./shai-hulud-detector.sh` 运行 - Linux:大多数现代发行版默认包含 Bash 5.x - 检查您的版本:`bash --version` - 标准 Unix 工具:`find`, `grep`, `shasum` ### Grep 工具选择 脚本按以下优先顺序自动选择最快的可用 grep 工具: 1. **git grep**(默认) - 使用基于 DFA 的正则引擎,无回溯,对于我们的模式最快(比 ripgrep 快约 40%) 2. **ripgrep**(回退) - 同样基于 DFA,性能卓越 3. **grep**(最后手段) - 可能在复杂模式上经历灾难性回溯 您可以使用标志覆盖自动选择: - `--use-git-grep` - 强制使用 git grep - `--use-ripgrep - 强制使用 ripgrep - `--use-grep` - 强制使用标准 grep **为什么 git grep 是默认**:我们的测试表明,在大型代码库上 git grep 比 ripgrep 快约 40%。两者都使用基于 DFA 的正则引擎,避免了标准 grep 在复杂模式上挂起时的灾难性回溯。 ## 输出解读 ### 干净的系统 ``` ✅ No indicators of Shai-Hulud compromise detected. Your system appears clean from this specific attack. ``` ### 受损的系统 脚本将显示: - **🚨 高风险**:确定的入侵指标 - **⚠️ 中风险**:需要人工审查的可疑模式 - **摘要**:发现的问题计数 ### 如果发现问题该怎么办 #### 高风险问题 - **需要立即采取行动** - 更新或移除受损软件包 - 审查并移除恶意工作流文件 - 扫描凭证盗窃 - 考虑进行全面的系统审计 #### 中风险问题 - **需要人工调查** - 审查标记文件的合法性 - 检查 webhook.site 的使用是否有意为之 - 验证 git 分支用途 ## 用于 CI/CD 集成的退出代码 脚本返回特定的退出代码以实现适当的 CI/CD 流水线集成: - **退出代码 0**:干净系统 - 无重大安全发现 - **退出代码 1**:检测到高风险发现 - 需要立即采取行动 - **退出代码 2**:检测到中风险发现 - 需要人工调查 ### CI/CD 流水线示例 #### GitHub Actions ``` - name: Security Scan with Shai-Hulud Detector run: | chmod +x ./shai-hulud-detector.sh ./shai-hulud-detector.sh . # Pipeline will automatically fail on exit codes 1 or 2 ``` #### GitLab CI ``` security_scan: script: - chmod +x ./shai-hulud-detector.sh - ./shai-hulud-detector.sh . # Job fails automatically on non-zero exit codes ``` #### Jenkins ``` stage('Security Scan') { steps { sh ''' chmod +x ./shai-hulud-detector.sh ./shai-hulud-detector.sh . ''' } // Build fails automatically on non-zero exit codes } ``` #### 按退出代码自定义处理 ``` #!/bin/bash ./shai-hulud-detector.sh . exit_code=$? case $exit_code in 0) echo "✅ Security scan passed - no issues found" ;; 1) echo "🚨 CRITICAL: High-risk security issues found - blocking deployment" exit 1 ;; 2) echo "⚠️ WARNING: Medium-risk issues found - review required" # Could choose to continue with warnings ;; esac ``` ### 将发现保存到日志文件 使用 `--save-log FILE` 将所有检测到的文件路径保存到结构化日志文件中: ``` ./shai-hulud-detector.sh --save-log findings.log /path/to/project ``` 日志文件包含按严重程度分组的文件路径: ``` # HIGH /path/to/malicious-workflow.yml /path/to/compromised-package.json # MEDIUM /path/to/suspicious-content.js # LOW /path/to/namespace-warning.json ``` 此格式专为以下用途设计: - **CI/CD 制品**:将扫描结果存储为构建制品以供审查 - **编程解析**:易于使用简单脚本解析 - **全面覆盖**:包含所有发现,无显示截断 ## 测试 仓库包含一个包含 32 个测试用例的综合测试套件。使用自动化测试运行器验证所有用例: ``` # 运行完整 test suite (推荐) ./run-tests.sh # Test suite 验证所有 test cases 的预期 exit codes 和 risk levels # Exit codes: 0=clean, 1=high-risk, 2=medium-risk ``` 您也可以手动运行单个测试用例: ``` # 测试 clean project (应显示无问题) ./shai-hulud-detector.sh test-cases/clean-project # 测试受感染 project (应显示多个问题) ./shai-hulud-detector.sh test-cases/infected-project # 测试 November 2025 "Shai-Hulud: The Second Coming" 攻击 (应对所有新模式显示 HIGH risk) ./shai-hulud-detector.sh test-cases/november-2025-attack # 测试混合 project (应显示 medium risk 问题) ./shai-hulud-detector.sh test-cases/mixed-project # 测试 namespace warnings (应仅显示 LOW risk namespace warnings) ./shai-hulud-detector.sh test-cases/namespace-warning # 测试 semver 匹配 (应对可能匹配受损版本的 packages 显示 MEDIUM risk) ./shai-hulud-detector.sh test-cases/semver-matching # 测试合法 crypto libraries (应仅显示 MEDIUM risk) ./shai-hulud-detector.sh test-cases/legitimate-crypto # 测试 chalk/debug 攻击模式 (应显示 HIGH risk 受损 packages + MEDIUM risk crypto 模式) ./shai-hulud-detector.sh test-cases/chalk-debug-attack # 测试常见 crypto libraries (不应触发 HIGH risk 误报) ./shai-hulud-detector.sh test-cases/common-crypto-libs # 测试合法 XMLHttpRequest 修改 (应仅显示 LOW risk) ./shai-hulud-detector.sh test-cases/xmlhttp-legitimate # 测试带有 crypto 模式的恶意 XMLHttpRequest (应显示 HIGH risk crypto 窃取 + MEDIUM risk XMLHttpRequest 模式) ./shai-hulud-detector.sh test-cases/xmlhttp-malicious # 测试 lockfile 误报 (尽管其他 package 拥有受损版本,应显示无问题) ./shai-hulud-detector.sh test-cases/lockfile-false-positive # 测试 lockfile 中的实际受损 package (应显示 HIGH risk) ./shai-hulud-detector.sh test-cases/lockfile-compromised # 测试具有安全 lockfile 版本的 packages (应显示 LOW risk 及 lockfile 保护消息) ./shai-hulud-detector.sh test-cases/lockfile-safe-versions # 测试混合 lockfile 场景 (应对受损项显示 HIGH risk + 对安全项显示 LOW risk) ./shai-hulud-detector.sh test-cases/lockfile-comprehensive-test # 测试无 lockfile 的 packages (应对潜在更新风险显示 MEDIUM risk) ./shai-hulud-detector.sh test-cases/no-lockfile-test # 测试 paranoid 模式下的 typosquatting 检测 (应显示 MEDIUM risk typosquatting warnings) ./shai-hulud-detector.sh --paranoid test-cases/typosquatting-project # 测试 paranoid 模式下的网络渗出检测 (应显示 HIGH risk 凭证收集 + MEDIUM risk 网络模式) ./shai-hulud-detector.sh --paranoid test-cases/network-exfiltration-project # 测试 paranoid 模式下的 clean project (应显示无问题 - 验证无误报) ./shai-hulud-detector.sh --paranoid test-cases/clean-project # 测试 semver 通配符解析 (应正确处理 4.x, 1.2.x 模式且无错误) ./shai-hulud-detector.sh test-cases/semver-wildcards # 测试 discussion workflow 检测 (应对恶意 discussion-triggered workflows 显示 CRITICAL risk) ./shai-hulud-detector.sh test-cases/discussion-workflows # 测试 SANDWORM_MODE workflow IOC 检测 (应对中毒的 ci-quality action 使用显示 HIGH risk) ./shai-hulud-detector.sh test-cases/sandworm-mode-workflow # 测试 GitHub Actions runner 检测 (应对 SHA1HULUD self-hosted runners 显示 CRITICAL risk) ./shai-hulud-detector.sh test-cases/github-actions-runners # 测试 file hash 验证 (应根据恶意 hashes 验证良性文件) ./shai-hulud-detector.sh test-cases/hash-verification # 测试破坏性模式检测 (应对数据破坏命令显示 CRITICAL risk) ./shai-hulud-detector.sh test-cases/destructive-patterns ``` ### 偏执模式测试 `--paranoid` 标志启用了 Shai-Hulud 特定检测之外的额外安全检查: - **Typosquatting 检测**:识别名称与流行软件包相似的软件包(例如 "raect" 而不是 "react","lodsh" 而不是 "lodash") - **网络渗出模式**:检测可疑域名(webhook.site, pastebin.com)、硬编码 IP 地址、到外部端点的 WebSocket 连接 - **增强安全审计**:适用于全面的项目安全审查 **注意**:偏执模式可能会从合法代码模式中产生更多误报,因此请仔细审查发现。 ## 工作原理 脚本执行以下检查: 1. **软件包数据库加载**:从 `compromised-packages.txt` 加载 1,700 多个受损软件包到 O(1) 查找映射中 2. **工作流检测**:搜索 `shai-hulud-workflow.yml` 文件(2025 年 9 月)、带有 SHA1HULUD runner 的 `formatter_*.yml` 文件(2025 年 11 月)以及 SANDWORM_MODE 工作流 IoC(2026 年 2 月) 3. **哈希验证**:针对 7 个已知的恶意 bundle.js 变体 (V1-V7) 计算 SHA-256 哈希 4. **软件包分析**:解析 `package.json` 文件以查找受损版本和受影响的命名空间 5. **Semver 范围检查**(使用 `--check-semver-ranges` 选择加入):检查版本范围是否可能解析为受损版本 6. **Postinstall 钩子检测**:识别包含 curl、wget、eval 或虚假 Bun 模式的可疑 postinstall/preinstall 脚本 7. **内容扫描**:搜索可疑 URL、webhook 端点和恶意模式 8. **加密货币盗窃检测**:识别钱包替换模式、XMLHttpRequest 劫持和加密货币盗窃函数 9. **Trufflehog 活动检测**:查找凭证扫描工具和机密窃取模式 10. **Git 分析**:检查可疑的分支名称(“shai-hulud”) 11. **仓库检测**:识别 “Shai-Hulud”、“Second Coming” 和 “Goldox-T3chs” 仓库模式 12. **2025 年 11 月 Bun 攻击检测**:识别 `setup_bun.js`/`bun_installer.js` 和 `bun_environment.js`/`environment_source.js` 攻击文件 13. **GitHub Actions Runner 检测**:识别恶意的 SHA1HULUD runner 14. **Discussion 工作流检测**:识别在 discussion 事件上触发的工作流(隐蔽持久性) 15. **破坏性载荷检测**:识别破坏性回退模式(`rm -rf`, `fs.rmSync` 等) 16. **Lockfile 完整性检查**:分析 package-lock.json、yarn.lock 和 pnpm-lock.yaml 以查找受损软件包 17. **Typosquatting 检测**(偏执模式):识别名称与流行软件包相似的软件包 18. **网络渗出检测**(偏执模式):检测可疑域名和硬编码 IP 19. **混淆渗出检测**:识别 Golden Path 变体暂存文件(`3nvir0nm3nt.json`, `cl0vd.json` 等) ## 局限性 - **哈希检测**:仅检测与 7 个已知恶意哈希完全匹配的文件 - **软件包版本**:检测特定的受损版本;在软件包列表更新之前,可能无法检测到新变体 - **误报**:合法使用 webhook.site、Trufflehog 或 postinstall 钩子可能会触发警报 - **蠕虫演变**:可能会出现具有不同签名的新变体 - **Semver 范围**:`--check-semver-ranges` 标志仅供参考;受损版本大多已从 npm 下架 ## 安全说明 此脚本仅用于**检测**。它不会: - 自动移除恶意代码 - 修复受损软件包 - 防止未来的攻击 请务必手动验证发现并采取适当的补救措施。 ## 参考资料 ### 主要来源 - [StepSecurity Blog: CTRL, tinycolor and 40 NPM packages compromised](https://www.stepsecurity.io/blog/ctrl-tinycolor-and-40-npm-packages-compromised) - [JFrog: New compromised packages in largest npm attack in history](https://jfrog.com/blog/new-compromised-packages-in-largest-npm-attack-in-history/) - [Aikido: NPM debug and chalk packages compromised](https://www.aikido.dev/blog/npm-debug-and-chalk-packages-compromised) - [Semgrep Security Advisory: NPM packages using secret scanning tools to steal credentials](https://semgrep.dev/blog/2025/security-advisory-npm-packages-using-secret-scanning-tools-to-steal-credentials/) - [Aikido: S1ngularity-nx attackers strike again](https://www.aikido.dev/blog/s1ngularity-nx-attackers-strike-again) - [Aikido: Shai-Hulud strikes again - The Golden Path](https://www.aikido.dev/blog/shai-hulud-strikes-again---the-golden-path) ### 其他资源 - [Socket: Ongoing supply chain attack targets CrowdStrike npm packages](https://socket.dev/blog/ongoing-supply-chain-attack-targets-crowdstrike-npm-packages) - [Ox Security: NPM 2.0 hack: 40+ npm packages hit in major supply chain attack](https://www.ox.security/blog/npm-2-0-hack-40-npm-packages-hit-in-major-supply-chain-attack/) - [Phoenix Security: NPM tinycolor compromise](https://phoenix.security/npm-tinycolor-compromise/) ## 贡献 我们欢迎对代码、文档、测试和覆盖的软件包进行改进。 ### 如何贡献 #### 添加新受损软件包 1. **Fork 仓库** 在 GitHub 上,然后克隆您的 fork: git clone https://github.com/YOUR_USERNAME/shai-hulud-detect.git cd shai-hulud-detect 2. **更新软件包列表** - 以 `package_name:version` 的格式将新软件包添加到 `compromised-packages.txt` - 包含您发现受损软件包的来源/参考 3. **测试您的更改** ./run-tests.sh # 所有 37 个测试都应通过 4. **提交 Pull Request** - 推送到您的 fork 并向上游仓库提交 PR - 包含信息来源(安全公告、博客文章等) #### 其他贡献 - **错误修复**:报告并修复检测准确性问题 - **新 IoC**:添加对其他入侵指标检测 - **文档**:提高清晰度并添加示例 - **测试用例**:为边缘情况添加新的测试场景 ### 贡献指南 - **验证来源**:仅添加由信誉良好的安全公司确认的软件包 - **充分测试**:确保更改不会破坏现有功能 - **文档更改**:更新相关文档和变更日志 - **遵循模式**:匹配现有的代码风格和组织结构 - **安全第一**:切勿在测试用例中包含实际的恶意代码 ### 报告新受损软件包 如果您无法提交 PR,您仍然可以通过报告新的受损软件包来提供帮助: 1. 打开一个标题为 “New compromised package: [package-name]” 的 issue 2. 包含软件包名称、版本和信息来源 3. 提供安全公告或报告的链接 4. 我们将审查并将验证过的软件包添加到检测列表中 ## 发布说明 有关更改和版本历史的完整列表,请参阅 [CHANGELOG.md](CHANGELOG.md)。 ## 许可证 本项目根据 MIT 许可证授权 - 详情请参见 [LICENSE](LICENSE) 文件。
标签:Cutter, DevSecOps, DNS 反向解析, IOC检测, Node.js安全, NPM供应链攻击, Shai-Hulud, StruQ, 上游代理, 依赖混淆, 入侵指标, 凭据窃取, 前端安全, 加密货币窃取, 包劫持, 威胁情报, 应用安全, 开发者工具, 文档安全, 沙虫攻击, 自复制蠕虫, 软件供应链安全, 软件开发工具包, 远程方法调用