greylag-ci/cicd-goat
GitHub: greylag-ci/cicd-goat
一个故意易受攻击的CI/CD环境,用于基准测试和比较安全扫描器的检测效果。
Stars: 1 | Forks: 0
[](https://github.com/greylag-ci/cicd-goat/actions/workflows/scanner-comparison.yml)
[](LICENSE)
[](https://owasp.org/www-project-top-10-ci-cd-security-risks/)
[](scenarios/README.md)
[](docs/MATRIX.md)
三十八个 GitHub Actions 工作流,每个都演示了一个特定的攻击模式,这些模式源自公开披露的命名事件(tj-actions 2025, ArtiPACKED 2024, Codecov 2021, Birsan 依赖混淆 2021, event-stream/ua-parser-js/node-ipc/Shai-Hulud npm 生命周期滥用, Project Zero 错误 2070, Synacktiv Dependabot 漏洞利用)以及 **OWASP CI/CD 安全风险前 10 名**——涵盖所有十个类别。
场景 30–33 是场景 02 的变体,用于探测扫描器在四个 `github.event.*` 上下文中对不受信任输入列表的完整性;场景 34–38 则通过不安全命令复活、签名但未绑定的 `cosign verify`、跨作业环境密钥泄露、混淆代理自动合并以及从 PR 递归子模块检出,扩大了覆盖范围。每个作业都用 `if: false` 进行限制,因此工作流会出现在运行历史记录中,但永远不会启动运行器。
## 排行榜
每个扫描器在 38 个场景中捕获了多少。扫描器仅在触发一条指明该场景*特定预期错误*的规则时,才能在该场景上获得 ✅ 分——而不仅仅是工作流文件上的任何发现。根据 `main` 分支上最新的 [`scanner-comparison`](../../actions/workflows/scanner-comparison.yml) 运行结果自动生成。[评分方式 →](docs/FIELD-TEST.md)
| 扫描器 | 捕获的场景数(共38个) |
| :--- | :--- |
| pipeline‑check | **31 ✅** |
| zizmor | **16 ✅** |
| poutine | **12 ✅** |
| octoscan | **12 ✅** |
| Checkov | **9 ✅** |
| KICS | **7 ✅** |
| actionlint | **6 ✅** |
→ **[完整的每个场景矩阵](docs/MATRIX.md)** ·
**[覆盖维度——按 CICD-SEC、严重性、单独捕获](docs/COVERAGE-AXES.md)** ·
**[每条规则触发详情](docs/RULE-FIRINGS.md)** ·
**[五个精选场景的演练](docs/FIELD-TEST.md)**
## 仓库内容
- **[场景](scenarios/README.md)** — 38 个易受攻击的工作流,每个都有其书面说明(漏洞利用演练、每个扫描器的覆盖范围、修复方法)。按攻击类别和 CICD-SEC 类别索引。
- **[完整矩阵](docs/MATRIX.md)** — 每个(场景 × 扫描器)的判定表,从真实的 SARIF 自动重建。
- **[覆盖维度](docs/COVERAGE-AXES.md)** — 同样的判定,以三种不同方式呈现:按 OWASP CICD-SEC 类别、按严重性、以及按单独捕获(仅有一个扫描器发现的场景)。
- **[每条规则触发详情](docs/RULE-FIRINGS.md)** — 对于每对(场景 × 扫描器),列出该扫描器在该工作流上实际发出的每条规则。规范错误规则**加粗**显示;其他所有内容均为干扰或相关项。
- **[现场测试](docs/FIELD-TEST.md)** — 五个精选场景,附有逐条规则评注,包括关于针对*缺失*安全控制(SBOM、签名等)触发的规则的部分。
- **[安全态势](SAFETY.md)** — 如何加固分叉 PR 和 Actions 权限,以防止此仓库被滥用为他人的运行器。
- **[贡献指南](CONTRIBUTING.md)** — 添加扫描器、添加场景、重新生成统计信息。
## 比较如何运行
```
push / pull_request
│
▼
┌─────────────────────────────────────────────────────────┐
│ .github/workflows/scanner-comparison.yml │
│ │
│ pipeline-check ▸ zizmor ▸ poutine │
│ ▸ kics ▸ checkov ▸ actionlint ▸ octoscan │
│ │ │
│ ▼ │
│ upload SARIF │
│ (one Code-Scanning category per tool) │
└────────────────────────┬────────────────────────────────┘
▼
Code Scanning + Run Summary
│
▼
tools/regen-readme.py (reads SARIF)
│
▼
README leaderboard + docs/MATRIX.md
```
一个每周运行的任务 — [`.github/workflows/regen-readme.yml`](.github/workflows/regen-readme.yml) — 拉取最新的 SARIF,重新运行排行榜和矩阵,如果有任何变动,则提交一个 PR。参见 [CONTRIBUTING.md → 重新生成统计信息](CONTRIBUTING.md#regenerate-the-stats)。
## 为何 `pipeline-check` 参与此比较
此仓库是测试场;[`pipeline-check`](https://github.com/greylag-ci/pipeline-check-vscode) 是正在被测试的引擎之一。它在此语料库上所做的不同之处(范围窄但真实):在排行榜上领先于次佳扫描器(zizmor);提供一系列规则,当工作流*缺失*安全控制(SBOM、SLSA、制品签名、漏洞扫描、`environment:` 绑定、`timeout-minutes`、容器摘要固定)时触发——此处没有其他扫描器携带这些规则;涵盖 23 个 CI/CD 提供者及 GitHub Actions 之外的清单类型。
通过 [Pipeline-Check 扩展](https://github.com/greylag-ci/pipeline-check-vscode) 提供内联 VS Code 体验;Python 规则引擎位于 [`dmartinochoa/pipeline-check`](https://github.com/dmartinochoa/pipeline-check)。
## 许可证与渊源
Apache 2.0 — 参见 [LICENSE](LICENSE)。[`cider-security-research/cicd-goat`](https://github.com/cider-security-research/cicd-goat) 的软分叉;所有上游内容此后已被移除,该项目现在独立且专注于 GitHub Actions。完整渊源请参见 [NOTICE](NOTICE)。
标签:CI/CD安全, CI/CD扫描, DevOps安全, GitHub Actions, GraphQL安全矩阵, Llama, OWASP Top 10, 依赖混淆, 安全工具评估, 安全扫描器, 安全测试, 安全风险, 工作流安全, 扫描器比较, 持续部署安全, 持续集成安全, 攻击性安全, 攻击模式, 漏洞演示, 漏洞环境, 生命周期滥用, 结构化查询, 自动化安全, 自动笔记, 软件安全测试, 逆向工具