Kubernetes 容器创建时使用了过多的 Linux 功能

编辑

Kubernetes 容器创建时使用了过多的 Linux 功能

编辑

此规则检测到一个部署的容器使用了多项危险的 Linux 功能。攻击者如果能够部署带有额外功能的容器,则可以利用这些功能进行进一步执行、横向移动或在集群内提升权限。此规则检测到的功能曾被用于容器逃逸到主机。

规则类型: 查询

规则索引:

  • logs-kubernetes.*

严重程度: 中等

风险评分: 47

每隔: 5 分钟

搜索索引自: 无 (日期数学格式,另请参阅 额外回溯时间)

每次执行的最大告警数: 100

参考:

标签:

  • 数据源:Kubernetes
  • 战术:执行
  • 战术:权限提升

版本: 5

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查 Kubernetes 容器创建时使用了过多的 Linux 功能

Linux 功能旨在将 root 权限划分为更小的单元。每个功能仅向线程授予执行特定特权任务所需的权限。在 Kubernetes 中,容器会获得一组默认功能,这些功能可以在创建时删除或添加。添加的功能使 Pod 中的容器拥有其他权限,这些权限可用于更改核心进程、更改集群的网络设置或直接访问底层主机。以下功能已用于容器逃逸技术

BPF - 允许创建 BPF 映射、加载 BPF 类型格式 (BTF) 数据、检索 BPF 程序的 JIT 代码等。DAC_READ_SEARCH - 绕过文件读取权限检查和目录读取和执行权限检查。NET_ADMIN - 执行各种与网络相关的操作。SYS_ADMIN - 执行一系列系统管理操作。SYS_BOOT - 使用 reboot(2) 和 kexec_load(2) 重启并加载新的内核以供后续执行。SYS_MODULE - 加载和卸载内核模块。SYS_PTRACE - 使用 ptrace(2) 追踪任意进程。SYS_RAWIO - 执行 I/O 端口操作 (iopl(2) 和 ioperm(2))。SYSLOG - 执行特权 syslog(2) 操作。

误报分析

  • 虽然这些功能默认情况下不包含在容器中,但某些合法镜像可能需要添加它们。此规则为受信任的容器镜像的例外情况留出了空间。要添加例外情况,请将受信任的容器镜像名称添加到查询字段 kubernetes.audit.requestObject.spec.containers.image 中。

设置

编辑

需要启用审核日志的 Kubernetes 集群集成或结构类似的数据才能与此规则兼容。

规则查询

编辑
event.dataset: kubernetes.audit_logs
  and kubernetes.audit.annotations.authorization_k8s_io/decision:"allow"
  and kubernetes.audit.verb: create
  and kubernetes.audit.objectRef.resource: pods
  and kubernetes.audit.requestObject.spec.containers.securityContext.capabilities.add: ("BPF" or "DAC_READ_SEARCH"  or "NET_ADMIN" or "SYS_ADMIN" or "SYS_BOOT" or "SYS_MODULE" or "SYS_PTRACE" or "SYS_RAWIO"  or "SYSLOG")
  and not kubernetes.audit.requestObject.spec.containers.image : ("docker.elastic.co/beats/elastic-agent:8.4.0" or "rancher/klipper-lb:v0.3.5" or "")

框架: MITRE ATT&CKTM