SauceTaster/CloudFall
GitHub: SauceTaster/CloudFall
CloudFall 是一个基于 OpenTofu 的云安全研究脚手架,用于系统化枚举、部署和验证跨区域/可用区的云资源放置范围与共驻留关系。
Stars: 0 | Forks: 0
# CloudFall
**一个用于演示云资源放置*范围*和共驻留的研究脚手架,覆盖每个区域 / 可用区 / 位置,使用 OpenTofu。**
CloudFall 是一个供开发者构建的基础,而不是一件已完成的武器。它的存在是为了让
一件事变得具体且可复现:借助基础设施即代码和适度的云 API 探索,租户可以系统地将
资源放置在整个提供商的覆盖范围内——而且这种*放置范围*
是整个共驻留 / 侧信道 / 一跳攻击文献的先决条件,从 Ristenpart 等人 (CCS 2009) 到 Zhao 等人 (ASPLOS 2024,
在 Google Cloud Run 上实现了约 100% 的共存)。
## 一段话威胁模型
从攻击者的角度来看,放置并不是随机的:你的资源落在哪个物理主机、
CPU 插槽、核心和网络段上,是一个可控的、
部分可观察的函数,取决于区域、**物理 AZ-ID**、实例类型、
放置提示和启动时机。实现了共驻留后,*收益*会随着你共存的紧密程度而扩大——同一主机(内存总线/DRAM 通道)、同一
插槽(LLC Prime+Probe,密钥提取)、同一核心(L1/Foreshadow)、同一 SMT 兄弟线程(MDS)。即使未达到主机共驻留,仅凭**一跳网络邻接**
(相同子网/AZ)就会暴露链路级的 IPv6/ND 以及链路上主机/嵌入式/网络设备
TCP/IP 协议栈漏洞,这些是相隔整个互联网的攻击者无法触及的(例如主机协议栈中的 OpenBSD ICMPv6
mbuf RCE CVE-2007-1365 和 Windows IPv6 DoS CVE-2021-24086;嵌入式/设备协议栈中的 Ripple20
和 AMNESIA:33)。完整的、经过引用验证的理论基础请参见
**[docs/literature-review.md](docs/literature-review.md)**。
## 架构:三层解耦,一个契约
```
enumerate/ ──► PlacementMatrix (JSON) ──► place/ ──► OpenTofu ──► cloud
▲ │
│ ▼
schemas/*.json verify/
(the contract) CoResidencyResult (JSON)
```
- **`enumerate/`** — 将云账户转换为 `PlacementMatrix`:你可以部署到的每一个
`region × AZ-ID × resource-type × placement-option`。
基于**物理 AZ-ID**(`use1-az1`)作为键,从不使用基于账户的 AZ *名称*
(`us-east-1a`)——它们在每个账户中都是被打乱的,弄错这一点会悄无声息地
破坏多账户部署。AWS 已实现;Azure/GCP 为存根。
- **`place/`** — 将矩阵转换为 OpenTofu。有两种模式:OpenTofu ≥1.9 的
`provider for_each`(数据驱动的多区域扇出,无代码生成)和
兼容标准 Terraform 的代码生成回退方案。通过子网
绑定按 `az_id` 放置,因此配置在不同账户间是可移植的。
- **`verify/`** — 测量已部署的一对资源实现了哪种*粒度*的
共驻留,并输出一个向量 `{same_az, same_host, same_socket_llc, same_core,
same_smt_sibling}`,因为每个层级会解锁不同的攻击类别。内置了
网络 RTT(`same_az`)和内存总线(`same_host`)层级;更紧密的层级
是已记录的扩展点。
设计原理请参见 **[docs/architecture.md](docs/architecture.md)**。
## 快速开始(完全离线 — 无需云账户,无需凭据)
```
pip install -e ".[dev]"
# 1. 从捆绑的示例构建 placement matrix(无 API 调用)
cloudfall enumerate --fixtures --out matrix.json
# 2. 生成 OpenTofu(不触及云中的任何内容)
cloudfall plan --matrix matrix.json --mode provider_foreach --out out/tofu
cloudfall plan --matrix matrix.json --mode codegen --out out/tofu-static
# 3. 在本地验证 memory-bus (same_host) verifier pipeline
make -C native/membus
cloudfall verify selftest
# tier -> attack-class 参考
cloudfall info
```
## 针对真实账户(需要明确授权)
```
export CLOUDFALL_AUTHORIZED=1 # asserts own-account-only use (see ETHICS.md)
pip install -e ".[aws]"
cloudfall enumerate --cloud aws --types t3.micro,m5.large,c5.large --spot-scores --out matrix.json
cloudfall plan --matrix matrix.json --out out/tofu
cd out/tofu && tofu init && tofu apply # creates real, billable resources
```
## 状态
Alpha / 脚手架。AWS 枚举器 + 放置器 + 两个验证层级均可正常
工作并经过测试;Azure/GCP 枚举器以及 LLC/核心/SMT 验证层级
是存根扩展点。欢迎贡献——请参见
**[CONTRIBUTING.md](CONTRIBUTING.md)** 和 **[ROADMAP.md](ROADMAP.md)**。
## 许可证
Apache-2.0。如果你在研究中使用了 CloudFall,请引用它以及相关的
基础文献(请参见 [CITATION.cff](CITATION.cff))。
标签:OpenTofu, 云资源编排, 侧信道攻击, 逆向工具