Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
OreNPMGuard — 针对 Shai-Hulud 供应链攻击的防御 | Kitploit
工具/GitHubGitHub/rapticore/orenpmguard
危害指标 (IOC) 管理漏洞扫描器代码分析恶意软件分析DevSecOps威胁情报供应链安全学习与教育事件响应
GitHubrapticore/orenpmguard

OreNPMGuard

针对 Shai-Hulud 供应链攻击的防御

查看仓库
13448个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

OreNPMGuard - Shai-Hulud 软件包扫描器

版本 2.0.0 - Shai-Hulud 2.0 检测与增强防护系统

一款安全工具,用于检测 Shai-Hulud 供应链攻击(2025年9月原始攻击及2025年11月 Shai-Hulud 2.0 攻击)中被入侵的 npm 软件包。同时扫描 package.json 和 package-lock.json 文件,以检测精确的已安装版本和入侵指标(IoC)。提供 Python 和 Node.js 两种实现,并采用集中式 YAML 配置便于维护。

最新更新: 2025年11月24日 - 追踪 738+ 个被入侵软件包,涵盖 1,291 个唯一的 package@version 组合。现已同时检测原始 Shai-Hulud 和 Shai-Hulud 2.0 攻击变种。

如需多生态系统扫描,请参阅 ore-mal-pkg-inspector。

🔗 相关项目

如需多生态系统恶意软件包扫描(npm、PyPI、Maven、RubyGems、Go、Cargo),请参阅: ore-mal-pkg-inspector - 具有动态威胁情报的综合恶意软件包扫描器。

OreNPMGuard 专门专注于 npm 软件包的 Shai-Hulud 攻击防御。

🚨 关于 Shai-Hulud 攻击

Shai-Hulud 是一种自复制蠕虫,于 2025年9月14日至15日开始入侵 npm 软件包,代表了 npm 生态系统中首次成功的自传播攻击,也是迄今观察到的最严重的 JavaScript 供应链攻击之一。该恶意软件以 Frank Herbert《沙丘》系列中的巨型沙虫命名,现已演变为多种变种。

原始 Shai-Hulud(2025年9月)

原始攻击感染了 200+ 个 npm 软件包(本工具已追踪),每个软件包有多个受影响版本。

Shai-Hulud 2.0(2025年11月) - 新增

2025年11月出现了一种新变种,具有重大变化:

  • 738+ 个被入侵软件包,涵盖 1,291 个唯一的 package@version 组合
  • 25,000+ 个受影响仓库,涉及 约 350 个独立用户
  • 新的执行阶段:使用 preinstall 脚本(不仅仅是 postinstall)
  • 新的载荷文件:setup_bun.js 和 bun_environment.js(除 bundle.js 外)
  • 增强的持久化:创建名为 'SHA1HULUD' 的自托管运行器及新的 GitHub 工作流模式
  • 多云攻击目标:AWS、Azure 和 GCP 凭据窃取
  • Docker 权限提升:尝试通过特权容器获取 root 访问权限
  • 软件包上传时间在 2025年11月21日至23日 之间

参考资料:Wiz Research - Shai-Hulud 2.0 博客文章

🦠 攻击运作方式

零号病人:攻击始于 2025年9月14日 17:58:50 UTC 发布的 rxnt-authentication 软件包,由已被入侵的 "techsupportrxnt" npm 账户发布。

攻击链(原始 Shai-Hulud):

  1. 安装:恶意软件包运行 postinstall 脚本,执行 bundle.js(3MB+ JavaScript 载荷)
  2. 凭据窃取:使用 TruffleHog 扫描 GitHub/npm 令牌、AWS/GCP/Azure 凭据、环境变量以及 IMDS 暴露的云密钥
  3. 数据外泄:在受害者的 GitHub 账户下创建公开的 "Shai-Hulud" 仓库,将窃取的机密存储在 data.json 中(双重 base64 编码)
  4. 持久化:注入恶意 GitHub Actions 工作流(.github/workflows/shai-hulud-workflow.yml),将仓库机密外泄至 webhook[.]site
  5. 仓库迁移:强制将私有组织仓库变成公开的个人仓库,并添加 "-migration" 后缀和 "Shai-Hulud Migration" 描述
  6. 蠕虫传播:利用窃取的 npm 令牌,向受害者维护的其他软件包注入恶意软件,递增版本号并添加 postinstall 挂钩

