Kubernetes Resource Injection
First Post:
Last Update:
Word Count: 715
Read Time: 2min
Last Update:
Word Count: 715
Read Time: 2min
注入产生原因
当负责分析指定 CRD 的 kubernetes controller 存在漏洞时,在攻击者可控某些云 CR 自定义资源,通过写入恶意 payload ,促使 kubernetes controller 控制器 在解析、处理、存储 CR 时或生成其他相关资源的时候触发恶意行为。
注入分类
注入有以下三种分类方式
注入存在点的注入技术分类
- 模版注入
- 结束符注入
;
\n
}
"
等 - 对象或对象引用注入
结果分类
- 信息泄露 - 环境变量敏感信息引入或注入可控环境
- 表达式注入-可执行脚本,表达式,hook, 宏, sql
- 配置文件注入
- [可能的] 文件路径,请求参数,数据库 访问控制绕过
- 级联注入 (注入上级 CR 后生成下层各个其他 CR 组件时生成了恶意的下层组件 如Pod 的过程)
注入点分类
- annotation 注入
- spec 注入 不严格的 validation 配置
- 可控制的 ref
案例
jqctf2023 - 逃逸?逃译!
- 注入点为 lb-type annotation
- 注入类型是 换行注入
- 注入内容为 恶意 pod 配置
- PoC 为 在 annotation 下注入名称后 注入整个 Pod 的配置后 注入 secret 中有的 flag 信息
- https://paper.seebug.org/1882/ CVE-2022-21701 istio 类似
Kubernetes - Nginx ingress controller CVE
- 注入点为 annotation
- 注入类型是 结束符注入 ;
- 注入内容是 nginx 配置文件 或者 lua 脚本 可以任意读泄漏 serviceaccount
- https://hackerone.com/reports/1728174 lua 表达式注入 exec CVE-2021-25742 and CVE-2021-25746
- https://hackerone.com/reports/1378175 nginx controller file leak
- CVE-2023-5044 https://raesene.github.io/blog/2023/10/29/exploiting-CVE-2023-5044/ lua 表达式 exec
一个目前未被披露的漏洞 possible CVE unpublished vulnerability
- 背景:多租户系统中,存在 Hacker 租户
- 注入点为 env 环境变量(租户可控)
- 注入类型为 对象注入 不安全的ref
- 危害: 单租户可以直接泄漏 controller 或 controller 下的任意指定的 secrets/configmap 的指定 key
- 注入 env 使用 secretKeyRef 注入其他数据 https://kubernetes.io/docs/tasks/inject-data-application/distribute-credentials-secure/#define-container-environment-variables-using-secret-data
信息
- CRD kubernetes document: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/
- CRD validation kubernetes document: https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation
- OpenApi v3 schema: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.0.0.md#schemaObject
较易受影响的服务
这类漏洞产生原因是主要是由于 CRD 控制器的设计问题。因为在多用户的场景或者 SaaS 场景下,用户可能可以间接或者直接控制集群内部的某些资源(可能是 CRD 资源,也可能是其他资源),而这些资源的控制器可能直接或者间接的拼接用户可控的数据,从而导致此类注入漏洞,并且进一步危害集群内部的安全。