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, 云资源编排, 侧信道攻击, 逆向工具