攻击链(Shai-Hulud 2.0 - 2025年11月):

  1. 安装:恶意软件包运行 preinstall 脚本,执行 setup_bun.js 或 bun_environment.js(新的载荷文件)
  2. 数据文件创建:创建 cloud.json、contents.json、environment.json 和 truffleSecrets.json 文件
  3. 凭据窃取:使用官方 SDK 进行多云攻击(AWS、Azure、GCP),从配置文件、环境变量和 IMDS 中抓取凭据
  4. 自托管运行器注册:将受感染的机器注册为名为 'SHA1HULUD' 的自托管运行器
  5. GitHub 工作流注入:
    • 创建带有自托管运行器的 .github/workflows/discussion.yaml 以作为后门访问
    • 创建 .github/workflows/formatter_*.yml 用于机密外泄(随后删除工作流以隐藏活动)
  6. Docker 权限提升:尝试通过 docker run --rm --privileged -v /:/host 获取 root 访问权限
  7. 云机密转储:利用已认证会话,从 AWS Secrets Manager、Google Secret Manager 和 Azure Key Vault 转储机密
  8. 仓库创建:创建描述中包含 "Shai-Hulud" 的仓库用于外泄

🎯 会被窃取的内容

  • 开发凭据:GitHub PAT(ghp_*、gho_*)、npm 认证令牌
  • 云凭据:AWS、GCP、Azure 访问密钥和令牌
  • API 密钥:Atlassian、Datadog 及其他服务凭据
  • 系统信息:环境变量、主机信息、用户账户
  • 源代码:被公开或克隆的私有仓库

📊 影响规模

原始 Shai-Hulud(2025年9月):

  • 本追踪数据库中 200+ 个软件包 被入侵(包括 @ctrl/tinycolor、ngx-bootstrap 等流行软件包)
  • 多个 GitHub 账户被入侵(确切数量因报告来源而异)
  • 创建了带有 "Shai-Hulud Migration" 标签的公开仓库
  • 开发者可能通过软件包依赖受到影响

Shai-Hulud 2.0(2025年11月):

  • 738+ 个被入侵软件包,涵盖 1,291 个唯一的 package@version 组合
  • 在 约 350 个独立用户 下创建了 25,000+ 个受影响仓库
  • 初始攻击活动期间每 30 分钟新增 1,000+ 个新仓库
  • 影响来自主要生态系统的软件包:Zapier、ENS Domains、PostHog、Postman、AsyncAPI 等
  • 多云凭据窃取(AWS、Azure、GCP)
  • Docker 权限提升尝试

已确认的凭据窃取(来自约 20,000 个被分析的仓库):

  • 775 个被入侵的 GitHub 访问令牌
  • 373 个暴露的 AWS 凭据
  • 300 个暴露的 GCP 凭据
  • 115 个暴露的 Azure 凭据

⚠️ 跨受害者外泄警告

关键提示:Wiz Research 已确认正在发生跨受害者外泄。这意味着:

  • 一个受害者的被盗机密可能会被发布到由另一个无关受害者拥有的仓库中
  • 如果您在 GitHub 仓库中发现可疑数据,它可能属于另一个被入侵的用户
  • 您的数据可能已被外泄到您不拥有的仓库中
  • 这会使归因和事件响应变得复杂

调查启示:在审查您仓库中的外泄数据时,请验证这些数据确实属于您的组织还是其他受害者。

🔗 与先前攻击的关联

此次攻击与 2025年8月的 s1ngularity/Nx 入侵事件直接相关,该事件中最初的 GitHub 令牌窃取促成了更广泛的供应链攻击。许多最初的 Shai-Hulud 受害者是 s1ngularity 攻击的已知受害者。安全研究人员还指出,该攻击活动中包含 AI 生成的内容,并有中等置信度认为使用了 LLM 来生成恶意 bash 脚本。

📅 攻击时间线

