davidalmeidac/shai-hulud-iocs
GitHub: davidalmeidac/shai-hulud-iocs
将分散在多个安全数据源中的 Shai-Hulud 框架相关受损 npm 包 IOC 聚合为统一的、可通过 curl 集成的每日更新数据源。
Stars: 1 | Forks: 0
# shai-hulud-iocs
[](https://github.com/davidalmeidac/shai-hulud-iocs/actions/workflows/update.yml)
[](LICENSE)
每日从 OSV.dev、GitHub Security Advisories 和精选的公开研究(Snyk、StepSecurity、Mondoo、Upwind、Datadog、TheHackerNews)汇总。免费供任何人在其 CI/CD、SIEM 或威胁情报 pipeline 中使用。
## 为什么会有这个项目
当 **TeamPCP 在 2026 年 5 月 12 日将 Shai-Hulud 框架开源** 时,几天内 npm 中就开始出现克隆包(TanStack、AntV、Mistral、chalk-template 域名抢注等)。IOC 信号散布在六七个源中 —— Snyk 的博客、StepSecurity 的博客、OSV.dev、GHSA、Mondoo 的文章。**以前没有一个统一的源可以让你直接通过 `curl` 集成到 CI 中。**
这个仓库就是那个源。
- 🟢 **是聚合器,而非检测器** —— 每条记录均来源于至少一份已发布的漏洞通告,因此零误报。
- 🟢 **每日更新**(通过 GitHub Actions 定时任务)。
- 🟢 **多种格式** —— JSON、CSV、TXT、Atom。
- 🟢 **CC0 许可证** —— 属于公共领域,无需署名。
- 🟢 **Schema 版本控制**,使用者可以进行固定版本(`schema: shai-hulud-iocs/v1`)。
## 使用方法
### 在你的 CI 中作为 curl 使用
```
# 拉取 txt feed,如果任何已安装的 package 匹配,则使 build 失败
curl -fsSL https://raw.githubusercontent.com/davidalmeidac/shai-hulud-iocs/main/data/compromised-packages.txt \
| grep -F "$(jq -r '.packages | to_entries[] | "npm:\(.key)@\(.value.version)"' package-lock.json)" \
&& { echo "Compromised package detected!"; exit 2; } \
|| echo "Clean."
```
### 在你的工具中作为 JSON 依赖项使用
```
curl -fsSL https://raw.githubusercontent.com/davidalmeidac/shai-hulud-iocs/main/data/compromised-packages.json -o iocs.json
```
```
import json, urllib.request
url = "https://raw.githubusercontent.com/davidalmeidac/shai-hulud-iocs/main/data/compromised-packages.json"
data = json.loads(urllib.request.urlopen(url).read())
print(f"Tracking {data['total']} compromised packages, generated {data['generated_at']}")
```
### 在你的监控工具中作为 Atom 源使用
将此 URL 添加到 Feedly / NewsBlur / Inoreader / 你的 SIEM 中:
```
https://raw.githubusercontent.com/davidalmeidac/shai-hulud-iocs/main/data/feed.atom
```
### 作为 `sealed-env hunt-shai-hulud` 的 IOC 数据源
[sealed-env hunt-shai-hulud](https://github.com/davidalmeidac/sealed-env) 命令将在未来的版本中切换为使用此数据源,这样采用者无需重新安装 CLI 即可获得最新的 IOC。
## 文件说明
| 文件 | 格式 | 用途 |
|---|---|---|
| [`data/compromised-packages.json`](data/compromised-packages.json) | JSON schema `shai-hulud-iocs/v1` | 标准的机器可读格式 |
| [`data/compromised-packages.csv`](data/compromised-packages.csv) | CSV | 电子表格 / Excel |
| [`data/compromised-packages.txt`](data/compromised-packages.txt) | 每行一个 `:@` | 方便 grep / 管道操作 |
| [`data/feed.atom`](data/feed.atom) | Atom | RSS 阅读器 / SIEM |
| [`data/SUMMARY.md`](data/SUMMARY.md) | Markdown | 人类可读的表格 |
| [`sources/*.raw.json`](sources/) | 每个源的原始 JSON | 审计追踪 / 调试 |
## JSON schema (`shai-hulud-iocs/v1`)
```
{
"schema": "shai-hulud-iocs/v1",
"generated_at": "2026-05-25T20:08:25Z",
"total": 5,
"packages": [
{
"ecosystem": "npm",
"name": "@tanstack/react-router",
"versions": ["1.169.5", "1.169.8"],
"campaigns": [
"Mini Shai-Hulud TanStack",
"OSV: GHSA-xxxx-xxxx-xxxx — supply-chain compromise..."
],
"first_seen": "2026-05-11",
"severity": "critical",
"sources": ["Snyk", "StepSecurity", "OSV: GHSA-xxxx-xxxx-xxxx"],
"references": [
"https://snyk.io/blog/tanstack-npm-packages-compromised/",
"https://www.stepsecurity.io/blog/mini-shai-hulud-is-back-..."
]
}
]
}
```
字段:
- **`ecosystem`** —— `npm`、`pypi`、`maven` 等
- **`name`** —— 在其所在注册表中显示的包名
- **`versions`** —— 精确版本号字符串数组;`["*"]` 表示该包的所有版本
- **`campaigns`**** —— 此 IOC 关联的已命名活动的人类可读列表
- **`first_seen`** —— 我们掌握证据的最早日期 `YYYY-MM-DD`
- **`severity`** —— `low` / `medium` / `high` / `critical`
- **`sources`** —— 源标识符列表
- **`references`** —— 指向源漏洞通告 / 分析报告的 URL
## 汇总的数据源
| 来源 | 方式 | 备注 |
|---|---|---|
| **Seed** (精选) | `scripts/seed.json` | 来自已命名活动的高可信度 IOC |
| **OSV.dev** | REST API | Google 的开源漏洞数据库 |
| **GHSA** | GraphQL API | 标记为 Shai-Hulud 的 GitHub Security Advisories |
计划在 `v1.1` 版本中加入更多源:Snyk Vuln DB、Socket.dev、Aikido、npm advisories。欢迎提交 PR。
## 本项目“不是”什么
- ❌ 不是恶意软件扫描器 —— 请参阅 [sealed-env hunt-shai-hulud](https://github.com/davidalmeidac/sealed-env)
- ❌ 不能替代 Snyk / Socket / Phylum / 商业扫描器
- ❌ 不是详尽无遗的 —— 仅包含已被公开记录的内容
- ❌ 不是实时的 —— 每日刷新
它是一个**单一的、可通过 curl 访问的位置**,专门用于存放那些已经公开但分布零散的 IOC。
## 许可证
[CC0 1.0 Universal — Public Domain](LICENSE)。无需署名。可自由复制、fork、嵌入或重新发布。
## 相关项目
- [`davidalmeidac/sealed-env`](https://github.com/davidalmeidac/sealed-env) —— 带有 `hunt-shai-hulud` CLI 的跨技术栈加密 `.env` 库
- [`davidalmeidac/sealed-env-hunt-action`](https://github.com/davidalmeidac/sealed-env-hunt-action) —— 上述项目的 GitHub Action 包装器
- [`threat-research/analysis/shai-hulud-defense.md`](https://github.com/davidalmeidac/sealed-env/blob/main/threat-research/analysis/shai-hulud-defense.md) —— 完整的防御分析报告
标签:Cilium, IOC聚合, LNA, NPM, 威胁情报, 安全数据源, 开发者工具