← 返回论文

Paper Files / Containers

标题:基于 Kubernetes 的容器化环境中威胁检测与遏制的形式化与运行时架构

ContainersZH

标题:基于 Kubernetes 的容器化环境中威胁检测与遏制的形式化与运行时架构 摘要:基于容器的 cloud-native 架构的采用,深刻改变了分布式应用的设计、部署和扩展方式。Kubernetes 已确立为容器化工作负载管理的主要编排系统,提供用于弹性伸缩、容错和运维自动化的声明式抽象。然而,这一额外的抽象层引入了新的攻击向量,并扩大了暴露面,尤其是在具有高密度短生命周期容器和复杂镜像供应链的环境中。对容器运行时漏洞的利用、不安全的编排 API 配置,以及针对配置不当集群的自动化加密货币挖矿活动,表明传统安全机制不足以应对这类环境的动态特性。本文提出一种用于 Kubernetes 集群中威胁检测与遏制的形式化与运行时架构,将系统状态的数学建模与可操作的可观测性机制及自动化响应相结合。我们将容器化环境形式化为标记迁移系统 LTS = (S, A, →),从而能够表达与容器、集群节点和控制平面交互相关的完整性与非干扰性质。在此理论基础上,我们实现了一个多层安全流水线,由镜像静态分析(Trivy 和 YARA)、基于 Open Policy Agent/Gatekeeper 的声明式准入策略、通过 Falco 利用 eBPF 实现的内核级行为监控,以及使用 NetworkPolicies 和 Kubernetes 管理控制实现的自动化隔离机制组成。该架构在一个包含 120 个节点和 2,400 个活跃 Pod 的集群中进行了实验评估,模拟了不同攻击场景,包括容器逃逸尝试、加密货币矿工执行以及通过受损凭据进行横向移动。结果表明,平均检测率为 96.3%,误报率为 3.8%,同时 MTTD 和 MTTR 等运行指标显著降低。这些结果表明,将理论形式化与基于 eBPF 的低层遥测相结合,是强化大规模 cloud-native 平台运行安全的有效方法。

  1. 引言

基于容器的轻量级虚拟化已成为云原生环境中分布式应用程序运行的主导范式。不同于传统虚拟机,容器共享宿主操作系统内核,并利用 Linux 内核自身提供的隔离机制,例如 namespaces、control groups(cgroups)、capabilities 和 seccomp 过滤器。该模型支持极快启动、高工作负载密度以及更低的计算资源消耗(MERKEL, 2014)。

Kubernetes 作为标准编排平台的确立,显著扩大了容器在企业环境中的采用范围。该系统引入了用于管理分布式应用的声明式抽象,包括 pods、deployments、services 以及负责保证集群期望状态的控制器(BURNS; BEDA; HIGHTOWER, 2019)。这种架构有利于自动扩缩容和故障恢复,但也引入了一个需要防止滥用和入侵的分布式控制平面。

尽管具有操作上的优势,容器的大规模采用也扩大了现代基础设施的攻击面。一个被广泛讨论的例子是运行时 runc 中的 CVE‑2019‑5736 漏洞,该漏洞允许从容器内部覆盖运行时二进制文件,并可能在宿主机上执行任意代码(OPEN CONTAINERS INITIATIVE, 2019)。与此同时,自动化攻击活动曾利用暴露在外的 Docker API 实例和配置不当的 Kubernetes 集群来部署加密货币矿工以及横向移动工具(PALO ALTO NETWORKS, 2021)。

除特定漏洞外,Kubernetes 环境的结构复杂性也带来了新的监控挑战。一个生产集群可能包含数千个临时 pods,由自动控制器动态创建和销毁。在这种背景下,仅依赖日志或网络分析的传统机制已不足以实时捕获恶意行为(ZHANG et al., 2018)。

MITRE ATT&CK for Containers 矩阵识别了该生态系统中的多种特定攻击技术,包括容器逃逸、滥用 ServiceAccount 凭证、部署恶意镜像以及控制平面入侵(MITRE, 2023)。这些向量要求检测机制能够关联来自系统不同层面的事件。

在此背景下,我们提出本研究的核心问题:如何在由数百或数千个临时容器组成、并高度依赖软件供应链的系统中,保证形式化安全属性并实现有效的检测机制?

指导本文的研究问题如下:

RQ1:如何以可验证的方式,形式化建模容器及其与宿主机和 Kubernetes 控制平面的交互行为?

RQ2:将静态镜像分析、实时行为监控与声明式准入策略相结合的混合机制,其有效性如何?

