Kubernetes 容器创建时具有过多的 Linux 功能

编辑

Kubernetes 容器创建时具有过多的 Linux 功能编辑

此规则检测到部署了一个或多个危险的宽松 Linux 功能的容器。具有部署具有附加功能的容器的能力的攻击者可以将其用于集群内的进一步执行、横向移动或权限提升。此规则中检测到的功能已用于容器逃逸到主机。

规则类型:查询

规则索引:

  • logs-kubernetes.*

严重性:中等

风险评分: 47

每隔运行:5 分钟

从以下位置搜索索引:无(日期数学格式,另请参见 其他回溯时间

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

参考:

标签:

  • 数据源:Kubernetes
  • 策略:执行
  • 策略:权限提升

版本: 4

规则作者:

  • Elastic

规则许可:Elastic License v2

调查指南编辑

分类和分析

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

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

BPF - 允许创建 BPF 映射、加载 BPF 类型格式 (BTF) 数据、检索 BPF 程序的 JITed 代码等。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 Fleet 集成或类似结构的数据必须与此规则兼容。

规则查询编辑

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