【獨家】K8S漏洞報告 | 近期bug fix解讀

安全漏洞CVE-2019-3874分析html

Kubernetes近期重要bug fix分析git

Kubernetes v1.13.5 bug fix數據分析github

——本週更新內容 api

安全漏洞CVE-2019-3874分析安全

3月21日,Kubernetes社區經過Google Group頻道Kubernetes developer/contributor discussion發佈了安全漏洞CVE-2019-3874以及解決方法。服務器

這個安全漏洞最先由紅帽的工程師Matteo Croce,Natale Vinto和Andrea Spagnolo發現。當Kubernetes中的Pod以Root用戶運行時,它能夠繞過cgroup內存隔離,經過SCTP網絡傳輸,建立一個潛在的DoS攻擊,此問題自己與Kubernetes無關,可是涉及到Kubernetes調用的內核模塊。問題的嚴重性被定義爲中等,社區建議將SCTP內核模塊列入黑名單來規避此問題。用戶能夠經過執行以下命令來測試是否會到此類攻擊。網絡

modprobe sctp; lsmod | grep sctp測試

用戶能夠經過執行以下命令來把SCTP列入內核模塊的黑名單。優化

echo "install sctp /bin/true" > /etc/modprobe.d/sctp.confhtm

若是SCTP模塊已經載入內核,則須要重啓機器來從內核中卸載SCTP模塊。CVE-2019-3874安全漏洞的內核補丁正在開發中,可是經過將SCTP內核模塊列入黑名單能夠保護用戶永久免受此類攻擊。

CVE-2019-3874連接:

https://access.redhat.com/security/cve/cve-2019-3874

Kubernetes近期重要bug fix分析

•#74672移除

致使內存泄漏的Reflector Metrics

https://github.com/kubernetes/kubernetes/pull/74672

該問題的背景是#73587這個Issue。用戶在升級到v1.12.5以後,發現集羣內節點上Kubelet在運行一段時間後吃掉了全部的內存,致使節點故障。使用go tool pprof發現Client Go Metrics耗費了大部分的計算時間。這些Reflector Metrics並非必不可少,該PR移除了以下的Metrics來解決內存泄漏的問題:

  • reflector_items_per_list

  • reflector_items_per_watch

  • reflector_last_resource_version

  • reflector_list_duration_seconds

  • reflector_lists_total

  • reflector_short_watches_total

  • reflector_watch_duration_seconds

  • reflector_watches_total

•#74865獲取不到

包含有InitContainers的Pod的Metrics

https://github.com/kubernetes/kubernetes/pull/74865

該問題的初始現象是Metrics Server獲取不到包含有InitContainers的Pod的Metrics。

根本緣由在於退出的容器(如InitContainers)CPU和Memory都爲Nil致使Metrics服務器將跳過Pod的處理。具體是removeTerminatedContainer的實現忽略了cri提供的runtimeapi.Container和cadvisor提供的cadvisorapiv2.ContainerInfo的不一樣。

此問題的解決方法是在原有上報Nil的狀況下,修改成上報退出容器的CPU和Memory爲0。

•#75366延遲CSI Client初始化

以解決CSI Volume Plugin在Kubelet重啓後

不可用的問題

https://github.com/kubernetes/kubernetes/pull/75366

該問題的背景是#72500這個Issue。在Kubelet重啓後,CSI Volume Plugin可能不會被從新註冊。這些Volume Plugin未註冊會相應地致使這些Plugin關聯的Volume的操做沒法進行。解決辦法是在Kubelet重啓後,單獨提取一個csiClientGetter的Get()方法用於當初始化失敗時,能經過延遲CSI Client初始化的方式來從新註冊CSI Volume Plugin。

•#75364區分Volume Path和Mount Path

https://github.com/kubernetes/kubernetes/pull/75364

一般狀況下大部分的Volume Plugin會去檢查Mount在Pod的Volume第一層級的目錄,可是對於CSI Plugin卻不是這樣,CSI Plugin可能會Mount在子目錄上。這個PR修改了Kubelet中VolumePath和MountPath引用的邏輯,實現對CSI的優化。

Kubernetes v1.13.5 bug fix數據分析

分類數量和佔比統計以下:

0419_1.jpg

嚴重程度數量統計以下(橫座標5爲最高,0爲最低):

0419_2.jpg

以下爲Kubernetes v1.13.5全部bug fix的彙總信息:

0419_3.jpg

相關服務請訪問:https://support.huaweicloud.com/cce/index.html?utm_content=cce_helpcenter_2019

相關文章
相關標籤/搜索