原始 Shai-Hulud 攻击活动:

  • 2025年8月26日:发生 s1ngularity/Nx 入侵事件(前导攻击)
  • 2025年9月14日 17:58 UTC:发布首个恶意软件包 rxnt-authentication("零号病人")
  • 2025年9月15日:安全研究人员检测并报告了此次攻击
  • 2025年9月15日至16日:蠕虫在 npm 生态系统中迅速传播
  • 2025年9月16日:确认 180 多个软件包被入侵
  • 2025年9月17日:持续监控和清理工作
  • 2025年9月18日:发布 v1.2.0 版本,追踪 200 个软件包并增强防护工具

Shai-Hulud 2.0 攻击活动:

  • 2025年11月21日至23日:恶意软件包被上传至 npm 注册表
  • 2025年11月24日:Wiz Research 和 Aikido 检测并报告了此次攻击
  • 2025年11月24日:发布 v2.0.0 版本,追踪 738+ 个软件包并具备 Shai-Hulud 2.0 检测能力
  • 持续进行中:GitHub 持续移除攻击者创建的仓库;攻击者则继续创建新仓库

快速开始

前置要求

  • Python 扫描器:需要 PyYAML(pip install pyyaml)
  • Node.js 扫描器:需要 js-yaml(npm install js-yaml)

Python 扫描器

root@kitploit:~
# 赋予可执行权限
chmod +x shai_hulud_scanner.py

# 扫描单个 package.json
python3 shai_hulud_scanner.py ./package.json

# 扫描 package-lock.json 以获取精确版本
python3 shai_hulud_scanner.py ./package-lock.json

# 扫描整个项目目录
python3 shai_hulud_scanner.py ./my-project

# 扫描当前目录
python3 shai_hulud_scanner.py .

Node.js 扫描器

root@kitploit:~
# 先安装依赖
npm install

# 赋予可执行权限
chmod +x shai_hulud_scanner.js

# 扫描单个 package.json
node shai_hulud_scanner.js ./package.json

# 扫描 package-lock.json 以获取精确版本
node shai_hulud_scanner.js ./package-lock.json

# 扫描整个项目目录
node shai_hulud_scanner.js ./my-project

# 扫描当前目录
node shai_hulud_scanner.js .

扫描器的功能

✅ 精确匹配检测:识别与已知被入侵版本精确匹配的软件包

⚠️ 潜在风险检测:标记同名但不同版本的软件包(仍可能处于危险之中)

🔍 双文件支持:同时扫描 package.json(声明的依赖)和 package-lock.json(精确的已安装版本)

📦 全面覆盖:package-lock.json 扫描包含嵌套依赖和传递依赖

🔄 递归扫描:自动扫描所有子目录,同时跳过 node_modules

📋 详细报告:显示软件包名称、版本、依赖部分和受影响版本

🔎 IoC 检测:识别原始 Shai-Hulud 和 Shai-Hulud 2.0 的入侵指标:

  • 原始 Shai-Hulud:"postinstall": "node bundle.js" 挂钩、bundle.js 文件、shai-hulud-workflow.yml
  • Shai-Hulud 2.0:"preinstall" 挂钩、setup_bun.js、bun_environment.js、discussion.yaml、formatter_*.yml 工作流
  • 通用:对 webhook.site 外泄端点的引用、SHA1HULUD 运行器模式、Docker 权限提升

输出示例

🚨 严重(发现被入侵软件包):

root@kitploit:~
🚨 CRITICAL: Found 2 CONFIRMED compromised packages:
   • @ctrl/deluge v7.2.2 in dependencies
     Affected versions: 7.2.2, 7.2.1
   • ngx-bootstrap v19.0.3 in devDependencies
     Affected versions: 18.1.4, 19.0.3, 20.0.4, 20.0.5, 20.0.6, 19.0.4, 20.0.3

⚠️ 警告(版本不匹配):

root@kitploit:~
⚠️ WARNING: Found 1 packages with different versions:
   • @ctrl/deluge v7.2.0 in dependencies
     Known affected versions: 7.2.2, 7.2.1

✅ 干净:

root@kitploit:~
✅ No affected packages found

如果发现被入侵的软件包

立即采取的行动:

  1. 停止受影响项目的所有开发工作
  2. 移除被入侵的软件包:npm uninstall <package-name>
  3. 清除 npm 缓存:npm cache clean --force
  4. 删除 node_modules:rm -rf node_modules

