在了解互联网的HTTP / 2协议如何工作的时候,Netflix工程师发现了Kubernetes的一系列漏洞。主要的漏洞是在用Go语言编写的net / https库中找到的。因为这些漏洞在这个特定的库中被发现,所以Kubernetes的每个版本和每个组件都会受到影响。Kubernetes产品安全委员会已经将这两个漏洞打分为7.5分(表示很严重)。这两个漏洞是:
——CVE-2019-9512 Ping Flood。这使攻击者能够向HTTP / 2 peer发送连续的ping请求,从而使peer创建内部响应队列。发生这种情况时,可以占用服务器的CPU和内存,这可能导致拒绝服务。
——CVE-2019-9514 Reset Flood。这使攻击者能够打开多个流,这些流用于发送从peer请求RS_STREAM帧的无效请求。如果peer不正确地对RST_STREAM帧进行排队,就会占用服务器的CPU和内存,这可能导致拒绝服务。
所有八个漏洞都会影响Kubernetes。虽然还在等待NIST的分析,Kubernetes已经发布了以下版本的补丁:
Kubernetes v1.15.3 - go1.12.9
Kubernetes v1.14.6 - go1.12.9
Kubernetes v1.13.10 - go1.11.13
用户必须将Kubernetes的每个实例升级到上述迭代之一,否则,它们将容易受到攻击。当然,升级Kubernetes实例的方式取决于它们的部署方式(在数据中心服务器上,或通过Google Cloud、AWS等)。请务必查阅有关部署升级过程的官方Kubernetes文档。
这些漏洞如何运作
每个Kubernetes漏洞都通过以下步骤工作:
——恶意客户端请求易受攻击的服务器执行生成响应的X。
——客户端拒绝阅读回复。
——该拒绝操纵服务器的队列管理代码。
——如果服务器处理其队列不当,客户端可以强制让它在处理请求时消耗过多的CPU周期和内存。
上述步骤会引发拒绝服务,从而导致服务器崩溃。
请务必注意,这些漏洞(如Netflix所述)不允许攻击者修改或泄露敏感信息。相反,发现的缺陷允许在易受攻击的服务器上执行拒绝服务(DoS)。
K8s的复杂性
Canonical的产品总监Stephan Fabel对Kubernetes的漏洞进行了说明:“对于最近对K8s的拒绝服务攻击,有趣的是,这并不是K8s独有的缺陷。但它确实说明了K8s是一个复杂的应用程序。这些软件包已打了补丁或正在被整个生态系统修补。”
领取专属 10元无门槛券
私享最新 技术干货