scubafantasizer/Catlak
GitHub: scubafantasizer/Catlak
记录在 Google Colab 共享 CPU 基础设施上进行 23 项侧信道攻击实验的安全研究报告,验证了现有防御机制的有效性并揭示了若干残留风险。
Stars: 0 | Forks: 0
# Google Colab CPU 侧信道安全研究
一份负责任的披露报告,记录了 23 个 C++ 实验,旨在探测 Google Colaboratory 共享 Intel Xeon 基础设施中 CPU 级别的侧信道漏洞。
## 此仓库包含的内容
| 文件 | 描述 |
|---|---|
| `google_colab_security_report.pdf` | 完整研究报告(64 KB,约 20 页) |
| `colableaktest.ipynb` | 包含所有实验源代码和输出的原始 Jupyter notebook |
## 报告概述
该 PDF 文档记录了 23 个渐进式实验,旨在利用以下方式测试 Google Colab 的进程隔离:
- **Spectre v1 / v2** — Flush+Reload 缓存侧信道
- **MDS / RIDL** — 通过填充缓冲区进行的微架构数据采样
- **瞬态执行** — 到内核地址空间的推测跳转
- **L3 缓存饱和** — 共享末级缓存时序分析
- **分支预测器投毒** — 基于训练的误预测攻击
每个实验均包含:攻击方法、原始输出、技术分析、结论和成功率。
## 结果摘要
| 结果 | 数量 |
|---|---|
| 失败 / 已拦截 | 10 |
| 手动中断(结果未确定) | 5 |
| 观察到部分信号 | 7 |
| 编译错误(未执行) | 1 |
Google 现有的防御机制(KPTI、Retpoline/IBRS、MDS 微码补丁、点填充清理、VM 隔离)拦截了所有实验。未实现任何经确认的内核或跨租户数据窃取。
## 关键发现
1. **实验 17 — l3_dump.cpp** 针对内核地址范围 `0xFFFFFFFF81000000` 生成了完整的 1024 字节十六进制转储。其内容反映的是真实的内核数据还是自身进程的 L3 缓存残留,需要与基准事实进行比对以进行内部验证。**标记为高优先级 (HIGH)。**
2. **RDTSC 不受限制** — 直接的 TSC 访问实现了亚纳秒级的时序测量,这是所有 Flush+Reload 攻击的基础原语。
3. **Fork 速率不受限制** — 实验 6 在约 2 分钟内派生了超过 11,500 个子进程,且未受到任何限制,这为同驻租户提供了一条 CPU 拒绝服务路径。
4. **时序基础架构可用** — covert_leak.cpp 中的 Flush+Reload 流水线运行正常。当前未能泄露内核数据的原因在于错误构造的 gadget,而非侧信道本身失效。
## 建议(摘要)
| ID | 严重程度 | 措施 |
|---|---|---|
| R1 | CRITICAL | 将 l3_dump 输出与实际内核内存内容进行比对验证 |
| R2 | CRITICAL | 限制或虚拟化 RDTSC 并引入受控抖动 |
| R3 | HIGH | 实施基于会话的 fork() 速率限制 |
| R4 | HIGH | 审查点填充清理的覆盖范围映射 |
| R5 | MEDIUM | 增加基于会话的线程数限制 |
| R6 | MEDIUM | 在租户 VM 之间启用 Intel CAT L3 缓存分区 |
| R7 | LOW | 保持 KPTI 和微码补丁的更新频率 |
| R8 | LOW | 持续监控 Intel PSIRT 以获取新的 Spectre 变体 gadget |
***建议面向管理共享计算环境的基础设施提供商***
## 免责声明
- 本研究发布是出于教育和透明度目的。
- 所有实验均仅在个人的 Colab 会话中进行。
- 未尝试对其他用户数据进行未经授权的访问。
- 本仓库无意作为攻击手册;它仅记录攻击的可行性。
- 关注此问题的 Google Colab 用户应采取建议的缓解措施或迁移敏感工作负载。
**报告日期:** 2026 年 5 月 11 日
标签:C++, CPU侧信道攻击, Flush+Reload, Google Colab, Go语言工具, Intel Xeon, L3缓存, MDS, meg, NoSQL, RDTSC, Spectre, 云基础设施安全, 信息安全, 共享云环境, 分支预测, 微架构数据采样, 情报收集, 数据擦除, 无线安全, 漏洞研究, 瞬态执行攻击, 硬件漏洞, 网络安全报告, 负责任的披露, 进程隔离