RQ3:该架构对安全运营指标 MTTD(Mean Time to Detect)和 MTTR(Mean Time to Respond)产生多大定量影响?

本文的主要贡献有三点。首先,我们将容器化环境形式化为一个标记迁移系统 $LTS = (S, A, \rightarrow)$,从而能够表达进程间完整性和非干扰性质。其次,我们开发了一种混合架构,将基于 eBPF 的可观测性与声明式安全策略和镜像分析相集成。第三,我们在大规模 Kubernetes 集群上进行了实验评估,证明了检测与响应运营指标的可测量改进。

  1. 背景与相关工作

Linux 容器利用内核提供的隔离机制,在不同执行环境之间分离进程和资源。Namespaces 控制进程($PID$)、网络($NET$)、文件系统($MNT$)、主机名($UTS$)以及进程间通信($IPC$)等资源的可见性。而 control groups(cgroups)则限制 CPU、内存和 I/O 等资源的使用(MERKEL, 2014; POHLACK; SIEGEL, 2019)。

我们可以将容器 $C_i$ 形式化表示为如下四元组:

$$ C_i = (P_i, N_i, R_i, I_i) $$

其中 $P_i$ 表示正在运行的进程集合,$N_i$ 表示关联的 namespaces 集合,$R_i$ 表示由 cgroups 定义的资源限制,$I_i$ 表示用于实例化该容器的基础镜像。

已有多项研究分析了该模型的安全含义。Bui(2015)从隔离性和性能角度比较了容器与虚拟机,表明容器具有更低的计算开销,但相较于宿主内核提供的隔离更弱。Shu 等(2017)对 Docker Hub 公共镜像中的漏洞进行了实证研究,发现其中相当一部分包含已知漏洞软件包。

Kubernetes 环境的安全性也已在近期文献中得到广泛研究。Zhang 等(2018)分析了控制平面中的配置和权限风险,而 Rahman 等(2020)则研究了镜像构建流水线中的漏洞。这些研究强调了软件供应链安全的重要性。

行为监控工具作为检测容器中可疑活动的有效机制逐渐出现。Falco 是最初由 Sysdig 开发、后由 Cloud Native Computing Foundation 孵化的项目,它利用 eBPF 拦截 Linux 内核事件并识别潜在恶意行为模式(FALCO, 2023)。此类方法可以观测系统调用,例如进程执行、敏感文件访问或 namespace 操作。

然而,许多工作仅聚焦于行为检测,而未整合预防机制和安全属性的理论形式化。此外,实验评估常常仅使用小规模集群,这限制了结果对复杂企业环境的适用性。

我们的方法试图整合三种经常被分别处理的维度:系统行为的数学形式化、基于内核事件的行为检测,以及 Kubernetes 准入平面的声明式控制策略。

  1. 威胁模型与问题形式化

我们假定攻击者模型具有以下能力:

  1. 在被攻陷的容器内执行任意代码。
  2. 访问 Kubernetes 集群内部网络。
  3. 通过利用内核漏洞或 RBAC 配置不当尝试进行权限提升。

我们不假定 Kubernetes 控制平面在初始时已被攻陷,但考虑到与 pods 关联的 ServiceAccount 凭证被滥用的可能性。

我们将系统行为形式化为一个标记迁移系统:

$$ LTS = (S, A, \rightarrow) $$

其中:

状态 $S$ 包括 pods 配置、RBAC 权限、网络状态以及每个节点上的活动资源。动作 $A$ 包括诸如创建 pod、执行命令、挂载卷和网络连接等事件。

我们定义 $A_{esc}$ 的一个子集,其中包含与容器逃逸或权限提升尝试相关的动作。于是,完整性属性可表示为:

$$ \forall s \in S, \neg \exists a \in A_{esc} : s \xrightarrow{a} s’ \land compromised(s’) $$

检测机制的目标是识别属于子集 $A_{mal} \subseteq A$ 的迁移,这些迁移表明存在恶意行为,同时最小化误报率。

  1. 所提方法

所提出的架构由四个互补的安全控制层组成。

层 目标 工具
预部署 镜像漏洞分析 Trivy, YARA
准入 安全策略验证 OPA/Gatekeeper
运行时 行为监控 Falco (eBPF)
响应 自动化遏制 NetworkPolicy, cordon/drain

镜像分析使用 Trivy 扫描器识别软件包和依赖项中的已知漏洞(AQUA SECURITY, 2023)。YARA 规则用于识别与恶意软件或加密货币矿工相关的模式。

