利用 Kubernetes 镜像拉取实现机制拒绝节点可用性
密码学与安全
2025-08-11 v2
摘要
Kubernetes (K8s) 在过去几年中日益流行,已成为云原生环境中容器编排的事实标准。虽然容器化与访问控制安全等主题的研究并不新鲜,但 K8s 与其运行时接口之间的应用程序编程接口 (API) 交互尚未得到深入研究。特别是,CRI-API 负责抽象容器运行时,管理容器的创建和生命周期以及相应镜像的下载。然而,这种关注点分离和容器运行时的抽象使得 K8s 无法感知容器镜像下载过程的状态,阻碍了对分配给该过程的资源的监控。在本文中,我们讨论了如何将这种状态信息的缺乏作为 K8s 集群中的拒绝服务攻击加以利用。我们展示了此类攻击如何影响工作节点,产生高达 95% 的平均 CPU 使用率,阻止新容器镜像的下载,并可能在无限长的时间内增加 I/O 和网络使用率。我们认为,解决此问题需要对 K8s 与 CRI-API 之间的关系进行根本性的架构更改,这在短期内是不可行的。因此,作为权宜之计,我们提出了 MAGI:一种基于 eBPF 的概念验证缓解措施,用于检测并终止潜在攻击。
引用
@article{arxiv.2401.10582,
title = {Exploiting Kubernetes' Image Pull Implementation to Deny Node Availability},
author = {Luis Augusto Dias Knob and Matteo Franzil and Domenico Siracusa},
journal= {arXiv preprint arXiv:2401.10582},
year = {2025}
}