凭据轮换:

  1. GitHub 个人访问令牌
  2. npm 认证令牌
  3. SSH 密钥
  4. API 密钥(AWS、Atlassian、Datadog 等)

调查:

  1. 在 GitHub 中检查是否存在名为 "Shai-Hulud" 或在描述中包含 "Shai-Hulud" 的公共仓库
  2. 查找带有 "-migration" 后缀的仓库(原始 Shai-Hulud)
  3. 查看 GitHub 审计日志,检查是否有未经授权的仓库创建
  4. 检查是否存在名为 shai-hulud 的分支
  5. 扫描 IoC(入侵指标):
    • 原始 Shai-Hulud:
      • 在 package.json 文件中搜索 "postinstall": "node bundle.js"
      • 查找 bundle.js 文件(3MB+ 大小,包含恶意载荷)
      • 检查 .github/workflows/shai-hulud-workflow.yml 文件
    • Shai-Hulud 2.0:
      • 在 package.json 文件中搜索 "preinstall" 挂钩
      • 查找 setup_bun.js 和 bun_environment.js 载荷文件
      • 检查数据文件:cloud.json、contents.json、environment.json、truffleSecrets.json
      • 检查 .github/workflows/discussion.yaml(带有自托管运行器)

配置

软件包数据集中存储在 affected_packages.yaml 中。要添加新的被入侵软件包:

  1. 编辑 affected_packages.yaml
  2. 按以下格式添加条目:
    root@kitploit:~
    - name: "package-name"
      versions: ["1.0.0", "1.0.1"]
    
  3. Python 和 JavaScript 扫描器都将自动使用更新后的数据

这种集中式方法消除了在发现新威胁时需要更新多个文件的情况。

部署选项

安全团队

root@kitploit:~
# 创建集中扫描脚本
curl -O https://your-domain.com/shai_hulud_scanner.py
chmod +x shai_hulud_scanner.py

