業界要聞
- Docker 基礎鏡像 Alpine 爆出提權漏洞( CVE-2019-5021 ):該CVE影響自 Alpine Linux 3.3 版本開始的所有 Docker 鏡像。該漏洞的機制在于 Alpine 的 root 使用者包含一個空密碼,這可能會導緻攻擊者獲得 root 權限,進而造成攻擊。報告中稱:受影響範圍是 Alpine Linux Docker 鏡像 3.3、3.4、3.5、3.6、3.7、3.8、3.9、edge 等全部版本。目前,整個容器技術生态中很多項目的基礎鏡像層都在采用Alpine。在漏洞披露後,Alpine 最新版已經修複了該問題,使用者可以使用3.9.4版本來規避風險。這裡也可以參考一些開源項目更換其他基礎鏡像,例如 kubernetes-csi 項目的這個PR 。
- Docker 項目本身爆出嚴重漏洞,攻擊者可以直接通路主控端檔案系統( CVE-2018-15664 ): 5 月 29 日,來自 SUSE 的 Linux 工程師 Aleksa Sarai 彙報了這個漏洞。他指出,在某些情況下,攻擊者可以在 docker cp 進行檔案路徑解析和執行檔案操作之間的短時間視窗将自己的符号連結(symlink)插入到路徑中,進而在容器中以 root 的身份直接拿到主控端檔案的符号連結,在 docker cp 的場景下,這等同于直接拿到了主控端任意檔案的讀寫權限。可以看到,這個漏洞是 https://en.wikipedia.org/wiki/Time-of-check_to_time-of-use TOCTOU 攻擊 的一個典型變體,利用了 Linux 操作檔案時候的競争狀态(race condition)。雖然它有可能影響所有 Docker 版本, Docker 官方出台了更新檔計劃,會在後續版本包含相應 修複更新檔 。此次漏洞的攻擊前提是攻擊者擁有docker cp指令的使用權限,阿裡雲容器服務叢集預設開啟了基于RBAC的通路控制,非法使用者是沒有cp指令在容器内的通路權限的。作為使用者,最安全的方法是禁止在多租環境下啟用 docker cp 操作,并且将 Docker Daemon 通過 apparmor 等手段進行限制。萬幸的是,這個漏洞的利用方法是非常複雜的,需要構造出上述檔案競态才能産生作用。更多詳細内容,請參見阿裡專家的 CVE-2018-15664漏洞分析報告
上遊重要進展
- Kubernetes 從 v1.15 開始将采用 go module 來進行包管理 。相比于原來的 Godeps,go module 在打包、編譯等多個環節上有着明顯的速度優勢,并且能夠在任意作業系統上友善的複現依賴包。更重要的是,go module 本身的設計使得 Kubernetes 自身被其他項目引用變得更加容易,這也是 Kubernetes 項目向架構化演進的又一個重要展現。
- Envoy正在Redis Proxy中實作request mirror 功能,用于 對請求做鏡像 。該功能可以指定隻對固定百分比的流量做鏡像,且可以将read相關的請求給過濾掉。
- Envoy正增加路由debug的功能 。通過這一功能,可掌握所發起的一個調用能否正常地路由出去,以及路由到了哪個叢集。雖然社群已經提供了route table checker這一工具,但該工具隻能用于檢查靜态路由,對于通過xDS下發的動态路由則無能為力,路由debug功能正是瞄準動态路由的。
- Knative 社群正在探索stateful-serverless, 實驗性項目 由lightbend公司開發(著名産品akka),期望在knative中建立一個有狀态的服務,主要依賴akka cluster加一個持久化的資料庫,可以将請求配置設定給固定的容器。示範視訊:示範了一個 計數器服務 ,另附 KubeCon 上的演講視訊
- Eventing Security Requirements : 針對事件在資料平面的安全性的需求,knative提出了概要設計,主要定義事件處理的 3 個安全政策邊界及對應的安全政策:
- 事件提供者到事件源(Event Source), 通過身份認證及授權
- 事件流量入口(Ingress)到 Broker,通過 Token 與 Broker進行認證。
- Trigger 到消費服務。由消費服務(函數)對持有 Token 的 Trigger 進行認證。
- Istio 将結束對 1.0 版本的支援 ,請盡快更新:根據Istio社群的支援政策,在最新LTS釋出後的三個月内,會繼續支援上一個LTS版本。Istio 1.1于3月19日釋出,是以社群對1.0的支援将于2019年6月19日結束。此後,将停止在1.0版本中支援安全問題和關鍵錯誤的修複,是以建議使用者盡快更新到最新版本的Istio。 https://istio.io/blog/2019/announcing-1.0-eol/
開源項目推薦
- Cilium :一個 Kubernetes Network Policy 的優秀實作 。Cilium 是一款适用于容器間通信的網絡政策軟體。依靠Linux的核心能力--柏克萊封包過濾器(Berkeley Packet Filter,縮寫 BPF) 在安全性和隔離性上有表現出色。目前作為Kubernetes的addons存在,展現出很強的安全可視性和強制執行的能力。
本周閱讀推薦
- Kubernetes 中 Informer 的使用簡介 : Informer 是編寫 Kubernetes 自定義控制器的過程中會經常使用到的一個概念,也是自定義控制器通過 WATCH 機制擷取 Kubernetes API 對象的主要手段。不過,你是否也經常對Informer 以及相關的 Reflector、Delta FIFO Queue、Local Store、WorkQueue 這些概念困惑不已呢?這篇部落格通過簡單易懂的語言對 Informer 的工作原理做了一個通俗易懂的解讀,推薦你學習一下。
- Service Mesh發展趨勢:雲原生中流砥柱 : 介紹ServiceMesh最新的産品動态,分析其發展趨勢和未來走向;結合螞蟻的上雲實踐,闡述在雲原生背景下Service Mesh的核心價值,和對雲原生落地的關鍵作用。
本周報由阿裡巴巴容器平台聯合螞蟻金服共同釋出
本周作者:至簡、張磊、宋淨超、林育智、大虎、王夕甯