云技术社区

最新安全审计揭示Kubernetes集群的37个缺陷

Posted on 2020-02-02

去年,云原生计算基金会(CNCF)启动了为旗下项目进行第三方安全审计的流程。这些安全审计的目的是提高CNCF生态系统的整体安全性。
CoreDNS、Envoy和Prometheus经过审计,找到了一些安全问题和漏洞。在审计结果的帮助下,CoreDNS、Envoy和Prometheus解决了安全问题,之后还为用户提供了相关文档。
CNCF首席技术官Chris Aniszczyk说:“公开安全审计是测试开源项目质量及其漏洞管理流程的一种很好的方式,更重要的是,可以让我们知道开源项目的安全实践具有多大的弹性。“他还宣布,今年晚些时候,CNCF将启动奖金计划,鼓励研究人员找到项目中的漏洞和其他网络安全缺陷。
在初步成功后,CNCF成立了一个安全审计工作组,使用CNCF社区提供的资金为其毕业项目提供安全审计。CNCF的毕业项目包括Kubernetes、Envoy、Fluentd等。由于项目的复杂性和广泛性,工作组任命了两家名为Trail of Bits和Atredis Partners的公司进行Kubernetes安全审计。
Kubernetes安全审计的发现
前不久,Trail of Bits团队发布了一份名为《Kubernetes Security Whitepaper》的评估报告,其中包括Kubernetes攻击面和安全架构的所有关键方面。它旨在使管理员、运维人员和开发人员能够做出更好的设计和实施决策。安全白皮书列出了Kubernetes集群的潜在威胁。
Kubernetes集群漏洞
Kubernetes集群由几个基本组件组成,例如kubelet、kube-apiserver、kube-scheduler、kube-controller-manager和kube-apiserver存储后端。Kubernetes中的控制器和调度器等组件有助于网络、调度或环境管理。一个基本Kubernetes集群被配置后,Kubernetes集群由operator定义的对象管理。这些operator定义的对象称为抽象,表示Kubernetes集群的状态。为了提供简单的配置和可移植性方法,抽象还包括组件不可知。这又增加了Kubernetes集群的运维复杂性。
由于Kubernetes是一个具有许多功能的大型系统,因此对较大的Kubernetes生态系统中选定的八个组件进行了安全审计:KUBE-APIserver、ETCD、KUBE-scheduler、KUBE-controller-manager、Cloud-controller-manager、Kubelet、KUBE-proxy、Container Runtime。
Trail of Bits团队首先在Kubernetes集群中确定了三种类型的攻击者:外部攻击者(无权访问集群)、内部攻击者(已经过了信任边界)、恶意内部用户(在集群中滥用其权限)。
在Kubernetes集群的访问控制、身份验证、计时和数据验证中,安全审计共发现了37项漏洞,包括5项高度严重的、17项中度严重的、8项低度严重的和7项信息。其中包括:
——默认情况下,使用不安全的TLS
——凭证在环境变量和命令行参数中公开
——秘密名称在日志中泄露
——不能撤销证书
——默认情况下不启用seccomp
对Kubernetes集群管理员和开发人员的建议
Trail of Bits团队为集群管理员和开发人员提供了最佳实践和指南建议列表。
对集群管理员的建议
——基于属性的访问控制与基于角色的访问控制:可以在集群运行时动态配置基于角色的访问控制(RBAC)。相反,基于属性的访问控制(ABAC)本质上是静态的。这增加了确保正确部署和实施控制的难度。

——RBAC最佳实践:建议管理员测试其RBAC策略,以确保在集群上定义的策略由适当的组件配置支持,并且策略正确地限制了行为。

——节点主机配置和权限:集群节点应具有适当的身份验证和访问控制,因为具有网络访问权限的攻击者可以使用Kubernetes组件来破坏其他节点。

——默认设置和向后兼容性:Kubernetes包含许多默认设置,这会对集群的安全性产生负面影响。因此,集群运维人员和管理员必须确保在发生危害或更新时快速更改和重新部署组件和工作负载设置。
——网络:由于Kubernetes网络的复杂性,有许多建议用于维护安全网络。其中一些包括:正确的分段、定义底层集群主机的隔离规则。应尽可能隔离执行的控制平面组件主机。
——环境注意事项:应解决集群操作环境的安全性问题。如果集群托管在云供应商上,则管理员应确保实施最佳实践强化规则。
——日志记录和警报:建议集中记录工作负载和集群主机日志,以启用调试和事件重建。
对开发人员的建议
——避免硬编码路径依赖关系:建议开发人员在处理外部路径时要保守谨慎。如果找不到路径,则应警告用户,并且可以选择通过配置变量指定路径。
——文件权限检查:Kubernetes应该为用户提供执行文件权限检查的功能,并默认启用此功能。这有助于防止常见文件权限配置错误,并有助于促进更安全的实践。

——Linux上的监控过程:通过进程标识符或PID在用户空间中唯一标识Linux进程。只要进程处于活动状态,PID就会指向给定进程。如果该进程死掉,PID可以被另一个衍生进程重用。

——将流程移动到cgroup:在将给定流程移动到较少受限制的cgroup时,有必要在执行移动后验证流程是否正确。

——未来Kubernetes cgroup注意事项:Kubernetes及其使用的组件(runc、Docker)都不支持cgroup。目前,这不是一个问题,但是未来情况可能会发生变化。
——未来Kubernetes流程处理注意事项:强烈建议在Linux上跟踪和参与流程(或线程)的开发。
Kubernetes安全审计立了先例
通过进行安全审计并公开结果,Kubernetes这个广泛使用的容器编排系统,正在为为其他项目树立一个很好的先例。这表明Kubernetes有兴趣维护其生态系统的安全性。尽管审计中发现的安全漏洞数量可能会让Kubernetes开发人员感到不安,但也让他们保证Kubernetes正在尽最大努力领先潜在的攻击者一步。安全审计提供的安全白皮书和威胁模型将对Kubernetes社区成员有很大的参考价值。


咨询热线:400-100-3070

北京易捷思达科技发展有限公司:北京市海淀区西北旺东路10号院东区1号楼1层107-2号

南京子公司:江苏省南京市雨花台区软件大道168号润和创智中心B栋一楼西101

上海office:上海黄浦区西藏中路336号华旭大厦22楼2204

郑州分公司:河南省郑州市中原区西三环路大学科技园东区14号楼3层北户301

成都分公司:成都市高新区199号天府三街太平洋保险金融大厦A区8楼


邮编:100094


邮箱:

contact@easystack.cn (业务咨询)

partners@easystack.cn(合作伙伴咨询)

marketing@easystack.cn (市场合作)

training@easystack.cn (培训咨询)

hr@easystack.cn(招聘咨询)

Copyright © 2017 EasyStack Inc. All Rights Reserved. 京ICP备16000234号-1 京公网安备 11010802024994号