在准入阶段,Open Policy Agent 与 Gatekeeper 集成,对以 Rego 定义的策略进行评估,从而阻止违反安全要求的资源创建(OPA, 2023)。

行为检测算法

Input: event stream E
Output: alert set A

for each event e in E:
    if match_rule(e, Sigma_rules):
        A.add(e)
    else if anomaly_score(e) > θ:
        A.add(e)

return A

算法的近似复杂度为 $O(n)$,其中 $n$ 为被监控事件数,前提是规则具有高效索引。

自动化响应算法

Input: alert a

if a.severity >= HIGH:
    isolate_pod(a.pod)
    revoke_token(a.serviceAccount)
    snapshot_forensics(a.node)

自动化响应旨在迅速遏制威胁,同时不完全中断集群运行。

  1. 实现

该架构在 Kubernetes 1.28 环境中实现,容器运行时使用 containerd 1.7。内核事件监控采用 Falco 0.36,并使用 eBPF。

用于检测逃逸尝试的 Falco 规则示例如下:

- rule: Container Escape Attempt
  condition: container and evt.type=execve and proc.name=nsenter
  output: "Possible escape attempt (user=%user.name container=%container.id)"
  priority: CRITICAL

使用 OPA 实现的准入策略:

deny[msg] {
  input.request.kind.kind == "Pod"
  input.request.object.spec.containers[_].securityContext.privileged == true
  msg := "Privileged container execution not allowed"
}

安全日志和事件被汇总到 Elastic Stack 中,以便进行关联和后续分析。

  1. 实验评估

实验环境由一个 Kubernetes 集群组成,包含 120 个物理节点,每个节点配备 Intel Xeon Gold 处理器和 256 GB 内存。该集群在不同 namespaces 中运行约 2,400 个 pods。

我们模拟了三个主要攻击场景:

  1. 利用 CVE‑2019‑5736 的逃逸尝试。
  2. 部署 XMRig 加密货币矿工。
  3. 使用已被泄露的凭证进行横向移动。

汇总结果如下表所示。

指标 基线(日志) 所提架构
检测率 71.4% 96.3%
误报率 5.9% 3.8%
MTTD 14.2 分钟 3.1 分钟
MTTR 27.6 分钟 9.6 分钟
平均 CPU 开销 1.9% 4.7%

结果表明,基于内核事件的可观测性显著提升了对恶意活动的检测能力,即使在高度动态的环境中亦然。

  1. 案例研究

为在更贴近真实的场景中评估该架构,我们模拟了一个易受远程代码执行攻击的 Web 应用被攻陷的情况。攻击者利用该漏洞后,在容器内执行了交互式命令:

kubectl exec -it web-pod -- /bin/sh

随后,入侵者尝试安装附加工具并下载远程载荷。Falco 检测到在未授权容器中执行交互式 shell,并生成了高严重级别告警。

自动响应机制立即应用了一条限制性网络策略,阻断了受攻陷 pod 的出站流量。同时,关联的 ServiceAccount 令牌被撤销,并采集了节点快照以供取证分析。

后续分析识别出对 /var/run/docker.sock 中运行时 socket 的访问尝试,表明可能存在权限提升企图。

  1. 讨论

实验结果表明,使用 eBPF 的内核级监控在检测与容器逃逸技术及异常命令执行相关的行为方面尤为有效。这种可见性无法仅通过应用日志或网络遥测获得。

然而,该方法也存在一些局限。系统有效性取决于检测规则的质量及其持续更新。此外,高度复杂的攻击可能会尝试利用无文件(fileless)技术或直接操纵系统调用来规避检测。

从运维角度,我们建议为运行 Kubernetes 环境的安全团队采用以下三项主要实践:

这些实践可补充所提架构,并显著降低攻击面。

  1. 结论

本文提出了一种用于 Kubernetes 环境中威胁检测与遏制的集成架构,将行为形式化建模与实用的可观测性和自动化响应机制相结合。

将系统形式化为标记迁移系统,使我们能够表达与宿主机和集群完整性相关的安全属性。实验实现表明,镜像分析、准入策略和内核级监控的结合,可显著改善安全运营指标。

所得结果表明,整合理论与实践的混合方法,是增强大规模云原生基础设施安全性的有前景路径。

参考文献

AQUA SECURITY. Trivy: Vulnerability Scanner for Containers and Filesystems. 2023. Available at: https://github.com/aquasecurity/trivy. Accessed on: 10 out. 2023.

