qi-scape/scan-shai-hulud

GitHub: qi-scape/scan-shai-hulud

一款零依赖的 Bash 脚本,用于快速检测系统是否受到 CVE-2026-45321「Mini Shai-Hulud」大规模供应链攻击的影响,覆盖恶意包、C2 通信、持久化后门和 Git 历史篡改等八大维度的排查。

Stars: 1 | Forks: 1

# scan-shai-hulud 一个快速、零依赖的 Bash 扫描器,用于检测您的机器是否受到 **CVE-2026-45321 "Mini Shai-Hulud"** 供应链攻击的影响。 2026 年 5 月 11 日,横跨 TanStack、Mistral AI、UiPath、OpenSearch 和 Guardrails AI 的超过 **170 个 npm 包**和 **2 个 PyPI 包**同时被注入恶意代码。该恶意负载会窃取 AWS 凭证、GitHub token、npm token、Vault 密钥和 SSH 密钥——并且包含一个通过 CI/CD 管道进行传播的自传播蠕虫。 ## 快速开始 ``` curl -fsSL https://raw.githubusercontent.com/qi-scape/scan-shai-hulud/main/scan-shai-hulud.sh | bash ``` 或者克隆并运行: ``` git clone https://github.com/qi-scape/scan-shai-hulud.git cd scan-shai-hulud chmod +x scan-shai-hulud.sh ./scan-shai-hulud.sh ``` ## 用法 ``` # 扫描当前目录 + 系统级持久性检查 ./scan-shai-hulud.sh # 扫描特定项目 ./scan-shai-hulud.sh ~/my-project # 遍历整个 home 目录的深度扫描 ./scan-shai-hulud.sh --full ``` ## 检查内容 该扫描器运行 8 个步骤: | 步骤 | 描述 | |------|-------------| | **持久化** | macOS LaunchAgent(文件 + `launchctl` 加载状态)、Linux systemd 服务、防僵停脚本、`.claude/` 和 `.vscode/` 负载投放、注入的 GitHub Actions 工作流、`/tmp` 投放器 | | **恶意文件** | `router_init.js`、`tanstack_runner.js`、`router_runtime.js`、`gh-token-monitor.sh`、`transformers.pyz`——根据 3 个已知 SHA-256 哈希值进行验证 | | **C2 指标** | 扫描配置文件(`.npmrc`、`.bashrc`、`.zshrc`、`.env`)和项目源代码,查找 6 个 C2 域名及活动标记 | | **npm 包** | 所有 `node_modules` 树、npm 全局根目录、lockfile(`package-lock.json`、`yarn.lock`、`pnpm-lock.yaml`、`bun.lock`)、npm 缓存——进行精确的按包匹配(42 个特定的 @tanstack router 包,而非整个范围) | | **PyPI 包** | 跨所有 Python/conda 环境执行 `pip show` + `requirements.txt`、`pyproject.toml`、`Pipfile`、`poetry.lock` | | **Git 仓库** | 历史记录中的恶意 commit hash、`dependabout/*/setup-formatter` 死信分支、死信 commit 作者、注入的 `codeql_analysis.yml` | | **Shell 历史与环境** | Bash/Zsh/Fish 历史记录中用于查找负载执行痕迹、shell RC 文件中的注入内容、用于查找 C2 域名的环境变量 | | **网络与 Token** | 通过 `lsof` 识别与 C2 的活动连接、`/etc/hosts`、`~/.ssh/known_hosts`、npm token 列表 | ## 受影响的包 横跨 15 个作用域的 **170 个 npm 包**: - **@tanstack**(42 个包)——仅限 router 生态系统(`react-router`、`vue-router`、`solid-router`、`router-core` 等) - **@uipath**(65 个包)——完整的自动化工具套件 - **@squawk**(20 个包)——航空数据包 - **@tallyui**(10 个包)——POS/连接器包 - **@mistralai**(3 个包)——`mistralai`、`mistralai-azure`、`mistralai-gcp` - **@opensearch-project**(1 个包)——`opensearch` - **@beproduct**、**@draftauth**、**@draftlab**、**@supersurkhet**、**@taskflow-corp**、**@tolka**、**@mesadev**、**@ml-toolkit-ts**、**@dirigible-ai** - **无作用域**:`agentwork-cli`、`cmux-agent-mcp`、`cross-stitch`、`git-branch-selector`、`git-git-git`、`ml-toolkit-ts`、`nextmove-mcp`、`safe-action`、`ts-dna`、`wot-api` **2 个 PyPI 包**: - `mistralai==2.4.6` - `guardrails-ai==0.10.1` ## C2 基础设施 | 指标 | 值 | |-----------|-------| | 主要数据外发 | `filev2.getsession.org` | | 会话种子 | `seed{1,2,3}.getsession.org` | | 次要 C2 | `api.masscan.cloud`、`git-tanstack.com` | | 负载暂存 | `litter.catbox.moe/h8nc9u.js`、`litter.catbox.moe/7rrc6l.mjs` | | 恶意 commit | `79ac49eedf774dd4b0cfa308722bc463cfe5885c` | ## 如果您发现了异常 如果扫描器报告了 **CRITICAL**(严重)发现: 1. **轮换所有**可从受影响机器访问的凭证——AWS 密钥、GitHub token(`ghp_*`、`gho_*`、`ghs_*`)、npm token、Vault token、SSH 密钥、Kubernetes 服务账号 token 2. **移除恶意包**——`npm cache clean --force && rm -rf node_modules && npm install` 3. **移除持久化**——`launchctl unload ~/Library/LaunchAgents/com.user.gh-token-monitor.plist` 4. 在 DNS/代理层面**阻止 C2 域名** 5. **审计自** `2026-05-11T19:20Z` **以来的 GitHub Actions** 运行记录 6. **检查未经授权的 npm 发布**——`npm access ls-packages` ## 参考 - [CVE-2026-45321](https://www.cve.org/CVERecord?id=CVE-2026-45321) — CVSS 9.6 严重 - [GHSA-g7cv-rxg3-hmpx](https://github.com/advisories/GHSA-g7cv-rxg3-hmpx) — GitHub 安全公告 - [TanStack 事后分析](https://tanstack.com/blog/npm-supply-chain-compromise-postmortem) - [Aikido: Mini Shai-Hulud 卷土重来](https://www.aikido.dev/blog/mini-shai-hulud-is-back-tanstack-compromised) - [SafeDep: 大规模供应链攻击](https://safedep.io/mass-npm-supply-chain-attack-tanstack-mistral/) - [Snyk: TanStack 遭入侵](https://snyk.io/blog/tanstack-npm-packages-compromised/) - [The Hacker News 报道](https://thehackernews.com/2026/05/mini-shai-hulud-worm-compromises.html) ## 系统要求 - Bash 4+(macOS 自带 3.x,但该脚本兼容) - 标准 UNIX 实用工具(`find`、`grep`、`shasum`) - 可选:`mdfind`(macOS Spotlight,用于更快的文件搜索) - 可选:`npm`、`pip`(用于包/token 检查) - 可选:`git`(用于仓库检查) - 可选:`lsof`(用于网络连接检查) ## 许可证 MIT
标签:C2通信检测, CI/CD安全, CISA项目, Cutter, CVE-2026-45321, DevSecOps, DNS 反向解析, DNS 解析, IP 地址批量处理, Llama, Mini Shai-Hulud, npm包安全, PyPI包安全, 上游代理, 凭据窃取, 包管理器安全, 安全合规, 库, 应急响应, 应用安全, 恶意软件扫描, 持久化检测, 暗色界面, 网络代理, 网络安全研究, 蠕虫病毒