beyildirim/weaklink-labs
GitHub: beyildirim/weaklink-labs
一个浏览器优先的本地训练平台,通过 50 个动手实验帮助学习者在隔离环境中实战软件供应链攻击与防御。
Stars: 1 | Forks: 0
# WeakLink Labs
**通过破坏和修复真实流水线来学习供应链安全。**
[](https://codespaces.new/beyildirim/weaklink-labs?quickstart=1)
[](guide/docs/getting-started.md)
[](LICENSE)
[](https://slsa.dev)
[](https://github.com/beyildirim/weaklink-labs/releases)
[](https://github.com/beyildirim/weaklink-labs/releases)
WeakLink Labs 是一个面向软件供应链安全的浏览器优先培训平台。它启动一个本地工作站以及攻击者实际针对的周边系统:Git 托管、私有和公共软件包注册表、OCI 注册表、CI/CD 风格仓库、容器镜像、SBOM、签名和证明。学习者在隔离的基础设施中运行真实攻击,然后应用阻止这些攻击的管控措施。

make compose-up
```
## 最常用的命令
| 命令 | 用途 |
|------|------|
| `make start` | 启动完整本地平台 |
| `make stop` | 关闭平台并保留 `minikube` 运行 |
| `make clean` | 关闭平台并删除 `minikube` 集群 |
| `make status` | 显示当前 Pod 状态 |
| `make logs` | 显示平台 Pod 的最近日志 |
| `make shell` | 在工作站中打开 shell |
| `make compose-up` | 启动 Docker Compose 路径 |
| `make compose-down` | 关闭 Docker Compose 路径 |
| `make docs-check` | 运行严格的文档验证 |
| `make test` | 在集群上运行实验冒烟测试 |
主机终端仅用于 `make` 命令。实验操作在浏览器终端中进行。
## 打开的界面与地址
| 界面 | 地址 | 用途 |
|------|------|------|
| 指南 | `http://localhost:8000` | 主要学习界面 |
| 工作站终端 | `http://localhost:7681` | 浏览器访问实验 shell |
| Gitea | `http://localhost:3000` | 实验仓库和 CI/CD 中使用的 Git UI |
## 职责划分
| 你所在位置 | 在该处执行的操作 |
|------------|------------------|
| **主机终端** | 使用 `make` 启动、关闭、检查和测试平台 |
| **浏览器指南** | 阅读实验流程、上下文和防御步骤 |
| **浏览器终端** | 在隔离环境中运行实际实验命令 |
## 你将学习的内容
| 层级 | 主题 | 实验数量 |
|------|------|----------|
| **0** | **基础** — 版本控制、软件包管理器、容器、CI/CD | 5 |
| **1** | **软件包安全** — 依赖混淆、域名投毒、锁文件注入 | 6 |
| **2** | **构建与 CI/CD** — 流水线投毒、密钥外泄、运行器攻击 | 8 |
| **3** | **容器安全** — 镜像篡改、注册表混淆、图层攻击 | 6 |
| **4** | **SBOM 与签名** — SBOM、签名、断言及如何绕过它们 | 7 |
| **5** | **IaC 供应链** — Helm、Terraform、Ansible、准入控制器 | 5 |
| **6** | **高级领域与案例研究** — AI/ML、固件、多向量攻击、重大事件 | 10 |
| **7** | **响应与威胁建模** — 事件排查、IR 剧本、威胁建模 | 3 |
**推荐主线:** Tiers `0-5`。它们是动手核心产品最清晰的延续。
**进阶分支:** Tiers `6-7`。它们很有用,但转向案例研究和响应导向的工作,而不是保持在默认的浏览器优先攻击路径上。
## 从合适的深度开始
| 你是… | 推荐起点 | 重点关注 |
|--------|----------|----------|
| **SOC 分析员** | Tier 0 | 先走核心路径,再按需选择 Tier 7 |
| **安全工程师** | [定位测试](guide/docs/placement-test.md),很可能从 Tier 1 开始 | 主线贯穿 Tiers 1-5,再按需选择 Tiers 6-7 |
| **DevSecOps** | Tier 2 | CI 集成、工件完整性与 IaaS 管控 |
| **DevOps ** | Tier 0 | 防御阶段,Tiers 2-3 和 5 |
| **团队负责人 / 经理** | Tier 0 | 核心路径贯穿 Tier 5,再进入 Tier 7.3 和 7.5 进行响应规划 |
## 每个实验的工作方式
大多数动手实验遵循简单的教学流程:
**1. 理解** — 观察系统正常运行。在实验 0.2 中,你从私有注册表安装软件包并观察依赖解析如何工作。在实验 3.1 中,你拆解容器镜像层以查看其内部实际内容。
**2. 破坏** — 利用真实漏洞。在实验 1.2 中,你向公共注册表发布恶意软件包并观察构建系统将其拉取替代私有注册表。在实验 2.4 中,你向 CI 流水线注入一个步骤以将密钥外泄到外部端点。
**3. 防御** — 应用修复措施,重新运行攻击,观察其失败。在实验 1.2 中,你配置作用域注册表并固定哈希值。在实验 4.3 中,你使用 Cosign 对工件签名并设置验证以拒绝未签名镜像。
**4. 检测或讨论影响** — 部分实验在有助于学习者将攻击关联到实际工作时增加检测、排查或案例研究分析。并非每个实验都要求正式的检测内容。
## 已发布镜像与安全元数据
标记的发布版本会为 `guide`、`workstation` 和 `lab-setup` 推送多架构镜像。
- 镜像在 GitHub Actions 中构建并推送到 GHCR。
- 在发布期间应用 Cosign 密钥无签名。
- 在镜像构建期间启用构建证明。
- 使用 Syft 生成 CycloneDX SBOM。
- SBOM 作为发布资产上传,并在发布期间作为断言附加。
这对内容也很重要:Tier 4 涵盖 SBOM、签名、证明、断言验证以及这些管控可能失效的方式。
## 可选辅助 CLI
大多数学习者在启动后可以直接忽略浏览器中的帮助 CLI。如果需要仓库本地便捷命令,请使用:
```
make shell # Open a shell in the workstation
./cli/weaklink info # Show lab metadata
./cli/weaklink hint # Get a hint if you are stuck
```
## 贡献
请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 了解实验模板和指南。
## 许可证
[MIT](LICENSE)
快速开始 · 浏览实验室 · 定位测试 · 安全性 · 贡献
## 2 分钟了解 - 使用 `make start` 或 `make compose-up` 启动平台。 - 在 `http://localhost:8000` 打开指南,在 `http://localhost:7681` 打开浏览器终端。 - 沿主线依次完成 Tiers `0-5`;将 Tiers `6-7` 视为进阶分支,包含更多案例研究和响应导向的内容。 ## 一瞥 - **8 个层级的 50 个动手实验**,涵盖软件包、CI/CD、容器、工件完整性、IaC、案例研究以及响应。 - **浏览器优先的工作流**,指南位于 `http://localhost:8000`,工作站终端位于 `http://localhost:7681`。 - **两种本地路径**:完整的 `minikube` 路径用于主要体验,以及更快的 Docker Compose 路径直接拉取预构建镜像。 - **`make` 是唯一支持的主机端接口**。启动、关闭、日志、运行状况检查以及辅助操作全部通过 `Makefile` 进行。 - **发布的镜像包含供应链元数据**:签名、SBOM 以及与证明相关的断言。 ## 安全与范围 - **仅限本地训练栈**。WeakLink Labs 专为在本地机器或 Codespace 上使用而设计,不适合在公共互联网上暴露或多租户托管。 - **实验包含故意设计的恶意内容**。预期会包含特洛伊化的软件包、中毒的工作流、伪造的密钥、弱凭证以及用于训练的脆弱配置。 - **不要连接真实的基础设施或凭证**。保持环境与真实注册表、集群、云账户、签名密钥和生产密钥隔离。 - **某些默认配置故意设置宽松**。本地服务和种子凭证以牺牲安全性换取可重复的实验环境。这是训练环境的一部分,而非部署建议。 - **报告实际的仓库或平台安全问题请私下进行**。请参阅 [SECURITY.md](SECURITY.md) 了解报告指南和范围。 ## 选择设置路径 | 路径 | 命令 | 要求 | 适用场景 | |------|------|------|----------| | **推荐本地** | `make start` | Docker、minikube、kubectl、Helm、Python 3.11+ | 你希望获得完整本地平台并使用主要支持路径 | | **最快本地** | `make compose-up` | Docker | 你希望快速启动并使用预构建的 GHCR 镜像 | | **零安装** | 上方的 Codespaces 标识 | GitHub 账户 | 你不想安装本地依赖 | 完整的设置说明和前置条件请参见 [guide/docs/getting-started.md](guide/docs/getting-started.md)。 ## 快速开始 ### 推荐本地路径 ``` git clone https://github.com/beyildirim/weaklink-labs.git cd weaklink-labs make start ``` 在浏览器中打开 **http://localhost:8000**。这是主要体验入口。 - `make stop` 关闭平台但保留 `minikube` 运行。 - `make clean` 关闭平台并删除 `minikube` 集群。 ### Docker Compose 路径 ``` git clone https://github.com/beyildirim/weaklink-labs.git cd weaklink-labs make compose-up ``` 在浏览器中打开 **http://localhost:8000**。此路径从 GHCR 拉取发布的镜像而非本地构建。 若要固定某个发布的版本而非使用 `latest`,请运行: ``` WEAKLINK_IMAGE_TAG=标签:Cosign, CycloneDX, Git 托管, MIT 许可, OCI 镜像, SBOM, SLSA, Tiers 0-5, Tiers 6-7, 代码空间, 分级课程, 动手实验, 包注册表, 子域名突变, 安全控制, 安全训练, 实战演练, 容器镜像, 开源学习, 攻击与修复, 攻击模拟, 本地工作站, 浏览器即平台, 硬件无关, 签名与证明, 请求拦截, 软件供应链, 逆向工具, 防御实践, 隔离基础设施, 驱动签名利用