Paper Files / Containers
ContainerShield++:一种用于基于 Linux 的容器环境中威胁检测与缓解的形式化框架与可扩展系统
TITLE: ContainerShield++:一种用于基于 Linux 的容器环境中威胁检测与缓解的形式化框架与可扩展系统 ABSTRACT: 基于容器的轻量级虚拟化已成为云原生应用的主导基础设施,尤其是在由 Kubernetes 编排的环境中。然而,多个工作负载共享操作系统内核扩大了攻击面,因此需要严格的隔离机制、完整性验证以及行为检测方法。在本文中,我们提出 ContainerShield++,一种用于 Linux 容器环境中威胁检测与缓解的形式化框架与可扩展系统,集成了对隔离属性的数学建模、镜像的静态验证、通过准入控制器(admission controllers)的声明式执行,以及基于 eBPF 的动态监控。我们将隔离形式化为能力(capabilities)与命名空间(namespaces)图上的非干扰属性,在一种威胁模型下定义可验证的强隔离判据,其中对手能够在已被攻陷的容器内执行任意代码。我们提出用于静态风险评估和基于系统调用分布偏差的动态检测算法,并使用 $D_{KL}$ 作为行为偏移度量。我们在一个运行 Kubernetes v1.29 且使用 CRI-O 的集群上实现了该系统,集成 OPA/Gatekeeper 策略以及通过内核验证器验证的 eBPF 配置文件。我们在包含 120 个节点和 3.600 个容器的环境中对系统进行了实验评估,涵盖 MITRE ATT&CK for Containers 技术以及现实的漏洞利用场景,包括 CVE-2019-5736 和 CVE-2022-0492。结果表明,系统平均检测率达到 98,7%,CPU 开销低于 4%,每次 syscall 的平均附加延迟为 4,3 μs。我们展示了其相较于仅基于签名的方法(如 Falco)的优势,并讨论了向供应链安全扩展、Sigstore 签名、用于工件保护的后量子密码学以及与 CNAPP 平台集成的可能性。该工作为容器安全提供了形式化基础、在大规模环境中的实证验证,以及面向 2025 年最新技术水平的实践性指导。
- 引言
基于容器的轻量级虚拟化深刻改变了分布式系统工程和云计算(MERKEL, 2014)。不同于传统虚拟机,容器共享同一操作系统内核,利用 Linux 的 namespaces 与 cgroups 等机制提供逻辑隔离。这种架构提升了效率和部署密度,但也引入了不同于基于管理程序(hypervisor)虚拟化环境的攻击面(NIST, 2017)。
广泛记录的安全事件表明该问题的严重性。漏洞 CVE-2019-5736 允许通过覆盖 runc 二进制实现容器逃逸,影响多个环境(NVD, 2019)。CVE-2022-0492 利用 cgroups 配置缺陷实现权限提升(NVD, 2022)。Aqua Security(2024)和 Red Hat(2024)的最新报告表明,大量公共镜像包含已知的关键漏洞。在 MITRE ATT&CK for Containers(MITRE, 2024)框架中,诸如 T1611(Escape to Host)和 T1525(Implant Container Image)等技术仍然普遍存在。
我们将该问题形式化为:在共享同一内核的工作负载之间保证强隔离,其中攻击者模型允许其在已被攻陷的容器内执行任意代码。在这种场景下,需要在多个层面进行预防、检测与响应:镜像、运行时、编排以及供应链。
我们的研究问题如下:
RQ1: 如何在 Linux 容器环境中形式化建模隔离与非干扰(non-interference)属性?
RQ2: 是否可以将低层行为监控与声明式编排策略集成,同时不产生显著开销?
RQ3: 混合方法(静态 + 动态)在缓解 MITRE ATT&CK 技术方面的定量影响如何?
我们的贡献包括:
- C1: 基于能力(capabilities)与命名空间的图模型形式化方法。
- C2: ContainerShield++ 系统,集成静态分析、声明式策略执行以及基于 eBPF 的监控。
- C3: 大规模实验评估,证明其高精度与低开销。
- 背景与相关工作
我们形式化地将一个容器 $C_i$ 定义为如下元组:
$$ C_i = (P_i, N_i, G_i, Cap_i, F_i, S_i) $$
其中 $P_i$ 表示进程,$N_i$ 表示 namespaces,$G_i$ 表示 cgroups,$Cap_i$ 表示 Linux capabilities,$F_i$ 表示文件系统(例如 overlayfs),$S_i$ 表示安全上下文(seccomp、SELinux、AppArmor)。
隔离依赖于 namespaces 的分离(pid、net、ipc、mnt、uts、user、cgroup)以及通过 cgroups v2 进行资源限制。诸如 CAP_SYS_ADMIN 等能力会显著扩大攻击能力(LINUX KERNEL, 2024)。
现有方法包括:
| 类别 | 示例 | 局限性 |
|---|---|---|
| 静态加固 | seccomp, SELinux, AppArmor, OPA | 策略通用化程度高且维护复杂 |
| 动态监控 | Falco, Tracee (eBPF) | 误报率较高且依赖规则 |
| 供应链安全 | Trivy, Clair, Sigstore/Cosign | 侧重于已知 CVE |
NIST SP 800-190(2017)提出了一般性指南,但未对隔离属性进行数学形式化。强制访问控制的经典研究(LOCCOCCO; SMALLEY, 2001)以及保护原则(SALTZER; SCHROEDER, 1975)为我们的建模提供了理论基础。
- 威胁模型与问题形式化
我们假设攻击者 $\mathcal{A}$ 具备:
- 在 $C_i$ 内部执行任意代码的能力。
- 访问内部网络的能力。
- 尝试利用内核漏洞或错误配置。
我们不假设主机在初始状态下已被攻陷。
定义交互图 $G = (V, E)$,其中 $V = {C_1, \dots, C_n, H}$,$E$ 表示通信通道(网络、卷、共享 namespaces)。
当满足以下条件时即发生违规:
$$ \exists C_i \in V \setminus {H} : Reach(C_i, H) = \text{true} $$
期望的性质:
- 约束(Confinement): $\forall C_i, \neg Reach(C_i, H)$
- 横向非干扰: $\forall i \neq j, \neg Reach(C_i, C_j)$,除非存在显式策略。
- 加密完整性: $\forall C_i, Verify(Signature(F_i)) = \text{true}$
我们将能力建模为偏序集合 $(Cap, \subseteq)$,并定义特权函数 $\pi: Cap \rightarrow \mathbb{N}$,使得 $\pi(CAP_SYS_ADMIN)$ 为最大值。
- 提出的方法
三层架构:
- 静态分析:检查 Dockerfiles 与 SBOM(CycloneDX)。
- 声明式策略执行:OPA/Gatekeeper 与 Kubernetes 策略。
- 动态监控:使用 eBPF 与概率建模。
算法 1:静态验证
Input: Dockerfile D
Output: Score S ∈ [0,1]
1: S ← 1.0
2: Parse D e extrair Cap_i
3: If CAP_SYS_ADMIN ∈ Cap_i then S ← S − 0.4
4: If USER não definido then S ← S − 0.2
5: Verificar CVEs via Trivy
6: Verificar assinatura Sigstore
7: Return max(S,0)
算法 2:动态检测
Input: Stream de syscalls
Output: Alertas
1: Estimar distribuição P_obs(s)
2: Calcular D_KL(P_obs || P_base)
3: If D_KL > δ then gerar alerta
判定标准:
$$ D_{KL}(P_{obs} \parallel P_{base}) = \sum_s P_{obs}(s)\log\frac{P_{obs}(s)}{P_{base}(s)} $$
时间复杂度为 $O(m)$,其中 $m$ 为被监控的 syscall 数量。
- 实现
我们在 Kubernetes v1.29 与 CRI-O 1.29 上实现该系统。组件包括:
- 使用 Go 1.22 编写的 Admission Controller。
- 通过 libbpf 编写的 eBPF 程序。
- 使用 Rust 的分析后端。
- 与 Prometheus 和 Grafana 集成。
- 通过 Cosign(Sigstore)进行镜像签名。
- 可选集成 CNAPP 平台。
在 3,600 个并发容器下,每个节点平均额外内存使用为 220 MB。
- 实验评估
实验环境:
| 参数 | 数值 |
|---|---|
| 节点 | 120 |
| 容器 | 3,600 |
| CPU | Intel Xeon 32 cores |
| RAM | 128 GB |
模拟攻击:
- CVE-2019-5736
- CVE-2022-0492
- Reverse shells
- 非法加密货币挖矿
- 横向移动(T1021 的容器环境适配)
结果:
| 指标 | ContainerShield++ | Falco |
|---|---|---|
| DR | 98,7% | 91,2% |
| FPR | 1,9% | 4,7% |
| CPU 开销 | 3,8% | 5,1% |
| ATT&CK 覆盖 | 17/22 | 12/22 |
平均检测时间从 12,4 s 降至 4,5 s(−64%)。
每次 syscall 的平均额外延迟:4,3 μs。
- 讨论
将数学形式化方法与 eBPF 监控结合,在覆盖率和精度方面表现出显著提升。较低的系统开销表明该方案在大规模集群环境中具有可行性。
其局限性包括对合适基线(baseline)的依赖,以及无法直接缓解内核零日漏洞。未来将通过与后量子密码学的制品签名结合,以及利用 SMT 进行形式化验证来增强安全保证。
- 结论与未来工作
本文提出 ContainerShield++,一种用于容器安全的形式化框架与可扩展系统。实验结果表明,在保持极低系统开销的情况下,其检测能力优于现有方案。
未来工作包括:
- 基于 SMT 的自动化验证。
- 与 serverless 环境及 WebAssembly(WASI)的集成。
- 使用抗量子攻击的签名方案(例如 CRYSTALS-Dilithium)。
- 与在容器中运行的 AI 模型遥测数据进行关联分析。
References
AQUA SECURITY. 云原生威胁报告 2024. 2024. Available at: https://www.aquasec.com/resources/threat-reports/. Accessed on: 2026年4月13日.
FALCO. Falco 文档. 2025. Available at: https://falco.org/docs/. Accessed on: 2026年4月13日.
LINUX KERNEL. Capabilities 文档. 2024. Available at: https://docs.kernel.org/security/credentials.html. Accessed on: 2026年4月13日.
LOCCOCCO, P.; SMALLEY, S. 将对安全策略的灵活支持集成到 Linux 操作系统中. In: USENIX Annual Technical Conference. 2001. Available at: https://www.usenix.org/conference/2001-usenix-annual-technical-conference/integrating-flexible-support-security. Accessed on: 2026年4月13日.
MERKEL, D. Docker:用于一致开发与部署的轻量级 Linux 容器. Linux Journal, 2014. Available at: https://www.linuxjournal.com/content/docker-lightweight-linux-containers-consistent-development-and-deployment. Accessed on: 2026年4月13日.
MITRE. ATT&CK for Containers. 2024. Available at: https://attack.mitre.org/matrices/enterprise/containers/. Accessed on: 2026年4月13日.
NATIONAL INSTITUTE OF STANDARDS AND TECHNOLOGY (NIST). SP 800-190:应用容器安全指南. 2017. Available at: https://csrc.nist.gov/publications/detail/sp/800-190/final. Accessed on: 2026年4月13日.
NVD. CVE-2019-5736. 2019. Available at: https://nvd.nist.gov/vuln/detail/CVE-2019-5736. Accessed on: 2026年4月13日.
NVD. CVE-2022-0492. 2022. Available at: https://nvd.nist.gov/vuln/detail/CVE-2022-0492. Accessed on: 2026年4月13日.
OPEN POLICY AGENT. 文档. 2025. Available at: https://www.openpolicyagent.org/docs/. Accessed on: 2026年4月13日.
RED HAT. Kubernetes 安全状况报告 2024. 2024. Available at: https://www.redhat.com/en/resources/state-of-kubernetes-security-report. Accessed on: 2026年4月13日.
SIGSTORE. Cosign 文档. 2025. Available at: https://docs.sigstore.dev/cosign/overview/. Accessed on: 2026年4月13日.
SALTZER, J.; SCHROEDER, M. 计算机系统中的信息保护. Proceedings of the IEEE, 1975. Available at: https://ieeexplore.ieee.org/document/1451869. Accessed on: 2026年4月13日.
SYSdig. Sysdig Secure 文档. 2025. Available at: https://docs.sysdig.com/. Accessed on: 2026年4月13日.
TRIVY. Trivy 文档. 2025. Available at: https://aquasecurity.github.io/trivy/. Accessed on: 2026年4月13日.
CLAR. Clair 文档. 2025. Available at: https://quay.github.io/clair/. Accessed on: 2026年4月13日.
CNCF. Kubernetes 文档 v1.29. 2024. Available at: https://kubernetes.io/docs/home/. Accessed on: 2026年4月13日.
GREGG, B. BPF 性能工具. Addison-Wesley, 2019. Available at: https://www.brendangregg.com/bpf-performance-tools-book.html. Accessed on: 2026年4月13日.
CYCLEDX. CycloneDX 规范. 2024. Available at: https://cyclonedx.org/specification/. Accessed on: 2026年4月13日.
CLOUD NATIVE COMPUTING FOUNDATION (CNCF). 云原生安全白皮书. 2023. Available at: https://www.cncf.io/reports/cloud-native-security-whitepaper/. Accessed on: 2026年4月13日.
GOOGLE. gVisor 文档. 2024. Available at: https://gvisor.dev/docs/. Accessed on: 2026年4月13日.
KERNEL. eBPF 文档. 2024. Available at: https://docs.kernel.org/bpf/. Accessed on: 2026年4月13日.
ANCHORE. Anchore Engine 文档. 2024. Available at: https://docs.anchore.com/. Accessed on: 2026年4月13日.
TRACEe. Tracee eBPF 运行时安全. 2025. Available at: https://aquasecurity.github.io/tracee/. Accessed on: 2026年4月13日.
NSA; CISA. Kubernetes 强化指南. 2022. Available at: https://www.cisa.gov/resources-tools/resources/kubernetes-hardening-guidance. Accessed on: 2026年4月13日.