davidalmeidac/shai-hulud-iocs

GitHub: davidalmeidac/shai-hulud-iocs

将分散在多个安全数据源中的 Shai-Hulud 框架相关受损 npm 包 IOC 聚合为统一的、可通过 curl 集成的每日更新数据源。

Stars: 1 | Forks: 0

# shai-hulud-iocs [![更新 IOC 源](https://static.pigsec.cn/wp-content/uploads/repos/cas/05/0516006430ac6517f57d6c028ec57e01955c97a8d78409526bdeef570202ce3c.svg)](https://github.com/davidalmeidac/shai-hulud-iocs/actions/workflows/update.yml) [![许可证: CC0-1.0](https://img.shields.io/badge/License-CC0_1.0-lightgrey.svg)](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, 威胁情报, 安全数据源, 开发者工具