# 批量扫描多个项目
for dir in /projects/*/; do
    echo "Scanning $dir"
    python3 shai_hulud_scanner.py "$dir"
done

CI/CD 集成

root@kitploit:~
# GitHub Actions 示例
- name: Scan for Shai-Hulud packages
  run: |
    curl -O https://your-domain.com/shai_hulud_scanner.js
    npm install js-yaml
    node shai_hulud_scanner.js .
    if [ $? -ne 0 ]; then
      echo "SECURITY ALERT: Compromised packages detected!"
      exit 1
    fi

企业部署

root@kitploit:~
# 添加到安全工具集
cp shai_hulud_scanner.py /usr/local/bin/
cp shai_hulud_scanner.js /usr/local/bin/
cp affected_packages.yaml /usr/local/bin/

# 创建别名以便快速访问
echo 'alias scan-shai="python3 /usr/local/bin/shai_hulud_scanner.py"' >> ~/.bashrc

技术说明

  • 目标平台:Linux、macOS 和 Windows(Shai-Hulud 2.0 增加了 Windows 支持)
  • 载荷大小:3MB+ 压缩 JavaScript 包(原始),Shai-Hulud 2.0 中有新的载荷
  • 自传播:npm 生态系统中首个成功的自复制蠕虫
  • 执行阶段:原始使用 postinstall,Shai-Hulud 2.0 使用 preinstall(增加了在构建环境中的暴露面)
  • 依赖:Python 需要 PyYAML,Node.js 需要 js-yaml
  • 安全:只读操作,不会修改您的文件
  • 快速:针对大型代码库的快速扫描进行了优化
  • 准确:基于安全研究人员(Wiz Research、Aikido)的官方 IoC 列表
  • AI 生成的组件:安全研究人员以中等置信度评估认为使用了 LLM 来生成部分恶意 bash 脚本
  • 持久化机制:
    • 原始:GitHub Actions 工作流、恶意分支和仓库迁移
    • Shai-Hulud 2.0:自托管运行器、基于 discussion 的工作流、formatter 工作流
  • 云集成:
    • 原始:使用 SDK 库和 IMDS 端点攻击 AWS 和 GCP 环境
    • Shai-Hulud 2.0:使用官方 SDK 进行多云攻击(AWS、Azure、GCP),转储密钥管理器内容

入侵指标(IoC)

原始 Shai-Hulud(2025年9月):

  • 恶意 postinstall 挂钩:package.json 中的 "postinstall": "node bundle.js"
  • 载荷文件:bundle.js(通常为 3MB+ 压缩 JavaScript)
  • 外泄端点:对 webhook.site 域名的引用
  • GitHub 工作流:用于持久化的 .github/workflows/shai-hulud-workflow.yml
  • 仓库命名:带 "Shai-Hulud" 或 "-migration" 后缀的仓库
  • 分支指标:包含恶意提交的 shai-hulud 分支

Shai-Hulud 2.0(2025年11月):

  • 恶意 preinstall 挂钩:package.json 中的 "preinstall": "node setup_bun.js" 或 "preinstall": "node bun_environment.js"
  • 新的载荷文件:setup_bun.js、bun_environment.js(除 bundle.js 外)
  • 数据文件:cloud.json、contents.json、environment.json、truffleSecrets.json
  • GitHub 工作流:
    • .github/workflows/discussion.yaml(带有 runs-on: self-hosted 和 RUNNER_TRACKING_ID: 0)
    • .github/workflows/formatter_*.yml(模式匹配,用于机密外泄)

两个变种共有:

  • 外泄端点:对 webhook.site 域名的引用
  • 仓库命名:名称或描述中包含 "Shai-Hulud" 的仓库

📚 文档

  • 发布说明 v1.2.0 - 完整的变更日志和新功能
  • 安全评估 - 全面的安全分析
  • 防护指南 - 490+ 行集成说明
  • GitHub Actions 工作流 - 自动化 CI/CD 防护

🛡️ v2.0.0 新增功能

Shai-Hulud 2.0 检测

  • Preinstall 挂钩检测:检测 preinstall 脚本(Shai-Hulud 2.0 执行阶段)
  • 新载荷文件检测:扫描 setup_bun.js 和 bun_environment.js
  • 数据文件检测:识别 cloud.json、contents.json、environment.json、truffleSecrets.json
  • GitHub 工作流扫描:检测 discussion.yaml 和 formatter_*.yml 工作流模式
  • 自托管运行器检测:识别 'SHA1HULUD' 运行器注册
  • Docker 权限提升检测:扫描特权容器执行模式
  • 向后兼容:继续检测原始 Shai-Hulud(2025年9月)的指标

扩展的软件包数据库

  • 追踪 738+ 个被入侵软件包(从 200 个增加)
  • 数据库中有 1,291 个唯一的 package@version 组合
  • 识别出 25,000+ 个受影响仓库
  • 约 350 个独立用户 被入侵

增强的防护套件(来自 v1.2.0)

  • 多格式配置:JSON、YAML、CSV,适用于不同使用场景
  • GitHub Actions 集成:自动化 CI/CD 阻断工作流
  • 独立阻断脚本:prevention/block-shai-hulud.sh
  • 软件包同步工具:自动化威胁情报更新

改进的检测能力

  • IoC 扫描,同时覆盖原始和 Shai-Hulud 2.0 变种
  • 严重性分类(严重/高/中),并识别变种
  • 增强的威胁情报,包含下载计数和攻击向量
  • 多云凭据检测:AWS、Azure、GCP 攻击模式

支持

如有问题或疑问:

  • 安全团队:[email protected]
  • 开发:[email protected]
下载工具
  • 检查 .github/workflows/formatter_*.yml 文件
  • 检查工作流中的 'SHA1HULUD' 运行器名称
  • 查找 Docker 权限提升命令(docker run --rm --privileged -v /:/host)
  • 通用:
    • 在代码或网络日志中检查 webhook.site 引用
    • 审查自托管运行器的注册情况
    • 检查云提供商凭据和密钥管理器访问权限
  • 自托管运行器:在受感染机器上注册名为 'SHA1HULUD' 的运行器
  • Docker 权限提升:诸如 docker run --rm --privileged -v /:/host 之类的命令
  • 仓库描述:描述中包含 "Shai-Hulud" 的仓库
  • 多云攻击目标:尝试访问 AWS Secrets Manager、Google Secret Manager、Azure Key Vault
  • 外泄端点:对 webhook.site 域名的引用(与原始相同)