使用inspect检测kubernetes漏洞

本周早些时候,在Kubernetes API服务器中发现了一个关键的安全漏洞。脆弱性,CVE-2018-1002105型,发现一个攻击向量,允许未经授权或未经身份验证的用户升级其权限,并使用群集管理级访问运行任意命令。由于这些未经授权的请求是通过与API建立的连接发出的,这一事实加剧了此漏洞的严重性,通过检查审计日志和服务器日志来确定系统是否已被利用是不容易的方法。因为这个,实施Kubernetes的组织必须尽快识别并减轻其风险。谢天谢地,检查提供识别集群是否受影响所需的一切,如果是,采取适当的行动。

确保您的Kubernetes服务器已修补

CVE,确保集群受到保护的最佳方法是验证您运行的版本已被修补以解决此问题。受漏洞影响的版本有:

  • Kubernetes 1.0.x-1.9.x版
  • Kubernetes v1.10.0-1.10.10(固定在v1.10.11中)
  • Kubernetes v1.11.0-1.11.4(固定在v1.11.5中)
  • Kubernetes v1.12.0-1.12.2(固定在v1.12.3中)

不管您如何安装集群,通过运行kubernetes cli可以查询正在运行的版本。Kubectl版本--短,其返回的输出类似于:

客户端版本:v1.10.11服务器版本:v1.10.11

与督察,我们可以使用命令资源来评估任意命令的输出并将其与我们的期望进行比较。在这种情况下,我们可以获取库贝特尔命令,并快速验证服务器是否正确修补。

控件'kube_version_check'do impact 1.0 title'检查kubernetes服务器版本'describe command('kubectl version--short')do its('stdout')should_not match/server version:v1\.[0-9]\./its('stdout')should_not match/server version:v1\.10\.[0-9]$/its('stdout')should_not match/ser版本:v1\.10\.10$/its('stdout')不匹配/server版本:v1\.11\[0-4]$/its('stdout')不匹配/server版本:v1\.12\[0-2]$/endend

在上面的例子中,我们设定的预期是Kubectl版本--短不应返回存在漏洞的任何版本。

注意:由于inspi DSL是基于Ruby的语言,Ruby代码可以在控件中使用。退房这个替代例子它使用条件逻辑来简化扫描输出。(谢谢,杰瑞!)

减少未修补版本中的暴露

虽然升级到最新版本是解决此漏洞的理想方法,在短期内,对每个组织来说,这并不总是可行的。为此,CVE概述了当您暂时被迫运行旧版本时,如何减轻对漏洞的暴露。再一次,inspect可以帮助我们确保Kubernetes的配置是安全的,即使我们运行的是受影响的版本!

一个建议是确保聚合的API服务器不会在任何可能受影响的集群上使用。按CVE,下面的命令将让您知道聚合的API服务器是否在使用中,并将返回任何API服务的名称,如果是这样:

kubectl get apiservices \-o'jsonpath=range.items[?(@.spec.service.name!=“”)].元数据.名称\n“结束”

再一次,我们可以用英派克的命令要验证的资源,这一次,预期上述命令不会产生任何输出。

控制'aggregation_check'do impact 1.0 title'检查聚合的API是否在使用'describe command('kubectl get apiservices-o“jsonpath=range.items[?(@.spec.service.name!=\“\”)].metadata.name \“\\n\”end“')do its('stdout')should be empty end end

最后,cve还建议确保API服务器配置不允许匿名请求,而且非管理员用户没有exec/attach/portforward权限。虽然这些并不像以前的例子那么简单,它们已经包含在Kubernetes的独联体基准由互联网安全中心出版,明确地:

  • 1.1.1确保–anonymous auth参数设置为false
  • 1.1.12确保已设置许可控制插件denyescalatingexec。

谢天谢地,已经有一个inspect配置文件可用于在devsec cis-kubernetes基准!与其自己重新编写这些验证,我们可以从现有的dev-sec概要文件执行cis基准…

  • …整体而言:
    INSPEC执行https://github.com/dev-sec/cis-kubernetes-benchmark
  • …仅包括CVE特定控制:
    inspec exec\https://github.com/dev-sec/cis-kubernetes-benchmark\--controls=cis-kubernetes-benchmark-1.1.1 cis-kubernetes-benchmark-1.1.12
  • …或者除了我们自己的自定义控件之外,元轮廓

结论

无论你走哪条路,Inspect为您提供了快速验证环境所需的一切,并提供了有关如何修复任何可能暴露的系统的切实可行的见解,允许您继续创新,对系统的安全充满信心。

下一步是什么?

作者Nick Rycar

尼克是西雅图厨师总部的技术产品营销经理。必威官网betway必威官网当他不忙着准备产品演示时,必威官网betway他用可怕的双关语和不必要的深奥的流行文化琐事折磨他的同事。大多数情况下,他只是太平洋西北部另一个困惑的纽约移植者。