ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Kubernetes Goat 的 KICS 基础设施即代码安全扫描报告解读:265 个 IaC 问题的分布、成因与源码定位

Kubernetes Goat 的 KICS 基础设施即代码安全扫描报告解读:265 个 IaC 问题的分布、成因与源码定位 Kubernetes Goat 的 KICS 基础设施即代码安全扫描报告解读265 个 IaC 问题的分布、成因与源码定位【免费下载链接】kubernetes-goatKubernetes Goat is a Vulnerable by Design cluster environment to learn and practice Kubernetes security using an interactive hands-on playground 项目地址: https://gitcode.com/GitHub_Trending/ku/kubernetes-goat本文基于 Kubernetes Goat 仓库内置的 KICS 扫描报告文档 kics.md 及其生成的交互式 HTML 报告 kics-report.html完整还原一次针对整个仓库基础设施即代码IaC资产的静态分析结果265 个问题按 HIGH/MEDIUM/LOW/INFO 四个严重级别如何分布、每类问题命中了哪些具体部署清单与 Dockerfile并结合 infrastructure/cache-store/Dockerfile、scenarios/cache-store/deployment.yaml 等仓库内真实文件定位问题成因帮助你理解 IaC 扫描工具的输出结构以及如何按报告回溯源码完成整改。KICS 是什么面向基础设施即代码的静态分析工具KICSKeeping Infrastructure as Code Secure是一个开源的基础设施即代码静态代码分析方案无需启动集群或容器直接解析 YAML 清单、Dockerfile、Helm Chart 等声明式文件即可发现配置层面的安全隐患。Kubernetes Goat 项目定位为“Vulnerable by Design”的 Kubernetes 安全练习场其全部工作负载定义都以 IaC 形式存放在仓库中因此非常适合用 KICS 这类工具做全量静态体检——这也是 guide/docs/security-reports/ 目录下 Checkov、KICS、Kubescape 三份对照报告见 checkov.md、kubescape.md存在的原因。扫描范围与总体结果从 HTML 报告头部的元数据kics-report.html可以确认本次扫描的基本参数扫描工具版本KICS 1.5.1扫描路径仓库根目录.识别出的平台Dockerfile、Common、Kubernetes扫描耗时约 5 秒22:06:01 至 22:06:06报告时间戳 2022-04-23总问题数为265个按严重级别分布为严重级别数量HIGH29MEDIUM142LOW91INFO3TRACE0这份统计与 kics.md 文档中的 Overview 完全一致HTML 报告中的可点击徽章severity-count-high: 29、severity-count-medium: 142、severity-count-low: 91、severity-count-info: 3、severity-count-total: 265也与之对应说明文档数字来自真实的工具输出而非手工估算。HIGH 级别问题29 个三条规则全部指向执行身份与权限放大29 个 HIGH 问题集中在 3 条 KICS 规则上恰好对应容器安全中“身份与权限”的三大要害。1. Missing User InstructionDockerfile 平台Build Process 类15 处规则含义Dockerfile 中未出现USER指令时容器进程默认以 root 运行。报告中列出的命中文件包括 infrastructure/cache-store/Dockerfile、infrastructure/hunger-check/Dockerfile、infrastructure/internal-api/Dockerfile、infrastructure/info-app/Dockerfile、infrastructure/hidden-in-layers/Dockerfile、infrastructure/health-check/Dockerfile 等 15 个 Dockerfile。以 infrastructure/cache-store/Dockerfile 为例报告标注问题位于第 1 行FROM redis:6-alpine LABEL MAINTAINERMadhu Akula INFOKubernetes Goat COPY data.redis /data.redis COPY start-redis.sh /start-redis.sh CMD [ /bin/sh, /start-redis.sh ]整个文件确实没有任何USER指令与报告输出的 Expected应包含USER指令/ Found未包含判定完全吻合。这类问题在 Goat 场景下并非误报——很多攻击场景如隐藏层、缓存未授权访问恰恰依赖了容器内宽松的运行身份。2. Privilege Escalation AllowedKubernetes 平台Insecure Configurations 类4 处该规则检测 Pod/容器未设置securityContext.allowPrivilegeEscalation: false。从仓库的 Deployment 清单结构看绝大多数工作负载例如 scenarios/cache-store/deployment.yaml 的容器段只有image与ports两个字段都没有定义任何securityContext因此 KICS 将其全部判定为允许特权升级。3. Shared Host Network NamespaceKubernetes 平台Insecure Configurations 类2 处该规则检测hostNetwork: true的用法。Goat 集群中确实存在刻意开启主机网络共享的守护进程式负载如docker-bench-security的 DaemonSet 与system-monitor的 Deployment从清单结构看这正是该规则命中的来源。共享主机网络命名空间意味着容器可以直接嗅探节点上的明文流量、访问节点回环上的 kubelet 等本地服务是节点逃逸路径中最危险的配置之一。MEDIUM 级别问题142 个默认值缺失与命名空间滥用构成主体MEDIUM 问题共 142 个覆盖 10 条规则其中 4 条规则占了绝大部分反映的是“安全默认值没有被显式声明”这一系统性问题。1. Using Unrecommended Namespace23 处KICS 对落在default、kube-system等非推荐命名空间中的工作负载给出告警。从报告命中的文件看涉及 scenarios/build-code/deployment.yaml第 4 行、第 27 行等多处、scenarios/batch-check/job.yaml、scenarios/hunger-check/deployment.yaml 等大量清单。对比之下scenarios/cache-store/deployment.yaml 开头显式声明了独立命名空间apiVersion: v1 kind: Namespace metadata: name: secure-middleware这正是该场景未命中此规则的原因——命名空间隔离是 KICS 判定“推荐命名空间”的直接依据。2. Service Account Token Automount Not Disabled14 处规则检测 Pod 是否设置automountServiceAccountToken: false。报告显示其命中 scenarios/build-code/deployment.yaml第 13 行、scenarios/cache-store/deployment.yaml第 34 行、scenarios/batch-check/job.yaml第 9 行等 14 个清单。由于这些 Pod 的spec中根本没有该字段API Server 会按默认行为为容器挂载 ServiceAccount 的 JSON Token——这也是 Goat 中“通过缓存/内部 API 读取挂载 Token 再调用 kube-apiserver”一类攻击链的起点。3. CPU Requests Not Set 与 Liveness Probe Is Not Defined12 处 / 11 处这两条分别对应资源限制与可用性探针缺失。以 scenarios/cache-store/deployment.yaml 为例containers: - name: cache-store image: madhuakula/k8s-goat-cache-store ports: - containerPort: 6379容器既没有resources.requests/limits也没有livenessProbe/readinessProbe因此同一清单会同时被 CPU/Memory 请求未设置、探针未定义等多条规则命中——这也解释了为何 265 个问题会集中在少数十几个文件上一份“裸奔”的 Deployment 清单可以触发十几条规则。4. Non Kube System Pod With Host Mount17 处非 kube-system 组件挂载主机路径hostPath会被判为中危。Goat 中挂载宿主路径的场景集中在health-check、docker-bench-security、system-monitor等与宿主机交互的负载从清单结构看这些挂载是攻击场景设计的一部分但在生产视角下属于需要重点评审的高风险配置。其余 MEDIUM 规则Containers With Added Capabilities1 处容器被显式添加了 capabilitiesDockerfile 平台 4 条规则Apt Get Install Pin Version Not Defined4 处、RUN Instruction Using cd Instead of WORKDIR2 处、Run Using apt3 处、Unpinned Package Version in Pip Install2 处全部指向 infrastructure/ 下各 Dockerfile 的构建期依赖管理与供应链固定问题。LOW 级别问题91 个宿主机暴露面与 RBAC 通配符LOW 问题涉及 6 条规则值得单列的有两类Docker Daemon Socket is Exposed to Containers3 处将/var/run/docker.sock挂载进容器等价于交出宿主机的 root 权限。报告中该规则命中的正是health-check、docker-bench-security相关清单与 Checkov 报告中同名的CKV_K8S_27结果相互印证。RBAC Wildcard In Rule4 处Role/ClusterRole 规则中出现*通配符。典型的如 scenarios/hunger-check/deployment.yaml 中的secret-readerRolerules: - apiGroups: [] # indicates the core API group resources: [*] # all the resources verbs: [get, watch, list]resources: [*]直接触发了该规则在 Goat 的剧情里这个“宽泛的 secret 读取权限”正是后续凭据窃取场景的入口。Pod or Container Without ResourceQuota / LimitRange14 处命名空间缺少资源配额约束Service Does Not Target Pod8 处、Multiple RUN/ADD/COPY Instructions2 处、Permissive Access to Create Pods1 处、Add Instead of Copy1 处等其余规则。INFO 级别问题3 处仅剩 1 条规则APT-GET Not Avoiding Additional PackagesDockerfile 平台Supply-Chain 类提示apt-get install未使用--no-install-recommends之类的参数减少附带依赖属于构建优化层面的提示。如何复现与延伸阅读报告页面通过 iframe 内嵌方式展示交互式报告见 kics.md 末尾的IframeResizer组件完整 HTML 位于 guide/static/kics-report.html每个规则区块支持按严重级别过滤并给出 Expected/Found 判定与问题行号可直接据此定位到对应清单行。若想在本地对当前仓库做同类静态扫描可在仓库根目录使用 KICS 的 scan 命令并对 IaC 路径如 scenarios/ 与 infrastructure/ 下的 YAML/Dockerfile执行扫描并输出 HTML 报告具体参数与平台支持以你所安装的 KICS 版本文档为准——本报告对应的工具版本为 1.5.1规则集名称如Privilege Escalation Allowed、Using Unrecommended Namespace在新版本中可能调整但问题分类逻辑一致。三份对照报告中Checkov 用CKV_K8S_*/CKV_DOCKER_*编号给出了 263清单 39Dockerfile 36Helm Chart的失败检查明细见 checkov.mdKubescape 则从 CIS 基准视角给出另一组数据见 kubescape.md。交叉比对三者的输出可以区分“规则集覆盖差异”与“真实配置缺陷”凡是 KICS、Checkov、Kubescape 同时命中的条目如未设置 securityContext、hostPath 挂载、Docker socket 暴露就是 Goat 攻击场景所依赖的核心漏洞面也是学习者应当优先理解的部分。【免费下载链接】kubernetes-goatKubernetes Goat is a Vulnerable by Design cluster environment to learn and practice Kubernetes security using an interactive hands-on playground 项目地址: https://gitcode.com/GitHub_Trending/ku/kubernetes-goat创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表