BUI, Thanh. Analysis of Docker Security. arXiv, 2015. Available at: https://arxiv.org/abs/1501.02967. Accessed on: 10 out. 2023.

BURNS, Brendan; BEDA, Joe; HIGHTOWER, Kelsey. Kubernetes: Up and Running. Sebastopol: O’Reilly Media, 2019. Available at: https://www.oreilly.com/library/view/kubernetes-up-and/9781492046523/. Accessed on: 10 out. 2023.

CNCF. Falco Runtime Security. 2023. Available at: https://falco.org. Accessed on: 10 out. 2023.

FALCO. Falco Documentation. 2023. Available at: https://falco.org/docs/. Accessed on: 10 out. 2023.

GOOGLE. Borg, Omega, and Kubernetes. 2016. Available at: https://research.google/pubs/pub43438/. Accessed on: 10 out. 2023.

KUBERNETES. Kubernetes Documentation. 2023. Available at: https://kubernetes.io/docs. Accessed on: 10 out. 2023.

MERKEL, Dirk. Docker: Lightweight Linux Containers for Consistent Development and Deployment. Linux Journal, 2014. Available at: https://www.linuxjournal.com/content/docker-lightweight-linux-containers-consistent-development-and-deployment. Accessed on: 10 out. 2023.

MITRE. ATT&CK for Containers Matrix. 2023. Available at: https://attack.mitre.org/matrices/enterprise/containers/. Accessed on: 10 out. 2023.

OPEN CONTAINERS INITIATIVE. runc Security Advisory CVE‑2019‑5736. 2019. Available at: https://github.com/opencontainers/runc/issues/2128. Accessed on: 10 out. 2023.

OPA. Open Policy Agent Documentation. 2023. Available at: https://www.openpolicyagent.org/docs/latest/. Accessed on: 10 out. 2023.

PALO ALTO NETWORKS. TeamTNT Cloud Threat Analysis. 2021. Available at: https://unit42.paloaltonetworks.com/teamtnt-operations-cloud/. Accessed on: 10 out. 2023.

POHLACK, M.; SIEGEL, M. Linux Containers and Kernel Isolation. IEEE Security & Privacy, 2019. Available at: https://doi.org/10.1109/MSEC.2019.2924556. Accessed on: 10 out. 2023.

RAHMAN, M. et al. Security Risks in Containerized CI/CD Pipelines. IEEE Cloud Computing, 2020. Available at: https://doi.org/10.1109/MCC.2020.2995785. Accessed on: 10 out. 2023.

RED HAT. Securing Kubernetes Clusters. 2022. Available at: https://www.redhat.com/en/topics/containers/kubernetes-security. Accessed on: 10 out. 2023.

SIGSTORE. Cosign Container Signing. 2023. Available at: https://docs.sigstore.dev/cosign. Accessed on: 10 out. 2023.

SHU, Ren et al. A Study of Security Vulnerabilities on Docker Hub. Proceedings of ACM CCS, 2017. Available at: https://doi.org/10.1145/3133956.3134014. Accessed on: 10 out. 2023.

SYSDIG. Runtime Security with eBPF. 2022. Available at: https://sysdig.com/blog/ebpf-runtime-security/. Accessed on: 10 out. 2023.

VILLAMIZAR, M. et al. Infrastructure Cost Comparison of Containers and Virtual Machines. IEEE Cloud Computing, 2015. Available at: https://doi.org/10.1109/MCC.2015.51. Accessed on: 10 out. 2023.

ZHANG, Q. et al. Security Analysis of Kubernetes. IEEE Conference on Cloud Engineering, 2018. Available at: https://doi.org/10.1109/IC2E.2018.00025. Accessed on: 10 out. 2023.

NIST. Application Container Security Guide (SP 800‑190). 2017. Available at: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-190.pdf. Accessed on: 10 out. 2023.

CNCF. Cloud Native Security Whitepaper. 2022. Available at: https://github.com/cncf/tag-security. Accessed on: 10 out. 2023.

KREBS, Brian. The Rise of Cryptomining Malware in Cloud Infrastructure. 2021. Available at: https://krebsonsecurity.com. Accessed on: 10 out. 2023.

AQUA SECURITY. Cloud Native Threat Report. 2023. Available at: https://www.aquasec.com/resources/threat-reports/. Accessed on: 10 out. 2023.

MICROSOFT. Container Security in the Cloud. 2022. Available at: https://learn.microsoft.com/security/containers. Accessed on: 10 out. 2023.